[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\nindent_style = space\n\n# Code files\n[*.{cs,csx,vb,vbx}]\nindent_size = 4\n\n# Xml project files\n[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]\nindent_size = 2\n\n# Xml config files\n[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]\nindent_size = 2\n\n# JSON\n[*.json]\nindent_size = 2\n\n# YAML\n[*.{yml,yaml}]\nindent_size = 2\n\n# Docs\n[*.{rst, md}]\nindent_size = 4\n\n# .NET code style settings:\n[*.{cs,vb}]\ndotnet_sort_system_directives_first = false\n\n# Avoid the use of redundant access modifiers\ndotnet_style_require_accessibility_modifiers = never:suggestion\n\n# Avoid \"this.\" and \"Me.\" if not necessary\ndotnet_style_qualification_for_field = false:suggestion\ndotnet_style_qualification_for_property = false:suggestion\ndotnet_style_qualification_for_method = false:suggestion\ndotnet_style_qualification_for_event = false:suggestion\n\n# Use language keywords instead of framework type names for type references\ndotnet_style_predefined_type_for_locals_parameters_members = true\ndotnet_style_predefined_type_for_member_access = false\n\n# Suggest more modern language features when available\ndotnet_style_object_initializer = true:suggestion\ndotnet_style_collection_initializer = true:suggestion\ndotnet_style_coalesce_expression = true:suggestion\ndotnet_style_null_propagation = true:suggestion\ndotnet_style_explicit_tuple_names = true:suggestion\n\n# C#-specific code style settings:\n[*.cs]\n\n# Use var sparingly\ncsharp_style_var_for_built_in_types = false:warning\ncsharp_style_var_when_type_is_apparent = false:none\ncsharp_style_var_elsewhere = false:suggestion\n\n# Prefer method-like constructs to have a block body\ncsharp_style_expression_bodied_methods = false:none\ncsharp_style_expression_bodied_constructors = false:none\ncsharp_style_expression_bodied_operators = false:none\n\n# Prefer property-like constructs to have an expression-body\ncsharp_style_expression_bodied_properties = true:none\ncsharp_style_expression_bodied_indexers = true:none\ncsharp_style_expression_bodied_accessors = true:none\n\n# Suggest more modern language features when appropriate\ncsharp_style_pattern_matching_over_is_with_cast_check = true:suggestion\ncsharp_style_pattern_matching_over_as_with_null_check = true:suggestion\ncsharp_style_inlined_variable_declaration = true:suggestion\ncsharp_style_conditional_delegate_call = true:suggestion\ncsharp_style_throw_expression = false:none\n\n# Newline settings\ncsharp_new_line_before_open_brace = all\ncsharp_new_line_before_else = true\ncsharp_new_line_before_catch = true\ncsharp_new_line_before_finally = true\ncsharp_new_line_before_members_in_object_initializers = true\ncsharp_new_line_before_members_in_anonymous_types = true\n\n# Spacing\ncsharp_space_between_method_call_parameter_list_parentheses = false\ncsharp_space_between_method_declaration_parameter_list_parentheses = false\ncsharp_space_between_parentheses = false\n"
  },
  {
    "path": ".gitignore",
    "content": "## Mac\n\n.DS_Store\n\n## GitVersion\n\nversion-info.json\n\n# VS Code\n\n.vscode/*\n\n## Visual Studio\n\n# User-specific files\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n\n# Visual Studio 2015/2017 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# Visual Studio 2017 auto generated files\nGenerated\\ Files/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUNIT\n*.VisualState.xml\nTestResult.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# Benchmark Results\nBenchmarkDotNet.Artifacts/\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n**/Properties/launchSettings.json\n\n# StyleCop\nStyleCopReport.xml\n\n# Files built by Visual Studio\n*_i.c\n*_p.c\n*_i.h\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# Visual Studio Trace Files\n*.e2e\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# JustCode is a .NET coding add-in\n.JustCode\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# AxoCover is a Code Coverage Tool\n.axoCover/*\n!.axoCover/settings.json\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# Note: Comment the next line if you want to checkin your web deploy settings,\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# The packages folder can be ignored because of Package Restore\n**/[Pp]ackages/*\n# except build/, which is used as an MSBuild target.\n!**/[Pp]ackages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/[Pp]ackages/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n*.appx\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n!test/**/*.pfx\n*.publishsettings\norleans.codegen.cs\n\n# Including strong name files can present a security risk \n# (https://github.com/github/gitignore/pull/2483#issue-259490424)\n#*.snk\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\nServiceFabricBackup/\n\n# SQL Server files\n*.mdf\n*.ldf\n*.ndf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\nnode_modules/\n\n# TypeScript v1 declaration files\ntypings/\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n*.vbw\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n\n# FAKE - F# Make\n.fake/\n\n# JetBrains Rider\n.idea/\n*.sln.iml\n\n# CodeRush\n.cr/\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools/**\n# !tools/packages.config\n\n# Tabs Studio\n*.tss\n\n# Telerik's JustMock configuration file\n*.jmconfig\n\n# BizTalk build output\n*.btp.cs\n*.btm.cs\n*.odx.cs\n*.xsd.cs\n\n# OpenCover UI analysis results\nOpenCover/\n\n# Azure Stream Analytics local run output \nASALocalRun/\n\n# MSBuild Binary and Structured Log\n*.binlog\n.mono/registry/*\n"
  },
  {
    "path": "GitVersion.yml",
    "content": "# Versioning scheme for KubeClient\n\nassembly-versioning-scheme: Major\nmode: ContinuousDelivery\nignore:\n  sha: []\n\nbranches: \n  master:\n    regex: master\n    mode: ContinuousDelivery\n    tag: ''\n    increment: Patch\n    prevent-increment-of-merged-branch-version: true\n    track-merge-target: false\n    tracks-release-branches: false\n    is-release-branch: false\n    is-mainline: true\n    source-branches: [ 'develop' ]\n\n  develop:\n    regex: develop\n    mode: ContinuousDeployment\n    tag: develop\n    increment: Patch\n    prevent-increment-of-merged-branch-version: false\n    track-merge-target: true\n    tracks-release-branches: true\n    is-release-branch: false\n    source-branches: [ 'feature' ]\n\n  feature:\n    mode: ContinuousDeployment\n    regex: feature?[/-]\n    tag: useBranchName\n    increment: Minor\n    prevent-increment-of-merged-branch-version: false\n    track-merge-target: false\n\n  pull-request:\n    regex: (pull|pull\\-request|pr)[/-]\n    mode: ContinuousDelivery\n    tag: PullRequest\n    increment: Inherit\n    prevent-increment-of-merged-branch-version: false\n    tag-number-pattern: '[/-](?<number>\\d+)[-/]'\n    track-merge-target: false\n    tracks-release-branches: false\n    is-release-branch: false\n  "
  },
  {
    "path": "ISSUE",
    "content": "** Microsoft .NET Core Framework (CoreFX)\n**\n** https://github.com/dotnet/corefx/blob/fab6ae579aff17cb9b464b2b167b7dfd8fcea175/LICENSE.TXT\n\nThe MIT License (MIT)\n\nCopyright (c) .NET Foundation and Contributors\n\nAll rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "KubeClient.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.8.34309.116\nMinimumVisualStudioVersion = 15.0.26124.0\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"samples\", \"samples\", \"{A63FB1EF-91AF-4DFA-A93E-FDD7BB34A8ED}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"ConfigFromConfigMap\", \"samples\\ConfigFromConfigMap\\ConfigFromConfigMap.csproj\", \"{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"DeploymentWithRollback\", \"samples\\DeploymentWithRollback\\DeploymentWithRollback.csproj\", \"{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"ExtensionsSample\", \"samples\\ExtensionsSample\\ExtensionsSample.csproj\", \"{FBFD0479-DF38-42EC-B85E-7E389442F6A3}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"NoobExec\", \"samples\\noob-exec\\NoobExec.csproj\", \"{EF958989-E9D5-4F79-88BE-8932D9C03C26}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"WatchEvents\", \"samples\\WatchEvents\\WatchEvents.csproj\", \"{BB71C7E4-4039-4134-8F1E-B20AD703D25D}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"src\", \"src\", \"{A3D60BFF-155C-404C-B6FC-B9B120B7D102}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient\", \"src\\KubeClient\\KubeClient.csproj\", \"{6547822A-99E8-48E0-A15A-7679BB4559DA}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.Configuration\", \"src\\KubeClient.Extensions.Configuration\\KubeClient.Extensions.Configuration.csproj\", \"{897CE942-382A-4FAF-8B71-0C667D899F66}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.CustomResources\", \"src\\KubeClient.Extensions.CustomResources\\KubeClient.Extensions.CustomResources.csproj\", \"{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.DependencyInjection\", \"src\\KubeClient.Extensions.DependencyInjection\\KubeClient.Extensions.DependencyInjection.csproj\", \"{17922755-3251-4111-89FE-64859D559409}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.KubeConfig\", \"src\\KubeClient.Extensions.KubeConfig\\KubeClient.Extensions.KubeConfig.csproj\", \"{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.WebSockets\", \"src\\KubeClient.Extensions.WebSockets\\KubeClient.Extensions.WebSockets.csproj\", \"{C98D0F17-A91C-413B-82D3-4C32D1B04425}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"test\", \"test\", \"{1286A675-A314-4874-95B6-A1C31A579F38}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.Configuration.Tests\", \"test\\KubeClient.Extensions.Configuration.Tests\\KubeClient.Extensions.Configuration.Tests.csproj\", \"{95CCAFD5-069A-4CB2-BA17-55F7F085A316}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.KubeConfig.Tests\", \"test\\KubeClient.Extensions.KubeConfig.Tests\\KubeClient.Extensions.KubeConfig.Tests.csproj\", \"{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.WebSockets.Tests\", \"test\\KubeClient.Extensions.WebSockets.Tests\\KubeClient.Extensions.WebSockets.Tests.csproj\", \"{2004D34D-3A09-405E-861C-3FF3488947F4}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.TestCommon\", \"test\\KubeClient.TestCommon\\KubeClient.TestCommon.csproj\", \"{2151F49D-004F-4967-8D4B-C8F0113683F1}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.DataProtection\", \"src\\KubeClient.Extensions.DataProtection\\KubeClient.Extensions.DataProtection.csproj\", \"{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Tests\", \"test\\KubeClient.Tests\\KubeClient.Tests.csproj\", \"{B1386E24-076A-4A7C-A085-E850B49C6BE5}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Extensions.DataProtection.Tests\", \"test\\KubeClient.Extensions.DataProtection.Tests\\KubeClient.Extensions.DataProtection.Tests.csproj\", \"{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.TestCommon.Tests\", \"test\\KubeClient.TestCommon.Tests\\KubeClient.TestCommon.Tests.csproj\", \"{14E072CF-8752-4981-A677-819A537D2E12}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"tools\", \"tools\", \"{6CED6707-0ADD-484A-BFD8-EBCDF49B2344}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"KubeClient.Tools.Generator\", \"src\\tools\\KubeClient.Tools.Generator\\KubeClient.Tools.Generator.csproj\", \"{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"KubeClient.Extensions.CustomResources.Schema\", \"src\\KubeClient.Extensions.CustomResources.Schema\\KubeClient.Extensions.CustomResources.Schema.csproj\", \"{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"KubeClient.Extensions.CustomResources.CodeGen\", \"src\\KubeClient.Extensions.CustomResources.CodeGen\\KubeClient.Extensions.CustomResources.CodeGen.csproj\", \"{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"KubeClient.Extensions.CustomResources.Tests\", \"test\\KubeClient.Extensions.CustomResources.Tests\\KubeClient.Extensions.CustomResources.Tests.csproj\", \"{6F6CD966-35A6-4A56-8D4C-D87EEE383374}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"KubeClient.Http\", \"src\\KubeClient.Http\\KubeClient.Http.csproj\", \"{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"KubeClient.Core\", \"src\\KubeClient.Core\\KubeClient.Core.csproj\", \"{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"root\", \"root\", \"{A8292A1B-F872-4A30-84D4-31C09842FBB5}\"\n\tProjectSection(SolutionItems) = preProject\n\t\t.editorconfig = .editorconfig\n\t\tazure-pipelines.yml = azure-pipelines.yml\n\t\tPackage-README.md = Package-README.md\n\t\tREADME.md = README.md\n\tEndProjectSection\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Release|x64.Build.0 = Release|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10}.Release|x86.Build.0 = Release|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Release|x64.Build.0 = Release|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437}.Release|x86.Build.0 = Release|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Release|x64.Build.0 = Release|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3}.Release|x86.Build.0 = Release|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Release|x64.Build.0 = Release|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26}.Release|x86.Build.0 = Release|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Release|x64.Build.0 = Release|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D}.Release|x86.Build.0 = Release|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Release|x64.Build.0 = Release|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA}.Release|x86.Build.0 = Release|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Release|x64.Build.0 = Release|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66}.Release|x86.Build.0 = Release|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Release|x64.Build.0 = Release|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8}.Release|x86.Build.0 = Release|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Release|x64.Build.0 = Release|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{17922755-3251-4111-89FE-64859D559409}.Release|x86.Build.0 = Release|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Release|x64.Build.0 = Release|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D}.Release|x86.Build.0 = Release|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Release|x64.Build.0 = Release|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425}.Release|x86.Build.0 = Release|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Release|x64.Build.0 = Release|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316}.Release|x86.Build.0 = Release|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Release|x64.Build.0 = Release|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3}.Release|x86.Build.0 = Release|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Release|x64.Build.0 = Release|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4}.Release|x86.Build.0 = Release|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Release|x64.Build.0 = Release|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1}.Release|x86.Build.0 = Release|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Release|x64.Build.0 = Release|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E}.Release|x86.Build.0 = Release|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Release|x64.Build.0 = Release|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5}.Release|x86.Build.0 = Release|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Release|x64.Build.0 = Release|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0}.Release|x86.Build.0 = Release|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Release|x64.Build.0 = Release|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{14E072CF-8752-4981-A677-819A537D2E12}.Release|x86.Build.0 = Release|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Release|x64.Build.0 = Release|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F}.Release|x86.Build.0 = Release|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Release|x64.Build.0 = Release|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0}.Release|x86.Build.0 = Release|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Release|x64.Build.0 = Release|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C}.Release|x86.Build.0 = Release|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Release|x64.Build.0 = Release|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374}.Release|x86.Build.0 = Release|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Release|x64.Build.0 = Release|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7}.Release|x86.Build.0 = Release|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Release|x64.Build.0 = Release|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6}.Release|x86.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(NestedProjects) = preSolution\n\t\t{99CE5F17-44BC-4B84-A80D-1C1DCE863D10} = {A63FB1EF-91AF-4DFA-A93E-FDD7BB34A8ED}\n\t\t{94CAB2AF-B5A1-4B2D-A6A0-BA55D062E437} = {A63FB1EF-91AF-4DFA-A93E-FDD7BB34A8ED}\n\t\t{FBFD0479-DF38-42EC-B85E-7E389442F6A3} = {A63FB1EF-91AF-4DFA-A93E-FDD7BB34A8ED}\n\t\t{EF958989-E9D5-4F79-88BE-8932D9C03C26} = {A63FB1EF-91AF-4DFA-A93E-FDD7BB34A8ED}\n\t\t{BB71C7E4-4039-4134-8F1E-B20AD703D25D} = {A63FB1EF-91AF-4DFA-A93E-FDD7BB34A8ED}\n\t\t{6547822A-99E8-48E0-A15A-7679BB4559DA} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{897CE942-382A-4FAF-8B71-0C667D899F66} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{BEF993D4-2631-4C44-9BAD-B8A39DE4EAF8} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{17922755-3251-4111-89FE-64859D559409} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{3C3B6126-78CB-4C6B-B472-17C7AE391E0D} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{C98D0F17-A91C-413B-82D3-4C32D1B04425} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{95CCAFD5-069A-4CB2-BA17-55F7F085A316} = {1286A675-A314-4874-95B6-A1C31A579F38}\n\t\t{ECC15A63-5C5A-4E35-A6E9-9A3854784DE3} = {1286A675-A314-4874-95B6-A1C31A579F38}\n\t\t{2004D34D-3A09-405E-861C-3FF3488947F4} = {1286A675-A314-4874-95B6-A1C31A579F38}\n\t\t{2151F49D-004F-4967-8D4B-C8F0113683F1} = {1286A675-A314-4874-95B6-A1C31A579F38}\n\t\t{4B6C7D05-0B7D-42A8-97CD-B6D2E3219F8E} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{B1386E24-076A-4A7C-A085-E850B49C6BE5} = {1286A675-A314-4874-95B6-A1C31A579F38}\n\t\t{9D22E74C-8676-4E8D-9F53-AFFB7DB4B7B0} = {1286A675-A314-4874-95B6-A1C31A579F38}\n\t\t{14E072CF-8752-4981-A677-819A537D2E12} = {1286A675-A314-4874-95B6-A1C31A579F38}\n\t\t{6CED6707-0ADD-484A-BFD8-EBCDF49B2344} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{0FDFFE17-6F60-4523-AAFE-77F54A640D0F} = {6CED6707-0ADD-484A-BFD8-EBCDF49B2344}\n\t\t{12FB8C5C-E8B9-4E12-82E6-5C40500532D0} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{E6A8F795-8E4C-44E4-9AAF-E2D14FDEF62C} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{6F6CD966-35A6-4A56-8D4C-D87EEE383374} = {1286A675-A314-4874-95B6-A1C31A579F38}\n\t\t{C0CA0EB4-4B27-4C9D-8140-4837733D9FB7} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\t\t{AD306A6F-B4A5-4AC0-B111-E3FF85DD16D6} = {A3D60BFF-155C-404C-B6FC-B9B120B7D102}\n\tEndGlobalSection\n\tGlobalSection(ExtensibilityGlobals) = postSolution\n\t\tSolutionGuid = {1573E771-2F69-48B2-A68A-6380B17F619C}\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018 Adam Friedman\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "NuGet.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageSources>\n    <add key=\"HTTPlease\" value=\"https://www.myget.org/F/httplease/api/v3/index.json\" />\n    <add key=\"NuGet.org\" value=\"https://api.nuget.org/v3/index.json\" />\n  </packageSources>\n</configuration>\n"
  },
  {
    "path": "Package-README.md",
    "content": "# KubeClient\n\n[![Build Status](https://dev.azure.com/tintoy-dev/dotnet-kube-client/_apis/build/status%2Ftintoy.dotnet-kube-client?branchName=master)](https://dev.azure.com/tintoy-dev/dotnet-kube-client/_build/latest?definitionId=4&branchName=master)\n\nKubeClient is an extensible Kubernetes API client for .NET (targets `netstandard2.1`, `net7.0` `net8.0`, `net9.0`, and `net10.0`).\n\n**NOTE**: KubeClient v3.x introduces some breaking changes, relative to v2.x (see the [migration guide](#migration-from-v2x) below).\n\nThere is also an [official](https://github.com/kubernetes-client/csharp/) .NET client for Kubernetes (both clients used to share code in a couple of places). These two clients are philosophically-different (from a design perspective) but either can be bent to fit your needs. For more information about how KubeClient differs from the official client, see the section below on [extensibility](#extensibility).\n\n## Packages\n\n* `KubeClient` (`netstandard2.1` / `net7.0` or newer)    \n  The main client and models.  \n  [![KubeClient](https://img.shields.io/nuget/v/KubeClient.svg)](https://www.nuget.org/packages/KubeClient)\n* `KubeClient.Extensions.Configuration` (`net7.0` or newer)  \n  Support for sourcing `Microsoft.Extensions.Configuration` data from Kubernetes Secrets and ConfigMaps.  \n  [![KubeClient.Extensions.KubeConfig](https://img.shields.io/nuget/v/KubeClient.Extensions.Configuration.svg)](https://www.nuget.org/packages/KubeClient.Extensions.Configuration)\n* `KubeClient.Extensions.DependencyInjection` (`net7.0` or newer)  \n  Dependency-injection support.  \n  [![KubeClient.Extensions.KubeConfig](https://img.shields.io/nuget/v/KubeClient.Extensions.DependencyInjection.svg)](https://www.nuget.org/packages/KubeClient.Extensions.DependencyInjection)  \n* `KubeClient.Extensions.KubeConfig` (`net7.0` or newer)  \n  Support for loading and parsing configuration from `~/.kube/config`.  \n  [![KubeClient.Extensions.KubeConfig](https://img.shields.io/nuget/v/KubeClient.Extensions.KubeConfig.svg)](https://www.nuget.org/packages/KubeClient.Extensions.KubeConfig)\n* `KubeClient.Extensions.WebSockets` (`net7.0` or newer)  \n  Support for multiplexed WebSocket connections used by Kubernetes APIs (such as [exec](src/KubeClient.Extensions.WebSockets/ResourceClientWebSocketExtensions.cs#L56)).   \n  This package also extends resource clients to add support for those APIs.  \n\nIf you want to use the latest (development) builds of KubeClient, add the following feed to `NuGet.config`: https://www.myget.org/F/dotnet-kube-client/api/v3/index.json\n\n## Usage\n\nThe client can be used directly or injected via `Microsoft.Extensions.DependencyInjection`.\n\n### Use the client directly\n\nThe simplest way to create a client is to call `KubeApiClient.Create()`. There are overloads if you want to provide an access token, client certificate, or customise validation of the server's certificate:\n\n```csharp\n// Assumes you're using \"kubectl proxy\", and no authentication is required.\nKubeApiClient client = KubeApiClient.Create(\"http://localhost:8001\");\n\nPodListV1 pods = await client.PodsV1().List(\n    labelSelector: \"k8s-app=my-app\"\n);\n```\n\nFor more flexible configuration, use the overload that takes `KubeClientOptions`:\n\n```csharp\nKubeApiClient client = KubeApiClient.Create(new KubeClientOptions\n{\n    ApiEndPoint = new Uri(\"http://localhost:8001\"),\n    AuthStrategy = KubeAuthStrategy.BearerToken,\n    AccessToken = \"my-access-token\",\n    AllowInsecure = true // Don't validate server certificate\n});\n```\n\nYou can enable logging of requests and responses by passing an `ILoggerFactory` to `KubeApiClient.Create()` or `KubeClientOptions.LoggerFactory`:\n\n```csharp\nILoggerFactory loggers = new LoggerFactory();\nloggers.AddConsole();\n\nKubeApiClient client = KubeApiClient.Create(\"http://localhost:8001\", loggers);\n```\n\n### Configure the client from ~/.kube/config\n\n```csharp\nusing KubeClient.Extensions.KubeConfig;\n\nKubeClientOptions clientOptions = K8sConfig.Load(kubeConfigFile).ToKubeClientOptions(\n    kubeContextName: \"my-cluster\",\n    defaultKubeNamespace: \"kube-system\"\n);\n\nKubeApiClient client = KubeApiClient.Create(clientOptions);\n```\n\n### Make the client available for dependency injection\n\nThe client can be configured for dependency injection in a variety of ways.\n\nTo use a fixed set of options for the client, use the overload of `AddKubeClient()` that takes `KubeClientoptions`:\n\n```csharp\nvoid ConfigureServices(IServiceCollection services)\n{\n    services.AddKubeClient(new KubeClientOptions\n    {\n        ApiEndPoint = new Uri(\"http://localhost:8001\"),\n        AuthStrategy = KubeAuthStrategy.BearerToken,\n        AccessToken = \"my-access-token\",\n        AllowInsecure = true // Don't validate server certificate\n    });\n}\n```\n\nTo add a named instance of the client:\n\n```csharp\nvoid ConfigureServices(IServiceCollection services)\n{\n    services.AddNamedKubeClients();\n    services.AddKubeClientOptions(\"my-cluster\", clientOptions =>\n    {\n        clientOptions.ApiEndPoint = new Uri(\"http://localhost:8001\");\n        clientOptions.AuthStrategy = KubeAuthStrategy.BearerToken;\n        clientOptions.AccessToken = \"my-access-token\";\n        clientOptions.AllowInsecure = true; // Don't validate server certificate\n    });\n    \n    // OR:\n\n    services.AddKubeClient(\"my-cluster\", clientOptions =>\n    {\n        clientOptions.ApiEndPoint = new Uri(\"http://localhost:8001\");\n        clientOptions.AuthStrategy = KubeAuthStrategy.BearerToken;\n        clientOptions.AccessToken = \"my-access-token\";\n        clientOptions.AllowInsecure = true; // Don't validate server certificate\n    });\n}\n\n// To use named instances of KubeApiClient, inject INamedKubeClients.\n\nclass MyClass\n{\n    public MyClass(INamedKubeClients namedKubeClients)\n    {\n        KubeClient1 = namedKubeClients.Get(\"my-cluster\");\n        KubeClient2 = namedKubeClients.Get(\"another-cluster\");\n    }\n\n    IKubeApiClient KubeClient1 { get; }\n    IKubeApiClient KubeClient2 { get; }\n}\n```\n\n## Design philosophy\n\nUse of code generation is limited; generated clients tend to wind up being non-idiomatic and, for a Swagger spec as large as that of Kubernetes, wind up placing too many methods directly on the client class.\n\nKubeClient's approach is to generate model classes (see `src/swagger` for the Python script that does this) and hand-code the actual operation methods to provide an improved consumer experience (i.e. useful and consistent exception types).\n\n### KubeResultV1\n\nSome operations in the Kubernetes API can return a different response depending on the arguments passed in. For example, a request to delete a `v1/Pod` returns the existing `v1/Pod` (as a `PodV1` model) if the caller specifies `DeletePropagationPolicy.Foreground` but returns a `v1/Status` (as a `StatusV1` model) if any other type of `DeletePropagationPolicy` is specified.\n\nTo handle this type of polymorphic response KubeClient uses the `KubeResultV1` model (and its derived implementations, `KubeResourceResultV1<TResource>` and `KubeResourceListResultV1<TResource>`).\n\n`KubeResourceResultV1<TResource>` can be implicitly cast to a `TResource` or a `StatusV1`, so consuming code can continue to use the client as if it expects an operation to return only a resource or expects it to return only a `StatusV1`:\n\n```csharp\nPodV1 existingPod = await client.PodsV1().Delete(\"mypod\", propagationPolicy: DeletePropagationPolicy.Foreground);\n// OR:\nStatusV1 deleteStatus = await client.PodsV1().Delete(\"mypod\", propagationPolicy: DeletePropagationPolicy.Background);\n```\n\nIf an attempt is made to cast a `KubeResourceResultV1<TResource>` that contains a non-success `StatusV1` to a `TResource`, a `KubeApiException` is thrown, based on the information in the `StatusV1`:\n\n```csharp\nPodV1 existingPod;\n\ntry\n{\n    existingPod = await client.PodsV1().Delete(\"mypod\", propagationPolicy: DeletePropagationPolicy.Foreground);\n}\ncatch (KubeApiException kubeApiError)\n{\n    Log.Error(kubeApiError, \"Failed to delete Pod: {ErrorMessage}\", kubeApiError.Status.Message);\n}\n```\n\nFor more information about the behaviour of `KubeResultV1` and its derived implementations, see [KubeResultTests.cs](test/KubeClient.Tests/KubeResultTests.cs).\n\n## Extensibility\n\nKubeClient is designed to be easily extensible. The `KubeApiClient` provides the top-level entry point for the Kubernetes API and extension methods are used to expose more specific resource clients.\n\nSimplified version of [PodClientV1.cs](src/KubeClient/ResourceClients/PodClientV1.cs):\n\n```csharp\npublic class PodClientV1 : KubeResourceClient\n{\n    public PodClientV1(KubeApiClient client) : base(client)\n    {\n    }\n\n    public async Task<List<PodV1>> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n    {\n        PodListV1 matchingPods =\n            await Http.GetAsync(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            )\n            .ReadContentAsObjectV1Async<PodListV1>();\n\n        return matchingPods.Items;\n    }\n\n    public static class Requests\n    {\n        public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/pods?labelSelector={LabelSelector?}&watch={Watch?}\");\n    }\n}\n```\n\nSimplified version of [ClientFactoryExtensions.cs](src/KubeClient/ClientFactoryExtensions.cs#L97):\n\n```csharp\npublic static PodClientV1 PodsV1(this KubeApiClient kubeClient)\n{\n    return kubeClient.ResourceClient(\n        client => new PodClientV1(client)\n    );\n}\n```\n\nThis enables the following usage of `KubeApiClient`:\n\n```csharp\nKubeApiClient client;\nPodListV1 pods = await client.PodsV1().List(kubeNamespace: \"kube-system\");\n```\n\nThrough the use of extension methods, resource clients (or additional operations) can be declared in any assembly and used as if they are part of the `KubeApiClient`. For example, the `KubeClient.Extensions.WebSockets` package adds an `ExecAndConnect` method to `PodClientV1`.\n\nSimplified version of [ResourceClientWebSocketExtensions.cs](src/KubeClient.Extensions.WebSockets/ResourceClientWebSocketExtensions.cs#L56):\n\n```csharp\npublic static async Task<K8sMultiplexer> ExecAndConnect(this IPodClientV1 podClient, string podName, string command, bool stdin = false, bool stdout = true, bool stderr = false, bool tty = false, string container = null, string kubeNamespace = null, CancellationToken cancellation = default)\n{\n    byte[] outputStreamIndexes = stdin ? new byte[1] { 0 } : new byte[0];\n    byte[] inputStreamIndexes;\n    if (stdout && stderr)\n        inputStreamIndexes = new byte[2] { 1, 2 };\n    else if (stdout)\n        inputStreamIndexes = new byte[1] { 1 };\n    else if (stderr)\n        inputStreamIndexes = new byte[1] { 2 };\n    else if (!stdin)\n        throw new InvalidOperationException(\"Must specify at least one of STDIN, STDOUT, or STDERR.\");\n    else\n        inputStreamIndexes = new byte[0];\n    \n    return await podClient.KubeClient\n        .ConnectWebSocket(\"api/v1/namespaces/{KubeNamespace}/pods/{PodName}/exec?stdin={StdIn?}&stdout={StdOut?}&stderr={StdErr?}&tty={TTY?}&command={Command}&container={Container?}\", new\n        {\n            PodName = podName,\n            Command = command,\n            StdIn = stdin,\n            StdOut = stdout,\n            StdErr = stderr,\n            TTY = tty,\n            Container = container,\n            KubeNamespace = kubeNamespace ?? podClient.KubeClient.DefaultNamespace\n        }, cancellation)\n        .Multiplexed(inputStreamIndexes, outputStreamIndexes,\n            loggerFactory: podClient.KubeClient.LoggerFactory()\n        );\n}\n```\n\nExample usage of `ExecAndConnect`:\n\n```csharp\nKubeApiClient client;\nK8sMultiplexer connection = await client.PodsV1().ExecAndConnect(\n    podName: \"my-pod\",\n    command: \"/bin/bash\",\n    stdin: true,\n    stdout: true,\n    tty: true\n);\nusing (connection)\nusing (StreamWriter stdin = new StreamWriter(connection.GetOutputStream(0), Encoding.UTF8))\nusing (StreamReader stdout = new StreamReader(connection.GetInputStream(1), Encoding.UTF8))\n{\n    await stdin.WriteLineAsync(\"ls -l /\");\n    await stdin.WriteLineAsync(\"exit\");\n\n    // Read from STDOUT until process terminates.\n    string line;\n    while ((line = await stdout.ReadLineAsync()) != null)\n    {\n        Console.WriteLine(line);\n    }\n}\n```\n\nFor information about `HttpRequest`, `UriTemplate`, and other features used to implement the client take a look at [`KubeClient.Http`](./src/KubeClient.Http) and [`KubeClient.Http.Tests`](./test/KubeClient.Http.Tests).\n\n### Working out what APIs to call\n\nIf you want to replicate the behaviour of a `kubectl` command you can pass the flag `--v=10` to `kubectl` and it will dump out (for each request that it makes) the request URI, request body, and response body.\n\n### Building\n\nYou will need to use v9.0.100 (or newer) of the .NET SDK to build KubeClient.\n\n## Migration from v2.x\n\nNote that KubeClient v3 introduces breaking changes, relative to v2.x:\n\n* KubeClient no longer supports `netstandard2.0`; it requires `net7.x` (or `netstandard2.1`).\n* `K8sWebSocket` (a custom implementation that was needed until .NET Core fully supported WebSockets) has been superseded by the (BCL-provided) [ClientWebSocket](https://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket?view=net-8.0).\n* [HTTPlease](https://tintoy.github.io/HTTPlease/), the underlying HTTP client library used by KubeClient, has been rolled into KubeClient. It is largely source-code-compatible, except that namespaces have changed from `HTTPlease.*` to `KubeClient.Http.*`.\n* Apart from these changes, existing consumer code that compiles against KubeClient v2.x assemblies should largely continue to compile, without modification, against KubeClient v3 assemblies.\n\n## Questions / feedback\n\nFeel free to [get in touch](https://github.com/tintoy/dotnet-kube-client/issues/new) if you have questions, feedback, or would like to contribute.\n"
  },
  {
    "path": "README.md",
    "content": "# KubeClient\n\n[![Build Status](https://dev.azure.com/tintoy-dev/dotnet-kube-client/_apis/build/status%2Ftintoy.dotnet-kube-client?branchName=master)](https://dev.azure.com/tintoy-dev/dotnet-kube-client/_build/latest?definitionId=4&branchName=master)\n\nKubeClient is an extensible Kubernetes API client for .NET (targets `netstandard2.1`, `net7.0` `net8.0`, `net9.0`, and `net10.0`).\n\n> [!NOTE]\n> KubeClient v3.x introduces some breaking changes, relative to v2.x (see the [migration guide](#migration-from-v2x) below).\n\nThere is also an [official](https://github.com/kubernetes-client/csharp/) .NET client for Kubernetes (both clients used to share code in a couple of places). These two clients are philosophically-different (from a design perspective) but either can be bent to fit your needs. For more information about how KubeClient differs from the official client, see the section below on [extensibility](#extensibility).\n\n## Packages\n\n* `KubeClient` (`netstandard2.1` / `net7.0` or newer)    \n  The main client and models.  \n  [![KubeClient](https://img.shields.io/nuget/v/KubeClient.svg)](https://www.nuget.org/packages/KubeClient)\n* `KubeClient.Extensions.Configuration` (`net7.0` or newer)  \n  Support for sourcing `Microsoft.Extensions.Configuration` data from Kubernetes Secrets and ConfigMaps.  \n  [![KubeClient.Extensions.KubeConfig](https://img.shields.io/nuget/v/KubeClient.Extensions.Configuration.svg)](https://www.nuget.org/packages/KubeClient.Extensions.Configuration)\n* `KubeClient.Extensions.DependencyInjection` (`net7.0` or newer)  \n  Dependency-injection support.  \n  [![KubeClient.Extensions.KubeConfig](https://img.shields.io/nuget/v/KubeClient.Extensions.DependencyInjection.svg)](https://www.nuget.org/packages/KubeClient.Extensions.DependencyInjection)  \n* `KubeClient.Extensions.KubeConfig` (`net7.0` or newer)  \n  Support for loading and parsing configuration from `~/.kube/config`.  \n  [![KubeClient.Extensions.KubeConfig](https://img.shields.io/nuget/v/KubeClient.Extensions.KubeConfig.svg)](https://www.nuget.org/packages/KubeClient.Extensions.KubeConfig)\n* `KubeClient.Extensions.WebSockets` (`net7.0` or newer)  \n  Support for multiplexed WebSocket connections used by Kubernetes APIs (such as [exec](src/KubeClient.Extensions.WebSockets/ResourceClientWebSocketExtensions.cs#L56)).   \n  This package also extends resource clients to add support for those APIs.  \n\nIf you want to use the latest (development) builds of KubeClient, add the following feed to `NuGet.config`: https://www.myget.org/F/dotnet-kube-client/api/v3/index.json\n\n## Usage\n\nThe client can be used directly or injected via `Microsoft.Extensions.DependencyInjection`.\n\n### Use the client directly\n\nThe simplest way to create a client is to call `KubeApiClient.Create()`. There are overloads if you want to provide an access token, client certificate, or customise validation of the server's certificate:\n\n```csharp\n// Assumes you're using \"kubectl proxy\", and no authentication is required.\nKubeApiClient client = KubeApiClient.Create(\"http://localhost:8001\");\n\nPodListV1 pods = await client.PodsV1().List(\n    labelSelector: \"k8s-app=my-app\"\n);\n```\n\nFor more flexible configuration, use the overload that takes `KubeClientOptions`:\n\n```csharp\nKubeApiClient client = KubeApiClient.Create(new KubeClientOptions\n{\n    ApiEndPoint = new Uri(\"http://localhost:8001\"),\n    AuthStrategy = KubeAuthStrategy.BearerToken,\n    AccessToken = \"my-access-token\",\n    AllowInsecure = true // Don't validate server certificate\n});\n```\n\nYou can enable logging of requests and responses by passing an `ILoggerFactory` to `KubeApiClient.Create()` or `KubeClientOptions.LoggerFactory`:\n\n```csharp\nILoggerFactory loggers = new LoggerFactory();\nloggers.AddConsole();\n\nKubeApiClient client = KubeApiClient.Create(\"http://localhost:8001\", loggers);\n```\n\n### Configure the client from ~/.kube/config\n\n```csharp\nusing KubeClient.Extensions.KubeConfig;\n\nKubeClientOptions clientOptions = K8sConfig.Load(kubeConfigFile).ToKubeClientOptions(\n    kubeContextName: \"my-cluster\",\n    defaultKubeNamespace: \"kube-system\"\n);\n\nKubeApiClient client = KubeApiClient.Create(clientOptions);\n```\n\n### Make the client available for dependency injection\n\nThe client can be configured for dependency injection in a variety of ways.\n\nTo use a fixed set of options for the client, use the overload of `AddKubeClient()` that takes `KubeClientoptions`:\n\n```csharp\nvoid ConfigureServices(IServiceCollection services)\n{\n    services.AddKubeClient(new KubeClientOptions\n    {\n        ApiEndPoint = new Uri(\"http://localhost:8001\"),\n        AuthStrategy = KubeAuthStrategy.BearerToken,\n        AccessToken = \"my-access-token\",\n        AllowInsecure = true // Don't validate server certificate\n    });\n}\n```\n\nTo add a named instance of the client:\n\n```csharp\nvoid ConfigureServices(IServiceCollection services)\n{\n    services.AddNamedKubeClients();\n    services.AddKubeClientOptions(\"my-cluster\", clientOptions =>\n    {\n        clientOptions.ApiEndPoint = new Uri(\"http://localhost:8001\");\n        clientOptions.AuthStrategy = KubeAuthStrategy.BearerToken;\n        clientOptions.AccessToken = \"my-access-token\";\n        clientOptions.AllowInsecure = true; // Don't validate server certificate\n    });\n    \n    // OR:\n\n    services.AddKubeClient(\"my-cluster\", clientOptions =>\n    {\n        clientOptions.ApiEndPoint = new Uri(\"http://localhost:8001\");\n        clientOptions.AuthStrategy = KubeAuthStrategy.BearerToken;\n        clientOptions.AccessToken = \"my-access-token\";\n        clientOptions.AllowInsecure = true; // Don't validate server certificate\n    });\n}\n\n// To use named instances of KubeApiClient, inject INamedKubeClients.\n\nclass MyClass\n{\n    public MyClass(INamedKubeClients namedKubeClients)\n    {\n        KubeClient1 = namedKubeClients.Get(\"my-cluster\");\n        KubeClient2 = namedKubeClients.Get(\"another-cluster\");\n    }\n\n    IKubeApiClient KubeClient1 { get; }\n    IKubeApiClient KubeClient2 { get; }\n}\n```\n\n## Design philosophy\n\nUse of code generation is limited; generated clients tend to wind up being non-idiomatic and, for a Swagger spec as large as that of Kubernetes, wind up placing too many methods directly on the client class.\n\nKubeClient's approach is to generate model classes (see `src/swagger` for the Python script that does this) and hand-code the actual operation methods to provide an improved consumer experience (i.e. useful and consistent exception types).\n\n### KubeResultV1\n\nSome operations in the Kubernetes API can return a different response depending on the arguments passed in. For example, a request to delete a `v1/Pod` returns the existing `v1/Pod` (as a `PodV1` model) if the caller specifies `DeletePropagationPolicy.Foreground` but returns a `v1/Status` (as a `StatusV1` model) if any other type of `DeletePropagationPolicy` is specified.\n\nTo handle this type of polymorphic response KubeClient uses the `KubeResultV1` model (and its derived implementations, `KubeResourceResultV1<TResource>` and `KubeResourceListResultV1<TResource>`).\n\n`KubeResourceResultV1<TResource>` can be implicitly cast to a `TResource` or a `StatusV1`, so consuming code can continue to use the client as if it expects an operation to return only a resource or expects it to return only a `StatusV1`:\n\n```csharp\nPodV1 existingPod = await client.PodsV1().Delete(\"mypod\", propagationPolicy: DeletePropagationPolicy.Foreground);\n// OR:\nStatusV1 deleteStatus = await client.PodsV1().Delete(\"mypod\", propagationPolicy: DeletePropagationPolicy.Background);\n```\n\nIf an attempt is made to cast a `KubeResourceResultV1<TResource>` that contains a non-success `StatusV1` to a `TResource`, a `KubeApiException` is thrown, based on the information in the `StatusV1`:\n\n```csharp\nPodV1 existingPod;\n\ntry\n{\n    existingPod = await client.PodsV1().Delete(\"mypod\", propagationPolicy: DeletePropagationPolicy.Foreground);\n}\ncatch (KubeApiException kubeApiError)\n{\n    Log.Error(kubeApiError, \"Failed to delete Pod: {ErrorMessage}\", kubeApiError.Status.Message);\n}\n```\n\nFor more information about the behaviour of `KubeResultV1` and its derived implementations, see [KubeResultTests.cs](test/KubeClient.Tests/KubeResultTests.cs).\n\n## Extensibility\n\nKubeClient is designed to be easily extensible. The `KubeApiClient` provides the top-level entry point for the Kubernetes API and extension methods are used to expose more specific resource clients.\n\nSimplified version of [PodClientV1.cs](src/KubeClient/ResourceClients/PodClientV1.cs):\n\n```csharp\npublic class PodClientV1 : KubeResourceClient\n{\n    public PodClientV1(KubeApiClient client) : base(client)\n    {\n    }\n\n    public async Task<List<PodV1>> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n    {\n        PodListV1 matchingPods =\n            await Http.GetAsync(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            )\n            .ReadContentAsObjectV1Async<PodListV1>();\n\n        return matchingPods.Items;\n    }\n\n    public static class Requests\n    {\n        public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/pods?labelSelector={LabelSelector?}&watch={Watch?}\");\n    }\n}\n```\n\nSimplified version of [ClientFactoryExtensions.cs](src/KubeClient/ClientFactoryExtensions.cs#L97):\n\n```csharp\npublic static PodClientV1 PodsV1(this KubeApiClient kubeClient)\n{\n    return kubeClient.ResourceClient(\n        client => new PodClientV1(client)\n    );\n}\n```\n\nThis enables the following usage of `KubeApiClient`:\n\n```csharp\nKubeApiClient client;\nPodListV1 pods = await client.PodsV1().List(kubeNamespace: \"kube-system\");\n```\n\nThrough the use of extension methods, resource clients (or additional operations) can be declared in any assembly and used as if they are part of the `KubeApiClient`. For example, the `KubeClient.Extensions.WebSockets` package adds an `ExecAndConnect` method to `PodClientV1`.\n\nSimplified version of [ResourceClientWebSocketExtensions.cs](src/KubeClient.Extensions.WebSockets/ResourceClientWebSocketExtensions.cs#L56):\n\n```csharp\npublic static async Task<K8sMultiplexer> ExecAndConnect(this IPodClientV1 podClient, string podName, string command, bool stdin = false, bool stdout = true, bool stderr = false, bool tty = false, string container = null, string kubeNamespace = null, CancellationToken cancellation = default)\n{\n    byte[] outputStreamIndexes = stdin ? new byte[1] { 0 } : new byte[0];\n    byte[] inputStreamIndexes;\n    if (stdout && stderr)\n        inputStreamIndexes = new byte[2] { 1, 2 };\n    else if (stdout)\n        inputStreamIndexes = new byte[1] { 1 };\n    else if (stderr)\n        inputStreamIndexes = new byte[1] { 2 };\n    else if (!stdin)\n        throw new InvalidOperationException(\"Must specify at least one of STDIN, STDOUT, or STDERR.\");\n    else\n        inputStreamIndexes = new byte[0];\n    \n    return await podClient.KubeClient\n        .ConnectWebSocket(\"api/v1/namespaces/{KubeNamespace}/pods/{PodName}/exec?stdin={StdIn?}&stdout={StdOut?}&stderr={StdErr?}&tty={TTY?}&command={Command}&container={Container?}\", new\n        {\n            PodName = podName,\n            Command = command,\n            StdIn = stdin,\n            StdOut = stdout,\n            StdErr = stderr,\n            TTY = tty,\n            Container = container,\n            KubeNamespace = kubeNamespace ?? podClient.KubeClient.DefaultNamespace\n        }, cancellation)\n        .Multiplexed(inputStreamIndexes, outputStreamIndexes,\n            loggerFactory: podClient.KubeClient.LoggerFactory()\n        );\n}\n```\n\nExample usage of `ExecAndConnect`:\n\n```csharp\nKubeApiClient client;\nK8sMultiplexer connection = await client.PodsV1().ExecAndConnect(\n    podName: \"my-pod\",\n    command: \"/bin/bash\",\n    stdin: true,\n    stdout: true,\n    tty: true\n);\nusing (connection)\nusing (StreamWriter stdin = new StreamWriter(connection.GetOutputStream(0), Encoding.UTF8))\nusing (StreamReader stdout = new StreamReader(connection.GetInputStream(1), Encoding.UTF8))\n{\n    await stdin.WriteLineAsync(\"ls -l /\");\n    await stdin.WriteLineAsync(\"exit\");\n\n    // Read from STDOUT until process terminates.\n    string line;\n    while ((line = await stdout.ReadLineAsync()) != null)\n    {\n        Console.WriteLine(line);\n    }\n}\n```\n\nFor information about `HttpRequest`, `UriTemplate`, and other features used to implement the client take a look at [`KubeClient.Http`](./src/KubeClient.Http) and [`KubeClient.Http.Tests`](./test/KubeClient.Http.Tests).\n\n### Working out what APIs to call\n\nIf you want to replicate the behaviour of a `kubectl` command you can pass the flag `--v=10` to `kubectl` and it will dump out (for each request that it makes) the request URI, request body, and response body.\n\n### Building\n\nYou will need to use `v9.0.100` (or newer) of the .NET SDK to build KubeClient.\n\n## Migration from v2.x\n\nNote that KubeClient v3 introduces breaking changes, relative to v2.x:\n\n* KubeClient no longer supports `netstandard2.0`; it requires `net7.x` (or `netstandard2.1`).\n* `K8sWebSocket` (a custom implementation that was needed until .NET Core fully supported WebSockets) has been superseded by the (BCL-provided) [ClientWebSocket](https://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket?view=net-8.0).\n* [HTTPlease](https://tintoy.github.io/HTTPlease/), the underlying HTTP client library used by KubeClient, has been rolled into KubeClient. It is largely source-code-compatible, except that namespaces have changed from `HTTPlease.*` to `KubeClient.Http.*`.\n* Apart from these changes, existing consumer code that compiles against KubeClient v2.x assemblies should largely continue to compile, without modification, against KubeClient v3 assemblies.\n\n## Questions / feedback\n\nFeel free to [get in touch](https://github.com/tintoy/dotnet-kube-client/issues/new) if you have questions, feedback, or would like to contribute.\n"
  },
  {
    "path": "azure-pipelines.yml",
    "content": "trigger:\n  branches:\n    include:\n      - master\n      - develop\n      - feature/*\n      - release/*\n\n  tags:\n    include:\n      - 'v*'\n\npr:\n  branches:\n    include:\n      - master\n\npool:\n  vmImage: ubuntu-22.04\n\nvariables:\n  buildConfiguration: 'Release'\n\nsteps:\n# Needed for tests, since we're multi-targeting:\n- task: UseDotNet@2\n  displayName: Install .NET 7.0.x\n\n  inputs:\n    packageType: sdk # we shouldn't need the SDK (only the runtime), but this task is braindead and so tests will only find runtimes from SDK packages\n    version: 7.0.x\n\n- task: UseDotNet@2\n  displayName: Install .NET 8.0.x runtime\n\n  inputs:\n    packageType: sdk # we shouldn't need the SDK (only the runtime), but this task is braindead and so tests will only find runtimes from SDK packages\n    version: 8.0.x\n    \n- task: UseDotNet@2\n  displayName: Install .NET 9.0.x runtime\n\n  inputs:\n    packageType: sdk # we shouldn't need the SDK (only the runtime), but this task is braindead and so tests will only find runtimes from SDK packages\n    version: 9.0.x\n\n- task: UseDotNet@2\n  displayName: Install .NET 10.0.x runtime\n\n  inputs:\n    packageType: sdk # we shouldn't need the SDK (only the runtime), but this task is braindead and so tests will only find runtimes from SDK packages\n    version: 10.0.x\n\n- task: UseDotNet@2\n  displayName: Configure .NET SDK from global.json\n\n  inputs:\n    packageType: sdk\n    useGlobalJson: true\n\n- task: gitversion/setup@0\n  displayName: 'Install GitVersion'\n\n  inputs:\n   versionSpec: 5.x\n\n- task: GitVersion/execute@0\n  displayName: 'Determine build version'\n  name: GitVersion\n\n- script: |\n    BUILD_SEMVER=\"$(GitVersion.FullSemVer)\"\n    \n    echo \"##vso[task.setvariable variable=BUILD_SEMVER]$BUILD_SEMVER\"\n    echo \"BUILD_SEMVER='$BUILD_SEMVER'\"\n  displayName: Set environment variables from build version\n\n- task: DotNetCoreCLI@2\n  displayName: 'Restore packages'\n  \n  inputs:\n    command: 'restore'\n    projects: '$(Build.SourcesDirectory)/KubeClient.sln'\n    restoreArguments: '/p:VersionPrefix=\"$(GitVersion.MajorMinorPatch)\" /p:VersionSuffix=\"$(GitVersion.PreReleaseTag)\"'\n\n- task: DotNetCoreCLI@2\n  displayName: 'Build solution'\n  \n  inputs:\n    command: 'build'\n    projects: '$(Build.SourcesDirectory)/KubeClient.sln'\n    arguments: '--configuration \"$(buildConfiguration)\" /p:VersionPrefix=\"$(GitVersion.MajorMinorPatch)\" /p:VersionSuffix=\"$(GitVersion.PreReleaseTag)\" --no-restore'\n\n- task: DotNetCoreCLI@2\n  displayName: 'Run tests'\n  \n  inputs:\n    command: 'test'\n    projects: '$(Build.SourcesDirectory)/test/KubeClient.*.Tests/*.csproj'\n    arguments: '--configuration \"$(buildConfiguration)\" /p:VersionPrefix=\"$(GitVersion.MajorMinorPatch)\" /p:VersionSuffix=\"$(GitVersion.PreReleaseTag)\" --no-build'\n\n- task: DotNetCoreCLI@2\n  displayName: 'Create packages'\n  \n  inputs:\n    command: 'pack'\n    projects: '$(Build.SourcesDirectory)/src/**/*.csproj'\n\n    arguments: '--configuration \"$(buildConfiguration)\"'\n    outputDir: '$(Build.ArtifactStagingDirectory)/packages'\n    versioningScheme: byEnvVar\n    versionEnvVar: BUILD_SEMVER\n\n- task: PublishBuildArtifacts@1\n  displayName: 'Publish packages as artifact'\n  \n  inputs:\n    PathtoPublish: '$(Build.ArtifactStagingDirectory)/packages'\n    ArtifactName: 'packages'\n    publishLocation: 'Container'\n\n- task: NuGetCommand@2\n  displayName: 'Publish packages to MyGet package feed'\n  inputs:\n    command: 'push'\n    packagesToPush: '$(Build.ArtifactStagingDirectory)/packages/*.nupkg;!$(Build.ArtifactStagingDirectory)/packages/*.symbols.nupkg'\n    nuGetFeedType: 'external'\n    publishFeedCredentials: 'myget-tintoy'\n\n- task: NuGetCommand@2\n  displayName: 'Publish packages to NuGet package feed'\n  \n  condition: contains(variables['Build.SourceBranch'], 'refs/tags/v')\n  \n  inputs:\n    command: 'push'\n    packagesToPush: '$(Build.ArtifactStagingDirectory)/packages/*.nupkg;!$(Build.ArtifactStagingDirectory)/packages/*.symbols.nupkg'\n    nuGetFeedType: 'external'\n    publishFeedCredentials: 'nuget-tintoy'\n\n- task: GitHubRelease@1\n  displayName: 'Create GitHub release from tag'\n\n  condition: contains(variables['Build.SourceBranch'], 'refs/tags/v')\n  \n  inputs:\n    gitHubConnection: 'tintoy'\n    repositoryName: '$(Build.Repository.Name)'\n    action: 'create'\n    target: '$(Build.SourceVersion)'\n    tagSource: 'gitTag'\n    tagPattern: '^v\\d+\\.\\d+.\\d+(-[A-Za-z0-9%\\.]+)?$'\n    addChangeLog: true\n    assets: '$(Build.ArtifactStagingDirectory)/packages/*.nupkg'\n    assetUploadMode: replace\n"
  },
  {
    "path": "global.json",
    "content": "{\n  \"sdk\": {\n    \"version\": \"10.0.100\",\n    \"rollForward\":  \"latestFeature\"\n  }\n}"
  },
  {
    "path": "samples/ConfigFromConfigMap/ConfigFromConfigMap.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</TargetFramework>\n    <IsPackable>false</IsPackable>\n\n    <LangVersion>latest</LangVersion>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.Configuration/KubeClient.Extensions.Configuration.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"CommandLineParser\" Version=\"2.9.1\" />\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Console\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"10.0.0\" />\n  </ItemGroup>\n</Project>\n"
  },
  {
    "path": "samples/ConfigFromConfigMap/Program.cs",
    "content": "﻿using Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.Primitives;\nusing System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Samples.ConfigFromConfigMap\n{\n    using Extensions.Configuration;\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     The ConfigFromConfigMap program.\n    /// </summary>\n    static class Program\n    {\n        /// <summary>\n        ///     The main program's logger.\n        /// </summary>\n        static ILogger Log { get; set; }\n\n        /// <summary>\n        ///     The main program entry-point.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The program's command-line arguments.\n        /// </param>\n        /// <returns>\n        ///     The program exit-code.\n        /// </returns>\n        static async Task<int> Main(string[] commandLineArguments)\n        {\n            ProgramOptions options = ProgramOptions.Parse(commandLineArguments);\n            if (options == null)\n                return ExitCodes.InvalidArguments;\n\n            using ServiceProvider loggingServiceProvider = ConfigureLogging(options);\n            ILoggerFactory loggerFactory = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n            try\n            {\n                const string configMap1Name = \"config-from-configmap-1\";\n                const string configMap2Name = \"config-from-configmap-2\";\n                const string configMapNamespace = \"default\";\n\n                KubeClientOptions clientOptions = K8sConfig.Load().ToKubeClientOptions(defaultKubeNamespace: configMapNamespace, loggerFactory: loggerFactory);\n\n                if (options.Verbose)\n                    clientOptions.LogPayloads = true;\n\n                KubeApiClient client = KubeApiClient.Create(clientOptions);\n\n                Log.LogInformation(\"Checking for existing ConfigMaps...\");\n\n                ConfigMapV1 configMap1 = await client.ConfigMapsV1().Get(configMap1Name, configMapNamespace);\n                if (configMap1 != null)\n                {\n                    Log.LogInformation(\"Deleting existing ConfigMap {ConfigMapName}...\", configMap1Name);\n                    await client.ConfigMapsV1().Delete(configMap1Name);\n                    Log.LogInformation(\"Deleted existing ConfigMap {ConfigMapName}.\", configMap1Name);\n                }\n\n                ConfigMapV1 configMap2 = await client.ConfigMapsV1().Get(configMap2Name, configMapNamespace);\n                if ( configMap2 != null )\n                {\n                    Log.LogInformation(\"Deleting existing ConfigMap {ConfigMapName}...\", configMap2Name);\n                    await client.ConfigMapsV1().Delete(configMap2Name);\n                    Log.LogInformation(\"Deleted existing ConfigMap {ConfigMapName}.\", configMap2Name);\n                }\n\n                Log.LogInformation(\"Creating ConfigMaps...\");\n\n                Log.LogInformation(\"Creating ConfigMap {ConfigMapName}...\", configMap1Name);\n                configMap1 = await client.ConfigMapsV1().Create(new ConfigMapV1\n                {\n                    Metadata = new ObjectMetaV1\n                    {\n                        Name = configMap1Name,\n                        Namespace = configMapNamespace\n                    },\n                    Data =\n                    {\n                        [\"Key1\"] = \"OneA\",\n                        [\"Key2\"] = \"TwoA\",\n                        [\"Key3\"] = \"ThreeA\"\n                    }\n                });\n\n                Log.LogInformation(\"Creating ConfigMap {ConfigMapName}...\", configMap2Name);\n                configMap2 = await client.ConfigMapsV1().Create(new ConfigMapV1\n                {\n                    Metadata = new ObjectMetaV1\n                    {\n                        Name = configMap2Name,\n                        Namespace = configMapNamespace\n                    },\n                    Data =\n                    {\n                        [\"Key1\"] = \"OneB\",\n                        [\"Key2\"] = \"TwoB\",\n                        [\"Key4\"] = \"FourB\"\n                    }\n                });\n\n                Log.LogInformation(\"ConfigMaps created.\");\n\n                Log.LogInformation(\"Building configuration...\");\n                IConfiguration configuration = new ConfigurationBuilder()\n                    .AddKubeConfigMap(clientOptions,\n                        configMapName: configMap1Name,\n                        reloadOnChange: true\n                    )\n                    .AddKubeConfigMap(clientOptions,\n                        configMapName: configMap2Name,\n                        reloadOnChange: true\n                    )\n                    .Build();\n                Log.LogInformation(\"Configuration built.\");\n\n                Log.LogInformation(\"Got configuration:\");\n                Dump(configuration);\n\n                Log.LogInformation(\"Press enter to update ConfigMaps {ConfigMap1Name} and {ConfigMap2Name}:\", configMap1Name, configMap2Name);\n\n                Console.ReadLine();\n\n                Log.LogInformation(\"Registering callback for change-notifications...\");\n\n                ManualResetEvent configurationChanged = new ManualResetEvent(false);\n\n                // See ConfigurationExtensions class below.\n                IDisposable reloadNotifications = configuration.OnReload(() =>\n                {\n                    Log.LogInformation(\"Got changed configuration:\");\n                    Dump(configuration);\n\n                    configurationChanged.Set();\n                });\n                Log.LogInformation(\"Change-notification callback registered.\");\n\n                using (configurationChanged)\n                using (reloadNotifications)\n                {\n                    Log.LogInformation(\"Updating ConfigMap {ConfigMapName}...\", configMap1Name);\n\n                    configMap1.Data[\"key5\"] = \"FiveA\";\n                    configMap1.Data[\"key6\"] = \"SixA\";\n\n                    // Replace the entire Data dictionary (to modify only some of the data, you'll need to use an untyped JsonPatchDocument).\n                    await client.ConfigMapsV1().Update(configMap1Name, patch =>\n                    {\n                        patch.Replace(patchConfigMap => patchConfigMap.Data,\n                            value: configMap1.Data\n                        );\n                    });\n\n                    Log.LogInformation(\"Updated ConfigMap {ConfigMapName}.\", configMap1Name);\n\n                    Log.LogInformation(\"Waiting for configuration change...\");\n\n                    configurationChanged.WaitOne();\n\n                    Log.LogInformation(\"Configuration changed via ConfigMap {ConfigMapName}.\", configMap1Name);\n\n                    configurationChanged.Reset();\n\n                    Log.LogInformation(\"Updating ConfigMap {ConfigMapName}...\", configMap2Name);\n\n                    configMap2.Data[\"key5\"] = \"FiveB\";\n                    configMap2.Data[\"key6\"] = \"SixB\";\n\n                    // Replace the entire Data dictionary (to modify only some of the data, you'll need to use an untyped JsonPatchDocument).\n                    await client.ConfigMapsV1().Update(configMap2Name, patch =>\n                    {\n                        patch.Replace(patchConfigMap => patchConfigMap.Data,\n                            value: configMap2.Data\n                        );\n                    });\n\n                    Log.LogInformation(\"Updated ConfigMap {ConfigMapName}.\", configMap2Name);\n\n                    configurationChanged.WaitOne();\n\n                    Log.LogInformation(\"Configuration changed via ConfigMap {ConfigMapName}.\", configMap2Name);\n                }\n\n                return ExitCodes.Success;\n            }\n            catch (HttpRequestException<StatusV1> kubeError)\n            {\n                Log.LogError(kubeError, \"Kubernetes API error: {@Status}\", kubeError.Response);\n\n                return ExitCodes.UnexpectedError;\n            }\n            catch (Exception unexpectedError)\n            {\n                Log.LogError(unexpectedError, \"Unexpected error.\");\n\n                return ExitCodes.UnexpectedError;\n            }\n        }\n\n        /// <summary>\n        ///     Dump configuration keys and values to the log.\n        /// </summary>\n        /// <param name=\"configuration\">The <see cref=\"IConfiguration\"/>.</param>\n        static void Dump(IConfiguration configuration)\n        {\n            if (configuration == null)\n                throw new ArgumentNullException(nameof(configuration));\n\n            foreach ((string key, string value) in configuration.AsEnumerable().OrderBy(item => item.Key))\n                Log.LogInformation(\"\\t'{Key}' = '{Value}'\", key, value);\n        }\n\n        /// <summary>\n        ///     Configure application-level logging and populate <see cref=\"Log\"/>.\n        /// </summary>\n        /// <param name=\"options\">\n        ///     Program options.\n        /// </param>\n        /// <returns>\n        ///     The global logging service provider.\n        /// </returns>\n        static ServiceProvider ConfigureLogging(ProgramOptions options)\n        {\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            ServiceProvider loggingServiceProvider = new ServiceCollection()\n                .AddLogging(logging =>\n                {\n                    logging.SetMinimumLevel(\n                        options.Verbose ? LogLevel.Trace : LogLevel.Information\n                    );\n                    logging.AddConsole();\n                    logging.AddDebug();\n                })\n                .BuildServiceProvider(new ServiceProviderOptions\n                {\n                    ValidateOnBuild = true,\n                    ValidateScopes = true,\n                });\n\n            try\n            {\n                ILoggerFactory loggerFactory = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n                Log = loggerFactory.CreateLogger(typeof(Program));\n\n                return loggingServiceProvider;\n            }\n            catch (Exception)\n            {\n                // Clean up, on failure (if possible).\n                using (loggingServiceProvider)\n                {\n                    throw;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Global initialisation.\n        /// </summary>\n        static Program()\n        {\n            SynchronizationContext.SetSynchronizationContext(\n                new SynchronizationContext()\n            );\n        }\n\n        /// <summary>\n        ///     Well-known program exit codes.\n        /// </summary>\n        public static class ExitCodes\n        {\n            /// <summary>\n            ///     Program completed successfully.\n            /// </summary>\n            public const int Success = 0;\n\n            /// <summary>\n            ///     One or more command-line arguments were missing or invalid.\n            /// </summary>\n            public const int InvalidArguments = 1;\n\n            /// <summary>\n            ///     An unexpected error occurred during program execution.\n            /// </summary>\n            public const int UnexpectedError = 5;\n        }\n    }\n\n    /// <summary>\n    ///     Extension methods for working with <see cref=\"IConfiguration\"/>.\n    /// </summary>\n    public static class ConfigurationExtensions\n    {\n        /// <summary>\n        ///     Register a callback for configuration reload notifications.\n        /// </summary>\n        /// <param name=\"configuration\">\n        ///     The configuration.\n        /// </param>\n        /// <param name=\"action\">\n        ///     The <see cref=\"Action\"/> delegate to invoke when the configuration is reloaded.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IDisposable\"/> which, when disposed, terminates the notifications.\n        /// </returns>\n        public static IDisposable OnReload(this IConfiguration configuration, Action action)\n        {\n            if (configuration == null)\n                throw new ArgumentNullException(nameof(configuration));\n\n            if (action == null)\n                throw new ArgumentNullException(nameof(action));\n\n            // ChangeToken.OnChange takes care of requesting a new change token each time the callback is invoked.\n\n            return ChangeToken.OnChange(configuration.GetReloadToken, action);\n        }\n\n        /// <summary>\n        /// Register a callback for configuration reload notifications.\n        /// </summary>\n        /// <param name=\"configuration\">The configuration.</param>\n        /// <param name=\"action\">The <see cref=\"Action{T1}\"/> delegate to invoke when the configuration is reloaded.</param>\n        /// <returns>An <see cref=\"IDisposable\"/> which, when disposed, terminates the notifications.</returns>\n        public static IDisposable OnReload(this IConfiguration configuration, Action<IConfiguration> action)\n        {\n            if (configuration == null)\n                throw new ArgumentNullException(nameof(configuration));\n\n            if (action == null)\n                throw new ArgumentNullException(nameof(action));\n\n            // ChangeToken.OnChange takes care of requesting a new change token each time the callback is invoked.\n\n            return ChangeToken.OnChange(configuration.GetReloadToken, action, configuration);\n        }\n    }\n}\n"
  },
  {
    "path": "samples/ConfigFromConfigMap/ProgramOptions.cs",
    "content": "using CommandLine;\n\nnamespace KubeClient.Samples.ConfigFromConfigMap\n{\n    /// <summary>\n    ///     Program options for ConfigFromConfigMap.\n    /// </summary>\n    class ProgramOptions\n    {\n        /// <summary>\n        ///     Enable verbose logging.\n        /// </summary>\n        [Option('v', \"verbose\", Default = false, HelpText = \"Enable verbose logging.\")]\n        public bool Verbose { get; set; }\n\n        /// <summary>\n        ///     Parse program options from command-line arguments.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The command-line arguments\n        /// </param>\n        /// <returns>\n        ///     The parsed <see cref=\"ProgramOptions\"/>, or <c>null</c> if the command-line arguments could not be parsed.\n        /// </returns>\n        public static ProgramOptions Parse(string[] commandLineArguments)\n        {\n            ProgramOptions options = null;\n\n            Parser.Default.ParseArguments<ProgramOptions>(commandLineArguments)\n                .WithParsed(parsedOptions => options = parsedOptions);\n\n            return options;\n        }\n    }\n}\n"
  },
  {
    "path": "samples/DeploymentWithRollback/DeploymentWithRollback.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</TargetFramework>\n    <IsPackable>false</IsPackable>\n\n    <LangVersion>latest</LangVersion>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"CommandLineParser\" Version=\"2.9.1\" />\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Console\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "samples/DeploymentWithRollback/Program.cs",
    "content": "﻿using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Samples.DeploymentWithRollback\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A sample program that demonstrates creating a K8s deployment, updating it, and then rolling back to an older version.\n    /// </summary>\n    static class Program\n    {\n        /// <summary>\n        ///     The main program's logger.\n        /// </summary>\n        static ILogger Log { get; set; }\n\n        /// <summary>\n        ///     The main program entry-point.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The program's command-line arguments.\n        /// </param>\n        /// <returns>\n        ///     The program exit-code.\n        /// </returns>\n        static async Task<int> Main(string[] commandLineArguments)\n        {\n            ProgramOptions options = ProgramOptions.Parse(commandLineArguments);\n            if (options == null)\n                return ExitCodes.InvalidArguments;\n\n            using ServiceProvider loggingServiceProvider = ConfigureLogging(options);\n            ILoggerFactory loggerFactory = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n            try\n            {\n                KubeClientOptions clientOptions = K8sConfig.Load().ToKubeClientOptions(defaultKubeNamespace: options.KubeNamespace, loggerFactory: loggerFactory);\n                if (options.Verbose)\n                    clientOptions.LogPayloads = true;\n\n                KubeApiClient client = KubeApiClient.Create(clientOptions);\n\n                Log.LogInformation(\"Looking for existing Deployment {DeploymentName} in namespace {KubeNamespace}...\",\n                    options.DeploymentName,\n                    options.KubeNamespace\n                );\n\n                DeploymentV1 existingDeployment = await client.DeploymentsV1().Get(options.DeploymentName, options.KubeNamespace);\n                if (existingDeployment != null)\n                {\n                    Log.LogError(\"Cannot continue - deployment  {DeploymentName} in namespace {KubeNamespace} already exists.\",\n                        options.DeploymentName,\n                        options.KubeNamespace\n                    );\n\n                    return ExitCodes.AlreadyExists;\n                }\n\n                Log.LogInformation(\"Ok, Deployment does not exist yet - we're ready to go.\");\n\n                Log.LogInformation(\"Creating Deployment {DeploymentName} in namespace {KubeNamespace}...\",\n                    options.DeploymentName,\n                    options.KubeNamespace\n                );\n                DeploymentV1 initialDeployment = await CreateInitialDeployment(client, options.DeploymentName, options.KubeNamespace);\n                int? initialRevision = initialDeployment.GetRevision();\n                if (initialRevision == null)\n                {\n                    Log.LogError(\"Unable to determine initial revision of Deployment {DeploymentName} in namespace {KubeNamespace} (missing annotation).\",\n                        options.DeploymentName,\n                        options.KubeNamespace\n                    );\n\n                    return ExitCodes.UnexpectedError;\n                }\n                Log.LogInformation(\"Created Deployment {DeploymentName} in namespace {KubeNamespace} (revision {DeploymentRevision}).\",\n                    options.DeploymentName,\n                    options.KubeNamespace,\n                    initialRevision\n                );\n\n                Log.LogInformation(\"Updating Deployment {DeploymentName} in namespace {KubeNamespace}...\",\n                    options.DeploymentName,\n                    options.KubeNamespace\n                );\n                DeploymentV1 updatedDeployment = await UpdateDeployment(client, initialDeployment);\n                int? updatedRevision = updatedDeployment.GetRevision();\n                if (updatedRevision == null)\n                {\n                    Log.LogError(\"Unable to determine updated revision of Deployment {DeploymentName} in namespace {KubeNamespace} (missing annotation).\",\n                        options.DeploymentName,\n                        options.KubeNamespace\n                    );\n\n                    return ExitCodes.UnexpectedError;\n                }\n                Log.LogInformation(\"Updated Deployment {DeploymentName} in namespace {KubeNamespace} (revision {DeploymentRevision}).\",\n                    options.DeploymentName,\n                    options.KubeNamespace,\n                    updatedRevision\n                );\n\n                Log.LogInformation(\"Searching for ReplicaSet that corresponds to revision {Revision} of {DeploymentName} in namespace {KubeNamespace}...\",\n                    options.DeploymentName,\n                    options.KubeNamespace,\n                    initialRevision\n                );\n                ReplicaSetV1 targetReplicaSet = await FindReplicaSetForRevision(client, updatedDeployment, initialRevision.Value);\n                if (targetReplicaSet == null)\n                {\n                    Log.LogError(\"Cannot find ReplicaSet that corresponds to revision {Revision} of {DeploymentName} in namespace {KubeNamespace}...\",\n                        options.DeploymentName,\n                        options.KubeNamespace,\n                        initialRevision\n                    );\n\n                    return ExitCodes.NotFound;\n                }\n                Log.LogInformation(\"Found ReplicaSet {ReplicaSetName} in namespace {KubeNamespace}.\",\n                    targetReplicaSet.Metadata.Name,\n                    targetReplicaSet.Metadata.Namespace\n                );\n\n                Log.LogInformation(\"Rolling Deployment {DeploymentName} in namespace {KubeNamespace} back to initial revision {DeploymentRevision}...\",\n                    options.DeploymentName,\n                    options.KubeNamespace,\n                    initialRevision\n                );\n                DeploymentV1 rolledBackDeployment = await RollbackDeployment(client, updatedDeployment, targetReplicaSet);\n                Log.LogInformation(\"Rollback initiated for Deployment {DeploymentName} in namespace {KubeNamespace} from revision {FromRevision} to {ToRevision} (new revision will be {NewRevision})...\",\n                    options.DeploymentName,\n                    options.KubeNamespace,\n                    updatedRevision,\n                    initialRevision,\n                    rolledBackDeployment.GetRevision()\n                );\n\n                return ExitCodes.Success;\n            }\n            catch (HttpRequestException<StatusV1> kubeError)\n            {\n                Log.LogError(kubeError, \"Kubernetes API error: {@Status}\", kubeError.Response);\n\n                return ExitCodes.UnexpectedError;\n            }\n            catch (Exception unexpectedError)\n            {\n                Log.LogError(unexpectedError, \"Unexpected error.\");\n\n                return ExitCodes.UnexpectedError;\n            }\n        }\n\n        /// <summary>\n        ///     Create the initial Deployment.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"deploymentName\">\n        ///     The name of the Deployment to create.\n        /// </param>\n        /// <param name=\"deploymentNamespace\">\n        ///     The name of the Kubernetes namespace in which the Deployment will be created.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment's current state.\n        /// </returns>\n        static async Task<DeploymentV1> CreateInitialDeployment(IKubeApiClient client, string deploymentName, string deploymentNamespace)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (String.IsNullOrWhiteSpace(deploymentName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'deploymentName'.\", nameof(deploymentName));\n            \n            if (String.IsNullOrWhiteSpace(deploymentNamespace))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'deploymentNamespace'.\", nameof(deploymentNamespace));\n            \n            DeploymentV1 initialDeployment = await client.DeploymentsV1().Create(new DeploymentV1\n            {\n                Metadata = new ObjectMetaV1\n                {\n                    Name = deploymentName,\n                    Namespace = deploymentNamespace\n                },\n                Spec = new DeploymentSpecV1\n                {\n                    Selector = new LabelSelectorV1\n                    {\n                        MatchLabels =\n                        {\n                            [\"app\"] = deploymentName\n                        }\n                    },\n                    Replicas = 2,\n                    RevisionHistoryLimit = 3,\n                    Template = new PodTemplateSpecV1\n                    {\n                        Metadata = new ObjectMetaV1\n                        {\n                            Labels =\n                            {\n                                [\"app\"] = deploymentName\n                            }\n                        },\n                        Spec = new PodSpecV1\n                        {\n                            Containers =\n                            {\n                                new ContainerV1\n                                {\n                                    Name = \"demo-container\",\n                                    Image = \"ubuntu:xenial\",\n                                    Command = { \"/bin/sleep\", \"20m\" }\n                                }\n                            }\n                        }\n                    }\n                }\n            });\n\n            // Re-fetch Deployment state so we pick up annotations added by the controller.\n            initialDeployment = await client.DeploymentsV1().Get(initialDeployment.Metadata.Name, initialDeployment.Metadata.Namespace);\n\n            return initialDeployment;\n        }\n\n        /// <summary>\n        ///     Update a Deployment, modifying its Command.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"existingDeployment\">\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment to update.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment's current state.\n        /// </returns>\n        static async Task<DeploymentV1> UpdateDeployment(IKubeApiClient client, DeploymentV1 existingDeployment)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (existingDeployment == null)\n                throw new ArgumentNullException(nameof(existingDeployment));\n            \n            DeploymentV1 updatedDeployment = await client.DeploymentsV1().Update(existingDeployment.Metadata.Name, kubeNamespace: existingDeployment.Metadata.Namespace, patchAction: patch =>\n            {\n                patch.Replace(\n                    path: deployment => deployment.Spec.Template.Spec.Containers[0].Command,\n                    value: new List<string> { \"/bin/sleep\", \"30m\" }\n                );\n            });\n\n            // Re-fetch Deployment state so we pick up annotations added or updated by the controller.\n            updatedDeployment = await client.DeploymentsV1().Get(updatedDeployment.Metadata.Name, updatedDeployment.Metadata.Namespace);\n\n            return updatedDeployment;\n        }\n\n        /// <summary>\n        ///     Find the ReplicaSet that corresponds to the specified revision of the specified Deployment.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"deployment\">\n        ///     The target Deployment.\n        /// </param>\n        /// <param name=\"targetRevision\">\n        ///     The target revision.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the ReplicaSet's current state; <c>null</c>, if no corresponding ReplicaSet was found.\n        /// </returns>\n        static async Task<ReplicaSetV1> FindReplicaSetForRevision(IKubeApiClient client, DeploymentV1 deployment, int targetRevision)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (deployment == null)\n                throw new ArgumentNullException(nameof(deployment));\n            \n            ReplicaSetListV1 replicaSets = await client.ReplicaSetsV1().List(\n                labelSelector: $\"app={deployment.Metadata.Name}\",\n                kubeNamespace: deployment.Metadata.Namespace\n            );\n\n            ReplicaSetV1 targetRevisionReplicaSet = replicaSets.Items.FirstOrDefault(\n                replicaSet => replicaSet.GetRevision() == targetRevision\n            );\n\n            return targetRevisionReplicaSet;\n        }\n\n        /// <summary>\n        ///     Roll back a Deployment to the revision represented by the specified ReplicaSet.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"existingDeployment\">\n        ///     The target Deployment.\n        /// </param>\n        /// <param name=\"targetRevisionReplicaSet\">\n        ///     The ReplicaSet that represents the target revision.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment's current state.\n        /// </returns>\n        static async Task<DeploymentV1> RollbackDeployment(IKubeApiClient client, DeploymentV1 existingDeployment, ReplicaSetV1 targetRevisionReplicaSet)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (existingDeployment == null)\n                throw new ArgumentNullException(nameof(existingDeployment));\n            \n            if (targetRevisionReplicaSet == null)\n                throw new ArgumentNullException(nameof(targetRevisionReplicaSet));\n\n            if (!DoesDeploymentOwnReplicaSet(existingDeployment, targetRevisionReplicaSet))\n                throw new InvalidOperationException($\"ReplicaSet '{targetRevisionReplicaSet.Metadata.Name}' in namespace '{targetRevisionReplicaSet.Metadata.Namespace}' is not owned by Deployment '{existingDeployment.Metadata.Name}'.\");\n\n            int? targetRevision = targetRevisionReplicaSet.GetRevision();\n            if (targetRevision == null)\n                throw new InvalidOperationException($\"Cannot determine Deployment revision represented by ReplicaSet '{targetRevisionReplicaSet.Metadata.Name}' in namespace '{targetRevisionReplicaSet.Metadata.Namespace}'.\");\n            \n            DeploymentV1 rolledBackDeployment = await client.DeploymentsV1().Update(existingDeployment.Metadata.Name, kubeNamespace: existingDeployment.Metadata.Namespace, patchAction: patch =>\n            {\n                patch.Replace(deployment =>\n                    deployment.Spec.Template.Spec,\n                    value: targetRevisionReplicaSet.Spec.Template.Spec\n                );\n\n                // Since the Rollback API is now obsolete, we have to update the Deployment's revision by hand.\n                Dictionary<string, string> annotationsWithModifiedRevision = existingDeployment.Metadata.Annotations;\n                annotationsWithModifiedRevision[K8sAnnotations.Deployment.Revision] = targetRevision.Value.ToString();\n                patch.Replace(deployment =>\n                    deployment.Metadata.Annotations,\n                    value: annotationsWithModifiedRevision\n                );\n            });\n\n            // Re-fetch Deployment state so we pick up annotations added or updated by the controller.\n            rolledBackDeployment = await client.DeploymentsV1().Get(rolledBackDeployment.Metadata.Name, rolledBackDeployment.Metadata.Namespace);\n\n            return rolledBackDeployment;\n        }\n\n        /// <summary>\n        ///     Determine whether a Deployment owns a ReplicaSet.\n        /// </summary>\n        /// <param name=\"deployment\">\n        ///     The Deployment to examine.\n        /// </param>\n        /// <param name=\"replicaSet\">\n        ///     The ReplicaSet to examine.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the ReplicaSet has an owner-reference to the Deployment; otherwise, <c>false</c>.\n        /// </returns>\n        static bool DoesDeploymentOwnReplicaSet(DeploymentV1 deployment, ReplicaSetV1 replicaSet)\n        {\n            if (deployment == null)\n                throw new ArgumentNullException(nameof(deployment));\n            \n            if (replicaSet == null)\n                throw new ArgumentNullException(nameof(replicaSet));\n            \n            // Sanity-check: does the target ReplicaSet actually represent a revision of the existing Deployment?\n            bool isReplicaSetForDeployment = replicaSet.Metadata.OwnerReferences.Any(ownerReference =>\n                ownerReference.Kind == deployment.Kind\n                &&\n                ownerReference.ApiVersion == deployment.ApiVersion\n                &&\n                ownerReference.Name == deployment.Metadata.Name\n            );\n            \n            return isReplicaSetForDeployment;\n        }\n\n        /// <summary>\n        ///     Configure application-level logging and populate <see cref=\"Log\"/>.\n        /// </summary>\n        /// <param name=\"options\">\n        ///     Program options.\n        /// </param>\n        /// <returns>\n        ///     The global logging service provider.\n        /// </returns>\n        static ServiceProvider ConfigureLogging(ProgramOptions options)\n        {\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            ServiceProvider loggingServiceProvider = new ServiceCollection()\n                .AddLogging(logging =>\n                {\n                    logging.SetMinimumLevel(\n                        options.Verbose ? LogLevel.Trace : LogLevel.Information\n                    );\n                    logging.AddConsole();\n                    logging.AddDebug();\n                })\n                .BuildServiceProvider(new ServiceProviderOptions\n                {\n                    ValidateOnBuild = true,\n                    ValidateScopes = true,\n                });\n\n            try\n            {\n                ILoggerFactory loggerFactory = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n                Log = loggerFactory.CreateLogger(typeof(Program));\n\n                return loggingServiceProvider;\n            }\n            catch (Exception)\n            {\n                // Clean up, on failure (if possible).\n                using (loggingServiceProvider)\n                {\n                    throw;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Global initialisation.\n        /// </summary>\n        static Program()\n        {\n            SynchronizationContext.SetSynchronizationContext(\n                new SynchronizationContext()\n            );\n        }\n\n        /// <summary>\n        ///     Well-known program exit codes.\n        /// </summary>\n        public static class ExitCodes\n        {\n            /// <summary>\n            ///     Program completed successfully.\n            /// </summary>\n            public const int Success = 0;\n\n            /// <summary>\n            ///     One or more command-line arguments were missing or invalid.\n            /// </summary>\n            public const int InvalidArguments = 1;\n\n            /// <summary>\n            ///     Resource not found.\n            /// </summary>\n            public const int NotFound = 2;\n\n            /// <summary>\n            ///     Resource already exists.\n            /// </summary>\n            public const int AlreadyExists = 3;\n\n            /// <summary>\n            ///     An unexpected error occurred during program execution.\n            /// </summary>\n            public const int UnexpectedError = 5;\n        }\n    }\n}\n"
  },
  {
    "path": "samples/DeploymentWithRollback/ProgramOptions.cs",
    "content": "using CommandLine;\n\nnamespace KubeClient.Samples.DeploymentWithRollback\n{\n    /// <summary>\n    ///     Program options for DeploymentWithRollback.\n    /// </summary>\n    class ProgramOptions\n    {\n        /// <summary>\n        ///     The name of the deployment to create.\n        /// </summary>\n        [Option('n', \"name\", Required = true, HelpText = \"The name of the deployment to create\")]\n        public string DeploymentName { get; set; }\n\n        /// <summary>\n        ///     The name of the namespace where the deployment will be created.\n        /// </summary>\n        [Option(\"namespace\", Default = \"default\", HelpText = \"The name of the namespace where the deployment will be created.\")]\n        public string KubeNamespace { get; set; }\n\n        /// <summary>\n        ///     Enable verbose logging.\n        /// </summary>\n        [Option('v', \"verbose\", Default = false, HelpText = \"Enable verbose logging\")]\n        public bool Verbose { get; set; }\n\n        /// <summary>\n        ///     Parse program options from command-line arguments.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The command-line arguments\n        /// </param>\n        /// <returns>\n        ///     The parsed <see cref=\"ProgramOptions\"/>, or <c>null</c> if the command-line arguments could not be parsed.\n        /// </returns>\n        public static ProgramOptions Parse(string[] commandLineArguments)\n        {\n            ProgramOptions options = null;\n\n            Parser.Default.ParseArguments<ProgramOptions>(commandLineArguments)\n                .WithParsed(parsedOptions => options = parsedOptions);\n\n            return options;\n        }\n    }\n}"
  },
  {
    "path": "samples/Directory.Build.props",
    "content": "<Project>\n  <!-- Common settings for projects -->\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    \n    <!-- Don't pack sample projects -->\n    <IsPackable>false</IsPackable>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "samples/ExtensionsSample/ExtensionsSample.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</TargetFramework>\n    <IsPackable>false</IsPackable>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.Extensions.Configuration.Binder\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'netstandard2.1'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.Configuration/KubeClient.Extensions.Configuration.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "samples/ExtensionsSample/Program.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing KubeClient;\nusing KubeClient.Extensions.Configuration;\nusing Microsoft.Extensions.Configuration;\nusing Newtonsoft.Json;\n\nnamespace ExtensionsSample\n{\n    /// <summary>\n    /// Make sure to run: <code>kubectl apply -f ./thing-configmap.yaml</code> to create the extensions-sample configMap before running this sample.  You also need to be running <code>kubectl proxy</code>\n    /// </summary>\n    static class Program\n    {\n        static void Main()\n        {\n            var configBuilder = new ConfigurationBuilder();\n            using (var client = KubeApiClient.Create(\"http://localhost:8001\"))\n            {\n                configBuilder.AddKubeConfigMap(client, \"extensions-sample\", reloadOnChange: true);\n\n                var root = configBuilder.Build();\n                var thing = new Thing();\n                root.GetSection(\"Thing\").Bind(thing);\n                Console.WriteLine(\"Thing: {0}\", JsonConvert.SerializeObject(thing, Formatting.Indented));\n            }\n        }\n    }\n\n    class Thing\n    {\n        public string Environment { get; set; }\n        public NestedThing Nested { get; set; }\n    }\n\n    class NestedThing\n    {\n        public string Name { get; set; }\n        public string Other { get; set; }\n    }\n}\n"
  },
  {
    "path": "samples/ExtensionsSample/thing-configmap.yaml",
    "content": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: extensions-sample\n  labels:\n    name: extensions-sample\ndata:\n  thing.environment: 'kubed'\n  thing.nested.Name: 'I''m nested'\n  thing.Nested.other: 'what?'\n\n"
  },
  {
    "path": "samples/WatchEvents/Program.cs",
    "content": "﻿using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing Newtonsoft.Json;\nusing System;\nusing System.Reactive.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Threading.Tasks.Dataflow;\n\nnamespace KubeClient.Samples.WatchEvents\n{\n    using Http;\n    using Models;\n    using ResourceClients;\n\n    /// <summary>\n    ///     A sample program that demonstrates creating how to watch events in a K8s namespace and resolve the resources defined in those events.\n    /// </summary>\n    static class Program\n    {\n        /// <summary>\n        ///     The main program's logger.\n        /// </summary>\n        static ILogger Log { get; set; }\n\n        /// <summary>\n        ///     The main program entry-point.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The program's command-line arguments.\n        /// </param>\n        /// <returns>\n        ///     The program exit-code.\n        /// </returns>\n        static async Task<int> Main(string[] commandLineArguments)\n        {\n            ProgramOptions options = ProgramOptions.Parse(commandLineArguments);\n            if (options == null)\n                return ExitCodes.InvalidArguments;\n\n            using ServiceProvider loggingServiceProvider = ConfigureLogging(options);\n            ILoggerFactory loggerFactory = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n            try\n            {\n                KubeClientOptions clientOptions = K8sConfig.Load().ToKubeClientOptions(defaultKubeNamespace: options.KubeNamespace, loggerFactory: loggerFactory);\n                if (options.Verbose)\n                    clientOptions.LogPayloads = true;\n\n                JsonSerializerSettings serializerSettings = KubeResourceClient.SerializerSettings;\n                serializerSettings.Formatting = Formatting.Indented;\n\n                KubeApiClient client = KubeApiClient.Create(clientOptions);\n                EventListV1 initialEvents = await client.EventsV1().List();\n\n                ActionBlock<EventV1> eventProcessor = CreateEventProcessor(client);\n\n                Log.LogInformation(\"Initial events:\");\n                Log.LogInformation(\"===============\");\n\n                if (initialEvents.Items.Count > 0)\n                {\n                    foreach (EventV1 initialEvent in initialEvents)\n                        eventProcessor.Post(initialEvent);\n                }\n                else\n                    Log.LogInformation(\"No initial events.\");\n\n                Log.LogInformation(\"===============\");\n\n                IObservable<IResourceEventV1<EventV1>> eventStream;\n                if (initialEvents.Items.Count > 0)\n                {\n                    EventV1 lastEvent = initialEvents.Items[initialEvents.Items.Count - 1];\n\n                    eventStream = client.EventsV1().WatchAll(resourceVersion: lastEvent.InvolvedObject.ResourceVersion);\n                }\n                else\n                    eventStream = client.EventsV1().WatchAll();\n                \n                IDisposable subscription = eventStream.Select(resourceEvent => resourceEvent.Resource).Subscribe(\n                    subsequentEvent => eventProcessor.Post(subsequentEvent),\n                    error => Log.LogError(error, \"Unexpected error while streaming events.\")\n                );\n\n                using (subscription)\n                {\n                    Log.LogInformation(\"Watching for new events (press enter to terminate).\");\n\n                    Console.ReadLine();\n                }\n\n                Log.LogInformation(\"Waiting for event processor to shut down...\");\n\n                eventProcessor.Complete();\n                await eventProcessor.Completion;\n\n                Log.LogInformation(\"Event processor has shut down.\");\n\n                return ExitCodes.Success;\n            }\n            catch (HttpRequestException<StatusV1> kubeError)\n            {\n                Log.LogError(kubeError, \"Kubernetes API error: {@Status}\", kubeError.Response);\n\n                return ExitCodes.UnexpectedError;\n            }\n            catch (Exception unexpectedError)\n            {\n                Log.LogError(unexpectedError, \"Unexpected error.\");\n\n                return ExitCodes.UnexpectedError;\n            }\n        }\n\n        /// <summary>\n        /// Create a TPL dataflow block to process events.\n        /// </summary>\n        /// <param name=\"client\">The Kubernetes API client.</param>\n        /// <returns>The configured <see cref=\"ActionBlock{TInput}\"/>.</returns>\n        static ActionBlock<EventV1> CreateEventProcessor(IKubeApiClient client)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            ActionBlock<EventV1> eventProcessor = new ActionBlock<EventV1>(async eventToProcess =>\n            {\n                Log.LogInformation(\"Event: [{SourceComponent}] {EventReason:l} {EventMessage}\",\n                    eventToProcess.Source?.Component,\n                    eventToProcess.Reason,\n                    eventToProcess.Message\n                );\n\n                await ResolveRelatedResource(client, eventToProcess);\n            }); \n\n            eventProcessor.Completion.ContinueWith(faulted =>\n            {\n                AggregateException flattened = faulted.Exception.Flatten();\n                if (flattened.InnerExceptions.Count == 1)\n                    Log.LogError(flattened.InnerExceptions[0], \"Unexpected error while processing event.\");\n                else\n                    Log.LogError(flattened, \"Unexpected error while processing event.\");\n            }, TaskContinuationOptions.OnlyOnFaulted);\n\n            return eventProcessor;\n        }\n\n        /// <summary>\n        /// Attempt to resolve the related resource for the specified event.\n        /// </summary>\n        /// <param name=\"client\">The Kubernetes API client.</param>\n        /// <param name=\"eventResource\">The <see cref=\"EventV1\"/> to process.</param>\n        /// <returns>A task representing the asynchronous operation.</returns>\n        static async Task ResolveRelatedResource(IKubeApiClient client, EventV1 eventResource)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (eventResource == null)\n                throw new ArgumentNullException(nameof(eventResource));\n\n            KubeResourceV1 involvedResource = await client.Dynamic().Get(eventResource.InvolvedObject);\n            if (involvedResource != null)\n            {\n                Log.LogInformation(\"\\tResolved related {ResourceModelName} resource for event {EventName} ({EventNamespace}).\",\n                    involvedResource.GetType().Name,\n                    eventResource.Metadata.Name,\n                    eventResource.Metadata.Namespace\n                );\n            }\n            else\n            {\n                Log.LogInformation(\"\\tFailed to resolve related resource for event {EventName} ({EventNamespace}).\",\n                    eventResource.Metadata.Name,\n                    eventResource.Metadata.Namespace\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Configure application-level logging and populate <see cref=\"Log\"/>.\n        /// </summary>\n        /// <param name=\"options\">\n        ///     Program options.\n        /// </param>\n        /// <returns>\n        ///     The global logging service provider.\n        /// </returns>\n        static ServiceProvider ConfigureLogging(ProgramOptions options)\n        {\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            ServiceProvider loggingServiceProvider = new ServiceCollection()\n                .AddLogging(logging =>\n                {\n                    logging.SetMinimumLevel(\n                        options.Verbose ? LogLevel.Trace : LogLevel.Information\n                    );\n                    logging.AddConsole();\n                    logging.AddDebug();\n                })\n                .BuildServiceProvider(new ServiceProviderOptions\n                {\n                    ValidateOnBuild = true,\n                    ValidateScopes = true,\n                });\n\n            try\n            {\n                ILoggerFactory loggerFactory = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n                Log = loggerFactory.CreateLogger(typeof(Program));\n\n                return loggingServiceProvider;\n            }\n            catch (Exception)\n            {\n                // Clean up, on failure (if possible).\n                using (loggingServiceProvider)\n                {\n                    throw;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Global initialisation.\n        /// </summary>\n        static Program()\n        {\n            SynchronizationContext.SetSynchronizationContext(\n                new SynchronizationContext()\n            );\n        }\n\n        /// <summary>\n        ///     Well-known program exit codes.\n        /// </summary>\n        public static class ExitCodes\n        {\n            /// <summary>\n            ///     Program completed successfully.\n            /// </summary>\n            public const int Success = 0;\n\n            /// <summary>\n            ///     One or more command-line arguments were missing or invalid.\n            /// </summary>\n            public const int InvalidArguments = 1;\n\n            /// <summary>\n            ///     Resource not found.\n            /// </summary>\n            public const int NotFound = 2;\n\n            /// <summary>\n            ///     Resource already exists.\n            /// </summary>\n            public const int AlreadyExists = 3;\n\n            /// <summary>\n            ///     An unexpected error occurred during program execution.\n            /// </summary>\n            public const int UnexpectedError = 5;\n        }\n    }\n}\n"
  },
  {
    "path": "samples/WatchEvents/ProgramOptions.cs",
    "content": "﻿using CommandLine;\n\nnamespace KubeClient.Samples.WatchEvents\n{\n    /// <summary>\n    ///     Program options for WatchEvents.\n    /// </summary>\n    class ProgramOptions\n    {\n        /// <summary>\n        ///     The name of the namespace where the deployment will be created.\n        /// </summary>\n        [Option(\"namespace\", Default = \"default\", HelpText = \"The name of the namespace where the deployment will be created.\")]\n        public string KubeNamespace { get; set; }\n\n        /// <summary>\n        ///     Enable verbose logging.\n        /// </summary>\n        [Option('v', \"verbose\", Default = false, HelpText = \"Enable verbose logging\")]\n        public bool Verbose { get; set; }\n\n        /// <summary>\n        ///     Parse program options from command-line arguments.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The command-line arguments\n        /// </param>\n        /// <returns>\n        ///     The parsed <see cref=\"ProgramOptions\"/>, or <c>null</c> if the command-line arguments could not be parsed.\n        /// </returns>\n        public static ProgramOptions Parse(string[] commandLineArguments)\n        {\n            ProgramOptions options = null;\n\n            Parser.Default.ParseArguments<ProgramOptions>(commandLineArguments)\n                .WithParsed(parsedOptions => options = parsedOptions);\n\n            return options;\n        }\n    }\n}"
  },
  {
    "path": "samples/WatchEvents/WatchEvents.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</TargetFramework>\n    <LangVersion>latest</LangVersion>\n    <IsPackable>false</IsPackable>\n\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"CommandLineParser\" Version=\"2.9.1\" />\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Console\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"10.0.0\" />\n    <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n    <PackageReference Include=\"System.Threading.Tasks.Dataflow\" Version=\"8.0.1\" />\n  </ItemGroup>\n</Project>\n"
  },
  {
    "path": "samples/noob-exec/NoobExec.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <AssemblyName>noob-exec</AssemblyName>\n    <TargetFramework>net10.0</TargetFramework>\n    <IsPackable>false</IsPackable>\n\n    <LangVersion>latest</LangVersion>\n  </PropertyGroup>\n\n  <ItemGroup>\n      <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n      <ProjectReference Include=\"../../src/KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj\" />\n      <ProjectReference Include=\"../../src/KubeClient.Extensions.WebSockets/KubeClient.Extensions.WebSockets.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"CommandLineParser\" Version=\"2.9.1\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Console\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"10.0.0\" />\n  </ItemGroup>\n</Project>\n"
  },
  {
    "path": "samples/noob-exec/Program.cs",
    "content": "﻿using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.IO;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Samples.NoobExec\n{\n    using Extensions.WebSockets;\n    using Models;\n\n    /// <summary>\n    ///     The NoobExec program.\n    /// </summary>\n    static class Program\n    {\n        /// <summary>\n        ///     The main program's logger.\n        /// </summary>\n        static ILogger Log { get; set; }\n\n        /// <summary>\n        ///     The main program entry-point.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The program's command-line arguments.\n        /// </param>\n        /// <returns>\n        ///     The program exit-code.\n        /// </returns>\n        static async Task<int> Main(string[] commandLineArguments)\n        {\n            // Show help if no arguments are specified.\n            bool showHelp = commandLineArguments.Length == 0;\n            if (showHelp)\n                commandLineArguments = new[] { \"--help\" };\n\n            ProgramOptions options = ProgramOptions.Parse(commandLineArguments);\n            if (options == null)\n                return showHelp ? ExitCodes.Success : ExitCodes.InvalidArguments;\n\n            using ServiceProvider loggingServiceProvider = ConfigureLogging(options);\n            ILoggerFactory loggers = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n            try\n            {\n                KubeClientOptions clientOptions = K8sConfig.Load().ToKubeClientOptions(\n                    kubeContextName: options.KubeContext,\n                    defaultKubeNamespace: options.KubeNamespace,\n                    loggerFactory: loggers\n                );\n\n                using (KubeApiClient client = KubeApiClient.Create(clientOptions))\n                {\n                    Log.LogInformation(\"Finding target pod...\");\n\n                    PodV1 targetPod = await client.PodsV1().Get(options.PodName,\n                        kubeNamespace: options.KubeNamespace\n                    );\n                    if (targetPod == null)\n                    {\n                        Log.LogError(\"Pod '{PodName}' not found in namespace '{KubeNamespace}' on cluster ({KubeContextName}).\",\n                            options.PodName,\n                            options.KubeNamespace,\n                            options.KubeContext\n                        );\n\n                        return ExitCodes.NotFound;\n                    }\n\n                    if (!String.IsNullOrWhiteSpace(options.ContainerName))\n                    {\n                        ContainerStatusV1 targetContainer = targetPod.Status.ContainerStatuses.Find(\n                            container => container.Name == options.ContainerName\n                        );\n                        if (targetContainer == null)\n                        {\n                            Log.LogError(\"Container '{ContainerName}' not found in Pod '{PodName}' in namespace '{KubeNamespace}' on cluster ({KubeContextName}).\",\n                                options.ContainerName,\n                                options.PodName,\n                                options.KubeNamespace,\n                                options.KubeContext\n                            );\n\n                            return ExitCodes.NotFound;\n                        }\n                    }\n                    else if (targetPod.Status.ContainerStatuses.Count > 1)\n                    {\n                        Log.LogError(\"Pod '{PodName}' in namespace '{KubeNamespace}' on cluster ({KubeContextName}) has more than one container. Please specify the name of the target container\",\n                            options.PodName,\n                            options.KubeNamespace,\n                            options.KubeContext\n                        );\n\n                        return ExitCodes.InvalidArguments;\n                    }\n\n                    Log.LogDebug(\"Connecting...\");\n\n                    K8sMultiplexer multiplexer = await client.PodsV1().ExecAndConnect(\n                        podName: options.PodName,\n                        container: options.ContainerName,\n                        command: options.Command,\n                        kubeNamespace: options.KubeContext,\n                        stdin: true,\n                        stdout: true,\n                        stderr: true,\n                        tty: true // Required for interactivity\n                    );\n\n                    Log.LogInformation(\"Connected.\");\n\n                    Task stdInPump, stdOutPump, stdErrPump;\n\n                    using (multiplexer)\n                    using (CancellationTokenSource pumpCancellation = new CancellationTokenSource())\n                    using (Stream localStdIn = Console.OpenStandardInput())\n                    using (Stream remoteStdIn = multiplexer.GetStdIn())\n                    using (Stream localStdOut = Console.OpenStandardOutput())\n                    using (Stream remoteStdOut = multiplexer.GetStdOut())\n                    using (Stream localStdErr = Console.OpenStandardError())\n                    using (Stream remoteStdErr = multiplexer.GetStdErr())\n                    {\n                        stdInPump = localStdIn.CopyToAsync(remoteStdIn, pumpCancellation.Token);\n                        stdOutPump = remoteStdOut.CopyToAsync(localStdOut, pumpCancellation.Token);\n                        stdErrPump = remoteStdErr.CopyToAsync(localStdErr, pumpCancellation.Token);\n                        \n                        await multiplexer.WhenConnectionClosed;\n                        \n                        // Terminate stream pumps.\n                        pumpCancellation.Cancel();\n                    }\n\n                    Log.LogInformation(\"Connection closed.\");\n                    Log.LogInformation(\"Done.\");\n                }\n\n                return ExitCodes.Success;\n            }\n            catch (Exception unexpectedError)\n            {\n                Log.LogError(unexpectedError.ToString());\n                Log.LogError(unexpectedError, \"Unexpected error.\");\n\n                return ExitCodes.UnexpectedError;\n            }\n        }\n\n        /// <summary>\n        ///     Configure application-level logging and populate <see cref=\"Log\"/>.\n        /// </summary>\n        /// <param name=\"options\">\n        ///     Program options.\n        /// </param>\n        /// <returns>\n        ///     The global logging service provider.\n        /// </returns>\n        static ServiceProvider ConfigureLogging(ProgramOptions options)\n        {\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            ServiceProvider loggingServiceProvider = new ServiceCollection()\n                .AddLogging(logging =>\n                {\n                    logging.SetMinimumLevel(\n                        options.Verbose ? LogLevel.Trace : LogLevel.Information\n                    );\n                    logging.AddConsole();\n                    logging.AddDebug();\n                })\n                .BuildServiceProvider(new ServiceProviderOptions\n                {\n                    ValidateOnBuild = true,\n                    ValidateScopes = true,\n                });\n\n            try\n            {\n                ILoggerFactory loggerFactory = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n                Log = loggerFactory.CreateLogger(typeof(Program));\n\n                return loggingServiceProvider;\n            }\n            catch (Exception)\n            {\n                // Clean up, on failure (if possible).\n                using (loggingServiceProvider)\n                {\n                    throw;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Global initialisation.\n        /// </summary>\n        static Program()\n        {\n            SynchronizationContext.SetSynchronizationContext(\n                new SynchronizationContext()\n            );\n        }\n\n        /// <summary>\n        ///     Well-known program exit codes.\n        /// </summary>\n        public static class ExitCodes\n        {\n            /// <summary>\n            ///     Program completed successfully.\n            /// </summary>\n            public const int Success = 0;\n\n            /// <summary>\n            ///     One or more command-line arguments were missing or invalid.\n            /// </summary>\n            public const int InvalidArguments = 1;\n\n            /// <summary>\n            ///     The target resource was not found.\n            /// </summary>\n            public const int NotFound = 10;\n\n            /// <summary>\n            ///     An unexpected error occurred during program execution.\n            /// </summary>\n            public const int UnexpectedError = 50;\n        }\n    }\n}\n"
  },
  {
    "path": "samples/noob-exec/ProgramOptions.cs",
    "content": "using CommandLine;\n\nnamespace KubeClient.Samples.NoobExec\n{\n    /// <summary>\n    ///     Program options for NoobExec.\n    /// </summary>\n    class ProgramOptions\n    {\n        /// <summary>\n        ///     The name of the target pod.\n        /// </summary>\n        [Option('p', \"pod\", Required = true, HelpText = \"The name of the target pod.\")]\n        public string PodName { get; set; }\n\n        /// <summary>\n        ///     The command to execute.\n        /// </summary>\n        [Option('c', \"command\", Required = true, HelpText = \"The command to execute.\")]\n        public string Command { get; set; }\n\n        /// <summary>\n        ///     The name of the target container within the target pod.\n        /// </summary>\n        /// <remarks>\n        ///     Optional, if the pod only has a single container.\n        /// </remarks>\n        [Option(\"container\", Default = null, HelpText = \"The name of the target container within the target pod. Optional, if the pod only has a single container.\")]\n        public string ContainerName { get; set; }\n        \n        /// <summary>\n        ///     The Kubernetes namespace where the target pod is located.\n        /// </summary>\n        [Option('n', \"namespace\", Default = \"default\", HelpText = \"The Kubernetes namespace where the target pod is located.\")]\n        public string KubeNamespace { get; set; }\n\n        /// <summary>\n        ///     The name of the Kubernetes client configuration context to use.\n        /// </summary>\n        [Option('k', \"kube-context\", Default = null, HelpText = \"The name of the Kubernetes client configuration context to use.\")]\n        public string KubeContext { get; set; }\n\n        /// <summary>\n        ///     Enable verbose logging?\n        /// </summary>\n        [Option('v', \"verbose\", Default = false, HelpText = \"Enable verbose logging.\")]\n        public bool Verbose { get; set; }\n\n        /// <summary>\n        ///     Parse program options from command-line arguments.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The command-line arguments\n        /// </param>\n        /// <returns>\n        ///     The parsed <see cref=\"ProgramOptions\"/>, or <c>null</c> if the command-line arguments could not be parsed.\n        /// </returns>\n        public static ProgramOptions Parse(string[] commandLineArguments)\n        {\n            ProgramOptions options = null;\n\n            Parser.Default.ParseArguments<ProgramOptions>(commandLineArguments)\n                .WithParsed(parsedOptions => options = parsedOptions);\n\n            return options;\n        }\n    }\n}\n"
  },
  {
    "path": "src/Common.props",
    "content": "<Project>\n  <!-- Common settings for projects -->\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n    <GenerateDocumentationFile>true</GenerateDocumentationFile>\n  </PropertyGroup>\n\n  <!-- Common package properties -->\n  <PropertyGroup>\n    <PackageReadmeFile>Package-README.md</PackageReadmeFile>\n    <PackageLicenseFile>LICENSE</PackageLicenseFile>\n    \n    <PackageProjectUrl>https://github.com/tintoy/dotnet-kube-client/</PackageProjectUrl>\n\n    <PackageTags>Kubernetes;Client;kubectl</PackageTags>\n\n    <RepositoryType>git</RepositoryType>\n    <RepositoryUrl>https://github.com/tintoy/dotnet-kube-client</RepositoryUrl>\n\n    <PackageOutputPath>$(MSBuildThisFileDirectory)/../out/packages</PackageOutputPath>\n  </PropertyGroup>\n\n  <!-- Common package files -->\n  <ItemGroup>\n    <None Include=\"$(MSBuildThisFileDirectory)/../$(PackageReadmeFile)\" Pack=\"true\" PackagePath=\"/\"/>\n    <None Include=\"$(MSBuildThisFileDirectory)/../$(PackageLicenseFile)\" Pack=\"true\" PackagePath=\"/\"/>\n  </ItemGroup>\n</Project>\n"
  },
  {
    "path": "src/KubeClient/ApiMetadata/ApiMetadataExtensions.cs",
    "content": "﻿using KubeClient.Models;\nusing System;\nusing System.Linq;\n\nnamespace KubeClient.ApiMetadata\n{\n    /// <summary>\n    ///     Extension methods for working with Kubernetes API metadata.\n    /// </summary>\n    public static class ApiMetadataExtensions\n    {\n        /// <summary>\n        ///     Determine whether a Kubernetes API path supports the specified well-known action.\n        /// </summary>\n        /// <param name=\"apiPathMetadata\">\n        ///     The API path metadata.\n        /// </param>\n        /// <param name=\"action\">\n        ///     A <see cref=\"KubeAction\"/> representing the target action.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the path supports the specified action; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool SupportsAction(this KubeApiPathMetadata apiPathMetadata, KubeAction action)\n        {\n            if (apiPathMetadata == null)\n                throw new ArgumentNullException(nameof(apiPathMetadata));\n\n            string verb = action.ToString().ToLower();\n\n            return apiPathMetadata.Verbs.Contains(verb);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ApiMetadata/KubeApiMetadata.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace KubeClient.ApiMetadata\n{\n    /// <summary>\n    ///     Metadata for a Kubernetes resource API.\n    /// </summary>\n    public class KubeApiMetadata\n    {\n        /// <summary>\n        ///     Create new Kubernetes resource API metadata.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiGroup\">\n        ///     The resource API group.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"singularName\">\n        ///     The singular name (if any) for the resource (e.g. \"NetworkPolicy\").\n        /// </param>\n        /// <param name=\"pluralName\">\n        ///     The plural name (if any) for the resource (e.g. \"NetworkPolicies\").\n        /// </param>\n        /// <param name=\"shortNames\">\n        ///     Short names (if any) for the resource.\n        /// </param>\n        /// <param name=\"isPreferredVersion\">\n        ///     Is this the currently-preferred version of the API?\n        /// </param>\n        /// <param name=\"paths\">\n        ///     The metadata for the API's paths.\n        /// \n        ///     At least 1 path must be supplied.\n        /// </param>\n        public KubeApiMetadata(string kind, string apiGroup, string apiVersion, string singularName, string pluralName, IReadOnlyCollection<string> shortNames, bool isPreferredVersion, IReadOnlyList<KubeApiPathMetadata> paths)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n            \n            if (String.IsNullOrWhiteSpace(singularName))\n                singularName = null;\n\n            if (String.IsNullOrWhiteSpace(pluralName))\n                pluralName = null;\n\n            if (shortNames == null)\n                throw new ArgumentNullException(nameof(shortNames));\n            \n            if (paths == null)\n                throw new ArgumentNullException(nameof(paths));\n\n            if (paths.Count == 0)\n                throw new ArgumentException(\"Metadata for a Kubernetes resource API must have at least one path.\", nameof(paths));\n\n            Kind = kind;\n            ApiGroup = apiGroup;\n            ApiVersion = apiVersion;\n            SingularName = singularName;\n            PluralName = pluralName;\n            ShortNames = shortNames;\n            IsPreferredVersion = isPreferredVersion;\n            PathMetadata = paths;\n        }\n\n        /// <summary>\n        ///     The resource kind.\n        /// </summary>\n        public string Kind { get; }\n\n        /// <summary>\n        ///     The resource API group.\n        /// </summary>\n        public string ApiGroup { get; }\n\n        /// <summary>\n        ///     The resource API version.\n        /// </summary>\n        public string ApiVersion { get; }\n\n        /// <summary>\n        ///     The singular name (if any) for the resource (e.g. \"NetworkPolicy\").\n        /// </summary>\n        public string SingularName { get; }\n\n        /// <summary>\n        ///     The plural name (if any) for the resource (e.g. \"NetworkPolicies\").\n        /// </summary>\n        public string PluralName { get; }\n\n        /// <summary>\n        ///     Short names (if any) for the resource.\n        /// </summary>\n        public IReadOnlyCollection<string> ShortNames { get; }\n\n        /// <summary>\n        ///     Is this the currently-preferred version of the API?\n        /// </summary>\n        public bool IsPreferredVersion { get; }\n\n        /// <summary>\n        ///     The metadata for the API's primary (non-namespaced) path.\n        /// </summary>\n        public string PrimaryPath => PrimaryPathMetadata?.Path;\n\n        /// <summary>\n        ///     The metadata for the API's primary namespaced path.\n        /// </summary>\n        public string PrimaryNamespacedPath => PrimaryNamespacedPathMetadata?.Path;\n\n        /// <summary>\n        ///     The metadata for the API's primary (non-namespaced) path.\n        /// </summary>\n        public KubeApiPathMetadata PrimaryPathMetadata => PathMetadata.FirstOrDefault(path => !path.IsNamespaced);\n\n        /// <summary>\n        ///     The metadata for the API's primary namespaced path.\n        /// </summary>\n        public KubeApiPathMetadata PrimaryNamespacedPathMetadata => PathMetadata.FirstOrDefault(path => path.IsNamespaced);\n\n        /// <summary>\n        ///     The metadata for the API's path(s).\n        /// </summary>\n        public IReadOnlyList<KubeApiPathMetadata> PathMetadata { get; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ApiMetadata/KubeApiMetadataCache.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ApiMetadata\n{\n    using Models;\n\n    /// <summary>\n    ///     A cache for Kubernetes resource API metadata.\n    /// </summary>\n    public sealed class KubeApiMetadataCache\n    {\n        /// <summary>\n        ///     Well-known group prefixes.\n        /// </summary>\n        public static readonly IReadOnlyCollection<string> ApiGroupPrefixes = new string[] { \"api\", \"apis\" };\n\n        /// <summary>\n        ///     An object used to synchronise access to cache state.\n        /// </summary>\n        readonly object _stateLock = new object();\n\n        /// <summary>\n        ///     Model metadata, keyed by apiVersion/Kind, singular name, and short names.\n        /// </summary>\n        readonly Dictionary<string, KubeApiMetadata> _metadata = new Dictionary<string, KubeApiMetadata>();\n\n        /// <summary>\n        ///     Create a new Kubernetes resource metadata cache.\n        /// </summary>\n        public KubeApiMetadataCache()\n        {\n        }\n\n        /// <summary>\n        ///     Is the cache currently empty?\n        /// </summary>\n        public bool IsEmpty\n        {\n            get\n            {\n                lock (_stateLock)\n                {\n                    return _metadata.Count == 0;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Retrieve metadata for a Kubernetes resource API.\n        /// </summary>\n        /// <typeparam name=\"TModel\">\n        ///     The type of model that represents the resource.\n        /// </typeparam>\n        /// <returns>\n        ///     The API metadata, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public KubeApiMetadata Get<TModel>()\n            where TModel : KubeObjectV1\n        {\n            return Get(\n                typeof(TModel)\n            );\n        }\n\n        /// <summary>\n        ///     Retrieve metadata for a Kubernetes resource API.\n        /// </summary>\n        /// <param name=\"modelType\">\n        ///     The CLR <see cref=\"Type\"/> of the model that represents the resource.\n        /// </param>\n        /// <returns>\n        ///     The API metadata, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public KubeApiMetadata Get(Type modelType)\n        {\n            if (modelType == null)\n                throw new ArgumentNullException(nameof(modelType));\n\n            (string kind, string apiVersion) = KubeObjectV1.GetKubeKind(modelType);\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException($\"Model type {modelType.FullName} has not been decorated with KubeResourceAttribute or KubeResourceListAttribute.\", nameof(modelType));\n\n            return Get(kind, apiVersion);\n        }\n\n        /// <summary>\n        ///     Retrieve metadata for a Kubernetes resource API.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The resource singular-name or short-name.\n        /// </param>\n        /// <returns>\n        ///     The API metadata, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public KubeApiMetadata Get(string name)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (_metadata.TryGetValue(name, out KubeApiMetadata apiMetadata))\n                return apiMetadata;\n\n            return null;\n        }\n\n        /// <summary>\n        ///     Retrieve metadata for a Kubernetes resource API.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiGroup\">\n        ///     The resource API group name.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <returns>\n        ///     The API metadata, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public KubeApiMetadata Get(string kind, string apiGroup, string apiVersion)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            lock (_stateLock)\n            {\n                string cacheKey = CreateCacheKey(kind, apiGroup, apiVersion);\n                if (_metadata.TryGetValue(cacheKey, out KubeApiMetadata metadata))\n                    return metadata;\n            }\n\n            return null;\n        }\n\n        /// <summary>\n        ///     Retrieve metadata for a Kubernetes resource API.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <returns>\n        ///     The API metadata, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public KubeApiMetadata Get(string kind, string apiVersion) => Get(kind, apiGroup: null, apiVersion);\n\n        /// <summary>\n        ///     Retrieve the primary path of a Kubernetes resource API.\n        /// </summary>\n        /// <typeparam name=\"TModel\">\n        ///     The type of model that represents the resource.\n        /// </typeparam>\n        /// <returns>\n        ///     The API's primary (i.e. first) path, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public string GetPrimaryPath<TModel>()\n            where TModel : KubeObjectV1\n        {\n            return GetPrimaryPath(\n                typeof(TModel)\n            );\n        }\n\n        /// <summary>\n        ///     Retrieve the primary path of a Kubernetes resource API.\n        /// </summary>\n        /// <param name=\"modelType\">\n        ///     The CLR <see cref=\"Type\"/> of the model that represents the resource.\n        /// </param>\n        /// <returns>\n        ///     The API's primary (i.e. first) path, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public string GetPrimaryPath(Type modelType)\n        {\n            if (modelType == null)\n                throw new ArgumentNullException(nameof(modelType));\n\n            (string kind, string apiVersion) = KubeObjectV1.GetKubeKind(modelType);\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException($\"Model type {modelType.FullName} has not been decorated with KubeResourceAttribute or KubeResourceListAttribute.\", nameof(modelType));\n\n            return GetPrimaryPath(kind, apiVersion);\n        }\n\n        /// <summary>\n        ///     Retrieve the primary path of a Kubernetes resource API.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The resource singular-name or short-name.\n        /// </param>\n        /// <returns>\n        ///     The API metadata, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public string GetPrimaryPath(string name)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return Get(name)?.PrimaryPath;\n        }\n\n        /// <summary>\n        ///     Retrieve the primary path of a Kubernetes resource API.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <returns>\n        ///     The API's primary (i.e. first) path, or <c>null</c> if no metadata was found for the API.\n        /// </returns>\n        public string GetPrimaryPath(string kind, string apiVersion)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            lock (_stateLock)\n            {\n                KubeApiMetadata metadata = Get(kind, apiVersion);\n                if (metadata == null)\n                    throw new KeyNotFoundException($\"No API metadata found for '{kind}/{apiVersion}'\");\n\n                return metadata.PrimaryPath;\n            }\n        }\n\n        /// <summary>\n        ///     Clear the cache.\n        /// </summary>\n        public void Clear()\n        {\n            lock (_stateLock)\n            {\n                _metadata.Clear();\n            }\n        }\n\n        /// <summary>\n        ///     Populate the cache from model metadata.\n        /// </summary>\n        /// <param name=\"assembly\">\n        ///     The assembly containing model types to process.\n        /// </param>\n        /// <param name=\"clearExisting\">\n        ///     Remove existing metadata from the cache?\n        /// </param>\n        public void LoadFromMetadata(Assembly assembly, bool clearExisting = false)\n        {\n            if (assembly == null)\n                throw new ArgumentNullException(nameof(assembly));\n\n            Dictionary<(string kind, string apiVersion), Type> modelMetadata = ModelMetadata.KubeObject.BuildKindToTypeLookup(assembly);\n            \n            var loadedMetadata = new List<KubeApiMetadata>();\n            foreach (var kindAndApiVersion in modelMetadata.Keys)\n            {\n                string kind = kindAndApiVersion.kind;\n                string[] apiGroupVersion = kindAndApiVersion.apiVersion.Split('/', count: 2);\n                string apiGroup = apiGroupVersion.Length == 2 ? apiGroupVersion[0] : null;\n                string apiVersion = apiGroupVersion.Length == 2 ? apiGroupVersion[1] : apiGroupVersion[0];\n\n                Type modelType = modelMetadata[kindAndApiVersion];\n\n                // TODO: Add SingularName and ShortNames to model metadata (as custom attributes), but where do we get them from? They appear to only be available at runtime (via the API).\n\n                Dictionary<string, List<KubeAction>> pathActions = new Dictionary<string, List<KubeAction>>();\n\n                KubeApiAttribute[] apiAttributes = modelType.GetTypeInfo().GetCustomAttributes<KubeApiAttribute>().ToArray();\n                foreach (KubeApiAttribute apiAttribute in apiAttributes)\n                {\n                    foreach (string path in apiAttribute.Paths)\n                    {\n                        List<KubeAction> actions;\n                        if (!pathActions.TryGetValue(path, out actions))\n                        {\n                            actions = new List<KubeAction>();\n                            pathActions.Add(path, actions);\n                        }\n\n                        actions.Add(apiAttribute.Action);\n                    }\n                }\n\n                var apiPaths = new List<KubeApiPathMetadata>();\n                foreach (string path in pathActions.Keys.OrderBy(path => path))\n                {\n                    bool isNamespaced = path.Contains(\"namespace\");\n\n                    List<KubeAction> actions = pathActions[path];\n                    actions.Sort();\n\n                    string[] verbs = new string[actions.Count];\n                    for (int actionIndex = 0; actionIndex < actions.Count; actionIndex++)\n                        verbs[actionIndex] = actions[actionIndex].ToString().ToLower();\n\n                    apiPaths.Add(\n                        new KubeApiPathMetadata(path, isNamespaced, verbs)\n                    );\n                }\n\n                if (apiPaths.Count == 0)\n                    continue;\n\n                loadedMetadata.Add(new KubeApiMetadata(\n                    kind,\n                    apiGroup,\n                    apiVersion,\n                    singularName: null,\n                    pluralName: null,\n                    shortNames: new string[0],\n                    isPreferredVersion: true,\n                    paths: apiPaths\n                ));\n            }\n\n            Cache(loadedMetadata, clearExisting);\n        }\n\n        /// <summary>\n        ///     Populate the cache from the Kubernetes API.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The <see cref=\"KubeClient\"/> used to retrieve API metadata.\n        /// </param>\n        /// <param name=\"clearExisting\">\n        ///     Remove existing metadata from the cache?\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        public async Task Load(IKubeApiClient kubeClient, bool clearExisting = false, CancellationToken cancellationToken = default)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            var loadedMetadata = new List<KubeApiMetadata>();\n\n            foreach (string apiGroupPrefix in ApiGroupPrefixes)\n            {\n                APIGroupListV1 apiGroups = await kubeClient.APIGroupsV1().List(apiGroupPrefix, cancellationToken);\n                if (apiGroupPrefix == \"api\")\n                {\n                    // Special case for old-style (\"api/v1\") APIs.\n                    apiGroups.Groups.Add(new APIGroupV1\n                    {\n                        Name = \"Core\",\n                        PreferredVersion = new GroupVersionForDiscoveryV1\n                        {\n                            GroupVersion = \"v1\"\n                        }\n                    });\n                }\n\n                foreach (APIGroupV1 apiGroup in apiGroups.Groups)\n                {\n                    List<GroupVersionForDiscoveryV1> groupVersions;\n                    if (apiGroupPrefix == \"api\")\n                    {\n                        groupVersions = new List<GroupVersionForDiscoveryV1>\n                        {\n                            new GroupVersionForDiscoveryV1\n                            {\n                                GroupVersion = \"v1\"\n                            }\n                        };\n                    }\n                    else\n                        groupVersions = apiGroup.Versions;\n\n                    var metadataLoaders = new List<Task<List<KubeApiMetadata>>>();\n\n                    foreach (GroupVersionForDiscoveryV1 groupVersion in groupVersions)\n                    {\n                        metadataLoaders.Add(\n                            LoadGroupApis(kubeClient, apiGroupPrefix, apiGroup, groupVersion, cancellationToken)\n                        );\n                    }\n\n                    List<KubeApiMetadata>[] completedLoads = await Task.WhenAll(metadataLoaders);\n                    foreach (List<KubeApiMetadata> completedLoad in completedLoads)\n                        loadedMetadata.AddRange(completedLoad);\n                }\n            }\n\n            cancellationToken.ThrowIfCancellationRequested();\n\n            Cache(loadedMetadata, clearExisting);\n        }\n\n        /// <summary>\n        ///     Load metadata for the specified group of resource APIs.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client used to load API metadata.\n        /// </param>\n        /// <param name=\"apiGroupPrefix\">\n        ///     The API group prefix (usually \"api\" or \"apis\").\n        /// </param>\n        /// <param name=\"apiGroup\">\n        ///     The API group.\n        /// </param>\n        /// <param name=\"groupVersion\">\n        ///     The current API group version to examine.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     A <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     A list of <see cref=\"KubeApiMetadata\"/> representing the group's APIs.\n        /// </returns>\n        async Task<List<KubeApiMetadata>> LoadGroupApis(IKubeApiClient kubeClient, string apiGroupPrefix, APIGroupV1 apiGroup, GroupVersionForDiscoveryV1 groupVersion, CancellationToken cancellationToken)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n            \n            if (String.IsNullOrWhiteSpace(apiGroupPrefix))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiGroupPrefix'.\", nameof(apiGroupPrefix));\n            \n            if (apiGroup == null)\n                throw new ArgumentNullException(nameof(apiGroup));\n            \n            if (groupVersion == null)\n                throw new ArgumentNullException(nameof(groupVersion));\n\n            var apiMetadata = new List<KubeApiMetadata>();\n\n            APIResourceListV1 apis = await kubeClient.APIResourcesV1().List(apiGroupPrefix, groupVersion.GroupVersion, cancellationToken);\n            foreach (var apisForKind in apis.Resources.GroupBy(api => api.Kind))\n            {\n                string kind = apisForKind.Key;\n                string pluralName = null;\n                string singularName = null;\n                IReadOnlyCollection<string> shortNames = new string[0];\n\n                var apiPaths = new List<KubeApiPathMetadata>();\n\n                bool isPreferredVersion = (groupVersion.GroupVersion == apiGroup.PreferredVersion.GroupVersion);\n\n                foreach (APIResourceV1 api in apisForKind)\n                {\n                    // TODO: Parse and examine verbs to improve path resolution.\n\n                    string apiPath = $\"{apiGroupPrefix}/{groupVersion.GroupVersion}/{api.Name}\";\n\n                    apiPaths.Add(\n                        new KubeApiPathMetadata(apiPath,\n                            isNamespaced: false,\n                            verbs: api.Verbs.ToArray()\n                        )\n                    );\n\n                    if (api.Namespaced)\n                    {\n                        string namespacedApiPath = $\"{apiGroupPrefix}/{groupVersion.GroupVersion}/namespaces/{{namespace}}/{api.Name}\";\n\n                        apiPaths.Add(\n                            new KubeApiPathMetadata(namespacedApiPath,\n                                isNamespaced: true,\n                                verbs: api.Verbs.ToArray()\n                            )\n                        );\n                    }\n\n                    // Only use aliases from preferred API version.\n                    if (isPreferredVersion)\n                    {\n                        if (pluralName == null)\n                            pluralName = api.Name;\n\n                        if (singularName == null)\n                            singularName = api.SingularName;\n\n                        if (shortNames.Count == 0)\n                            shortNames = api.ShortNames.ToArray();\n                    }\n                }\n\n                apiMetadata.Add(\n                    new KubeApiMetadata(kind, apiGroup.Name, groupVersion.Version ?? groupVersion.GroupVersion.Split('/')[0], singularName, pluralName, shortNames, isPreferredVersion, apiPaths)\n                );\n            }\n\n            return apiMetadata;\n        }\n\n        /// <summary>\n        ///     Retrieve all keys for which the cache contains metadata.\n        /// </summary>\n        /// <returns>\n        ///     An array of strings representing the cache keys.\n        /// </returns>\n        public string[] GetCacheKeys()\n        {\n            lock (_stateLock)\n            {\n                return _metadata.Keys.ToArray();\n            }\n        }\n\n        /// <summary>\n        ///     Retrieve all resource kinds for which the cache contains metadata.\n        /// </summary>\n        /// <returns>\n        ///     An array of (kind, apiVersion) tuples.\n        /// </returns>\n        public (string kind, string apiVersion)[] GetKnownResourceKinds()\n        {\n            lock (_stateLock)\n            {\n                return _metadata.Keys\n                    .Where(\n                        key => key.IndexOf('/') != -1\n                    )\n                    .Select(\n                        key => key.Split('/')\n                    )\n                    .Select(\n                        keyParts => (kind: keyParts[0], apiVersion: keyParts[1])\n                    )\n                    .ToArray();\n            }\n        }\n\n        /// <summary>\n        ///     Populate the cache using the specified metadata.\n        /// </summary>\n        /// <param name=\"loadedMetadata\">\n        ///     API metadata to be added to the cache.\n        /// </param>\n        /// <param name=\"clearExisting\">\n        ///     Remove existing metadata from the cache?\n        /// </param>\n        void Cache(IEnumerable<KubeApiMetadata> loadedMetadata, bool clearExisting)\n        {\n            if (loadedMetadata == null)\n                throw new ArgumentNullException(nameof(loadedMetadata));\n\n            lock (_stateLock)\n            {\n                if (clearExisting)\n                    Clear();\n\n                foreach (KubeApiMetadata apiMetadata in loadedMetadata)\n                {\n                    string cacheKey = CreateCacheKey(apiMetadata.Kind, apiMetadata.ApiGroup, apiMetadata.ApiVersion);\n\n                    _metadata[cacheKey] = apiMetadata;\n\n                    // Special-case: pluralise the resource kind.\n                    string suffix = String.Empty;\n                    if (apiMetadata.Kind.EndsWith(\"y\"))\n                        suffix = \"ies\";\n                    else if (!apiMetadata.Kind.EndsWith(\"s\"))\n                        suffix = \"s\";\n\n                    cacheKey = $\"{apiMetadata.Kind}{suffix}\";\n                    if (!_metadata.ContainsKey(cacheKey))\n                        _metadata.Add(cacheKey, apiMetadata);\n\n                    // Only cache aliases from preferred API version.\n                    if (apiMetadata.IsPreferredVersion)\n                    {\n                        if (apiMetadata.SingularName != null)\n                            _metadata[apiMetadata.SingularName] = apiMetadata;\n\n                        if (apiMetadata.SingularName != null)\n                            _metadata[apiMetadata.SingularName] = apiMetadata;\n\n                        foreach (string shortName in apiMetadata.ShortNames)\n                            _metadata[shortName] = apiMetadata;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Create a cache key based on the specified resource kind and API group / version.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The Kubernetes resource kind (e.g. \"KafkaConnector\").\n        /// </param>\n        /// <param name=\"apiGroup\">\n        ///     The Kubernetes resource API group (e.g. \"strimzi.kafka.io\").\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The Kubernetes resource API version (e.g. \"v1beta2\").\n        /// </param>\n        /// <returns>\n        ///     The cache key.\n        /// </returns>\n        static string CreateCacheKey(string kind, string apiGroup, string apiVersion)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            if (!String.IsNullOrWhiteSpace(apiGroup))\n                return $\"{apiGroup}/{apiVersion}/{kind}\";\n\n            return $\"{apiVersion}/{kind}\";\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ApiMetadata/KubeApiPathMetadata.cs",
    "content": "using System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.ApiMetadata\n{\n    /// <summary>\n    ///     Metadata for a specific path in a Kubernetes resource API.\n    /// </summary>\n    public class KubeApiPathMetadata\n    {\n        /// <summary>\n        ///     Create new Kubernetes resource API path metadata.\n        /// </summary>\n        /// <param name=\"path\">\n        ///     The API path.\n        /// </param>\n        /// <param name=\"isNamespaced\">\n        ///     Is the path namespaced?\n        /// </param>\n        /// <param name=\"verbs\">\n        ///     The verbs supported on the path.\n        /// </param>\n        public KubeApiPathMetadata(string path, bool isNamespaced, IReadOnlyCollection<string> verbs)\n        {\n            if (String.IsNullOrWhiteSpace(path))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'path'.\", nameof(path));\n\n            if (verbs == null)\n                throw new ArgumentNullException(nameof(verbs));\n\n            Path = path;\n            Verbs = verbs;\n            IsNamespaced = isNamespaced;\n        }\n\n        /// <summary>\n        ///     The API path.\n        /// </summary>\n        public string Path { get; }\n\n        /// <summary>\n        ///     Is the path namespaced?\n        /// </summary>\n        public bool IsNamespaced { get; }\n\n        /// <summary>\n        ///     The verbs supported on the path.\n        /// </summary>\n        public IReadOnlyCollection<string> Verbs { get; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ApiMetadata/KubeApiVerb.cs",
    "content": "namespace KubeClient.ApiMetadata\n{\n    /// <summary>\n    ///     Well-known verbs supported by Kubernetes resource APIs.\n    /// </summary>\n    public static class KubeApiVerb\n    {\n        /// <summary>\n        ///     Create a resource.\n        /// </summary>\n        public const string Create = \"create\";\n\n        /// <summary>\n        ///     Delete a resource.\n        /// </summary>\n        public const string Delete = \"delete\";\n\n        /// <summary>\n        ///     Delete a collection of resources.\n        /// </summary>\n        public const string DeleteCollection = \"deletecollection\";\n\n        /// <summary>\n        ///     Retrieve a single resource.\n        /// </summary>\n        public const string Get = \"get\";\n\n        /// <summary>\n        ///     List resources.\n        /// </summary>\n        public const string List = \"list\";\n\n        /// <summary>\n        ///     Patch (selectively update) a resource.\n        /// </summary>\n        public const string Patch = \"patch\";\n\n        /// <summary>\n        ///     Update (replace) a resource.\n        /// </summary>\n        public const string Update = \"update\";\n\n        /// <summary>\n        ///     Watch a resource or resource collection for changes.\n        /// </summary>\n        public const string Watch = \"watch\";\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/AssemblyVisibility.cs",
    "content": "using System.Runtime.CompilerServices;\n\n[assembly: InternalsVisibleTo(\"KubeClient.Tests\")]\n[assembly: InternalsVisibleTo(\"KubeClient.Extensions.DataProtection.Tests\")]\n"
  },
  {
    "path": "src/KubeClient/ClientFactoryExtensions.cs",
    "content": "using System;\n\nnamespace KubeClient\n{\n    using ResourceClients;\n\n    /// <summary>\n    ///     Extension methods for creating Kubernetes resource clients for a <see cref=\"KubeApiClient\"/>.\n    /// </summary>\n    public static class ClientFactoryExtensions\n    {\n        /// <summary>\n        ///     Get the Kubernetes Namespaces (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static INamespaceClientV1 NamespacesV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<INamespaceClientV1>(\n                client => new NamespaceClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes ConfigMaps (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IConfigMapClientV1 ConfigMapsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IConfigMapClientV1>(\n                client => new ConfigMapClientV1(client)\n            );\n        }\n        /// <summary>\n        ///     Get the Kubernetes DaemonSets (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IDaemonSetClientV1 DaemonSetsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IDaemonSetClientV1>(\n                client => new DaemonSetClientV1(client)\n            );\n        }\n        /// <summary>\n        ///     Get the Kubernetes Deployments (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IDeploymentClientV1 DeploymentsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IDeploymentClientV1>(\n                client => new DeploymentClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Deployments (v1beta1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IDeploymentClientV1Beta1 DeploymentsV1Beta1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IDeploymentClientV1Beta1>(\n                client => new DeploymentClientV1Beta1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Jobs (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IJobClientV1 JobsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IJobClientV1>(\n                client => new JobClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Nodes (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static INodeClientV1 NodesV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<INodeClientV1>(\n                client => new NodeClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Events (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IEventClientV1 EventsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IEventClientV1>(\n                client => new EventClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Ingresses (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IIngressClientV1Beta1 IngressesV1Beta1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IIngressClientV1Beta1>(\n                client => new IngressClientV1Beta1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes PersistentVolumes (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IPersistentVolumeClientV1 PersistentVolumesV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IPersistentVolumeClientV1>(\n                client => new PersistentVolumeClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes PersistentVolumeClaims (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IPersistentVolumeClaimClientV1 PersistentVolumeClaimsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IPersistentVolumeClaimClientV1>(\n                client => new PersistentVolumeClaimClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Pods (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IPodClientV1 PodsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IPodClientV1>(\n                client => new PodClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Roles (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IRoleClientV1 RolesV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IRoleClientV1>(\n                client => new RoleClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Role Bindings (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IRoleBindingClientV1 RoleBindingsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IRoleBindingClientV1>(\n                client => new RoleBindingClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes Secrets (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static ISecretClientV1 SecretsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<ISecretClientV1>(\n                client => new SecretClientV1(client)\n            );\n        }\n        \n        /// <summary>\n        ///     Get the Kubernetes Service Accounts (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IServiceAccountClientV1 ServiceAccountsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IServiceAccountClientV1>(\n                client => new ServiceAccountClientV1(client)\n            );\n        }\n        \n        /// <summary>\n        ///     Get the Kubernetes Services (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IServiceClientV1 ServicesV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IServiceClientV1>(\n                client => new ServiceClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes ReplicationControllers (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IReplicationControllerClientV1 ReplicationControllersV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IReplicationControllerClientV1>(\n                client => new ReplicationControllerClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes ReplicaSets (v1beta1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IReplicaSetClientV1 ReplicaSetsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IReplicaSetClientV1>(\n                client => new ReplicaSetClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes APIGroups (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IAPIGroupClientV1 APIGroupsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IAPIGroupClientV1>(\n                client => new APIGroupClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes APIResources (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IAPIResourceClientV1 APIResourcesV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IAPIResourceClientV1>(\n                client => new APIResourceClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes NetworkPolicy (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static INetworkPolicyClientV1 NetworkPolicyV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<INetworkPolicyClientV1>(\n                client => new NetworkPolicyClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes StatefulSets (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IStatefulSetClientV1 StatefulSetV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IStatefulSetClientV1>(\n                client => new StatefulSetClientV1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get a client for dynamic access to Kubernetes resource APIs.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static IDynamicResourceClient Dynamic(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient<IDynamicResourceClient>(\n                client => new DynamicResourceClient(client)\n            );\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/KubeApiClient.cs",
    "content": "\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Collections.Concurrent;\nusing System.Net.Http;\nusing System.Security.Cryptography.X509Certificates;\n\nnamespace KubeClient\n{\n    using Http.Clients;\n    using ResourceClients;\n\n    /// <summary>\n    ///     Client for the Kubernetes API.\n    /// </summary>\n    public sealed class KubeApiClient\n        : IKubeApiClient, IDisposable\n    {\n        /// <summary>\n        ///     The default factory for <see cref=\"HttpClient\"/>s used by <see cref=\"KubeApiClient\"/>s.\n        /// </summary>\n        static readonly ClientBuilder HttpClientBuilder = new ClientBuilder();\n\n        /// <summary>\n        ///     The default factory for <see cref=\"HttpClient\"/>s used by <see cref=\"KubeApiClient\"/>s when using dependency injection.\n        /// </summary>\n        static readonly ClientBuilder<IServiceProvider> DependencyInjectionHttpClientBuilder = new ClientBuilder<IServiceProvider>();\n\n        /// <summary>\n        ///     Kubernetes resource clients.\n        /// </summary>\n        readonly ConcurrentDictionary<Type, IKubeResourceClient> _clients = new ConcurrentDictionary<Type, IKubeResourceClient>();\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/>.\n        /// </summary>\n        /// <param name=\"httpClient\">\n        ///     The underlying HTTP client.\n        /// </param>\n        /// <param name=\"options\">\n        ///     The <see cref=\"KubeClientOptions\"/> used to configure the <see cref=\"KubeApiClient\"/>.\n        /// </param>\n        KubeApiClient(HttpClient httpClient, KubeClientOptions options)\n        {\n            if (httpClient == null)\n                throw new ArgumentNullException(nameof(httpClient));\n\n            Http = httpClient;\n            Options = options.Clone();\n            LoggerFactory = options.LoggerFactory;\n\n            DefaultNamespace = options.KubeNamespace;\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the <see cref=\"T:KubeClient.KubeApiClient\" />.\n        /// </summary>\n        public void Dispose() => Http.Dispose();\n\n        /// <summary>\n        ///     The base address of the Kubernetes API end-point targeted by the client.\n        /// </summary>\n        public Uri ApiEndPoint => Options.ApiEndPoint;\n\n        /// <summary>\n        ///     The default Kubernetes namespace.\n        /// </summary>\n        public string DefaultNamespace { get; set; }\n\n        /// <summary>\n        ///     The underlying HTTP client.\n        /// </summary>\n        public HttpClient Http { get; }\n\n        /// <summary>\n        ///     The <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </summary>\n        public ILoggerFactory LoggerFactory { get; }\n\n        /// <summary>\n        ///     The <see cref=\"KubeClientOptions\"/> used to configure the <see cref=\"KubeApiClient\"/>.\n        /// </summary>\n        KubeClientOptions Options { get; }\n\n        /// <summary>\n        ///     Get a copy of the <see cref=\"KubeClientOptions\"/> used to configure the client.\n        /// </summary>\n        /// <returns>\n        ///     The <see cref=\"KubeClientOptions\"/>.\n        /// </returns>\n        public KubeClientOptions GetClientOptions() => Options.Clone();\n\n        /// <summary>\n        ///     Get or create a Kubernetes resource client of the specified type.\n        /// </summary>\n        /// <typeparam name=\"TClient\">\n        ///     The type of Kubernetes resource client to get or create.\n        /// </typeparam>\n        /// <param name=\"clientFactory\">\n        ///     A delegate that creates the resource client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public TClient ResourceClient<TClient>(Func<IKubeApiClient, TClient> clientFactory)\n            where TClient : IKubeResourceClient\n        {\n            if (clientFactory == null)\n                throw new ArgumentNullException(nameof(clientFactory));\n\n            return (TClient)_clients.GetOrAdd(typeof(TClient), clientType =>\n            {\n                TClient resourceClient = clientFactory(this);\n                if (resourceClient == null)\n                    throw new InvalidOperationException($\"Factory for Kubernetes resource client of type '{clientType.FullName}' returned null.\");\n\n                return (IKubeResourceClient)resourceClient;\n            });\n        }\n\n        /// <summary>\n        ///     Create and configure a <see cref=\"KubeApiClient\"/> using the specified options.\n        /// </summary>\n        /// <param name=\"options\">\n        ///     The <see cref=\"KubeClientOptions\"/> used to configure the client.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        public static KubeApiClient Create(KubeClientOptions options)\n        {\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            options.EnsureValid();\n\n            HttpClient httpClient;\n            if (options.ServiceProvider != null)\n            {\n                // TODO: services.Configure<KubeClientOptions>((serviceProvider, options) => options.ServiceProvider = serviceProvider);\n                httpClient = options.Configure(DependencyInjectionHttpClientBuilder).CreateClient(options.ServiceProvider, options.ApiEndPoint);\n            }\n            else\n                httpClient = options.Configure(HttpClientBuilder).CreateClient(options.ApiEndPoint);\n\n            return new KubeApiClient(httpClient, options);\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> without authentication.\n        /// </summary>\n        /// <param name=\"apiEndPoint\">\n        ///     The base address for the Kubernetes API end-point.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        public static KubeApiClient Create(string apiEndPoint, ILoggerFactory loggerFactory = null)\n        {\n            return Create(new Uri(apiEndPoint), loggerFactory);\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> without authentication.\n        /// </summary>\n        /// <param name=\"apiEndPoint\">\n        ///     The base address for the Kubernetes API end-point.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        public static KubeApiClient Create(Uri apiEndPoint, ILoggerFactory loggerFactory = null)\n        {\n            return Create(new KubeClientOptions\n            {\n                ApiEndPoint = apiEndPoint,\n                LoggerFactory = loggerFactory\n            });\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> using a bearer token for authentication.\n        /// </summary>\n        /// <param name=\"apiEndPoint\">\n        ///     The base address for the Kubernetes API end-point.\n        /// </param>\n        /// <param name=\"accessToken\">\n        ///     The access token to use for authentication to the API.\n        /// </param>\n        /// <param name=\"expectServerCertificate\">\n        ///     An optional server certificate to expect.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        public static KubeApiClient Create(string apiEndPoint, string accessToken, X509Certificate2 expectServerCertificate = null, ILoggerFactory loggerFactory = null)\n        {\n            return Create(new KubeClientOptions\n            {\n                ApiEndPoint = new Uri(apiEndPoint),\n                AuthStrategy = KubeAuthStrategy.BearerToken,\n                AccessToken = accessToken,\n                CertificationAuthorityCertificate = expectServerCertificate,\n                LoggerFactory = loggerFactory\n            });\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> using an X.509 certificate for client authentication.\n        /// </summary>\n        /// <param name=\"apiEndPoint\">\n        ///     The base address for the Kubernetes API end-point.\n        /// </param>\n        /// <param name=\"clientCertificate\">\n        ///     The X.509 certificate to use for client authentication.\n        /// </param>\n        /// <param name=\"expectServerCertificate\">\n        ///     An optional server certificate to expect.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        public static KubeApiClient Create(string apiEndPoint, X509Certificate2 clientCertificate, X509Certificate2 expectServerCertificate = null, ILoggerFactory loggerFactory = null)\n        {\n            return Create(new KubeClientOptions\n            {\n                ApiEndPoint = new Uri(apiEndPoint),\n                AuthStrategy = KubeAuthStrategy.ClientCertificate,\n                ClientCertificate = clientCertificate,\n                CertificationAuthorityCertificate = expectServerCertificate,\n                LoggerFactory = loggerFactory\n            });\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> using pod-level configuration.\n        /// </summary>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        /// <remarks>\n        ///     Only works from within a container running in a Kubernetes Pod.\n        /// </remarks>\n        public static KubeApiClient CreateFromPodServiceAccount(ILoggerFactory loggerFactory = null)\n        {\n            KubeClientOptions clientOptions = KubeClientOptions.FromPodServiceAccount();\n            clientOptions.LoggerFactory = loggerFactory;\n\n            return Create(clientOptions);\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> that uses the specified <see cref=\"HttpClient\"/> (for testing purposes only).\n        /// </summary>\n        /// <param name=\"httpClient\">\n        ///     The <see cref=\"HttpClient\"/> used to communicate with the Kubernetes API.\n        /// </param>\n        /// <param name=\"options\">\n        ///     The <see cref=\"KubeClientOptions\"/> used to configure the <see cref=\"KubeApiClient\"/>.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        public static KubeApiClient CreateTestClient(HttpClient httpClient, KubeClientOptions options)\n        {\n            if (httpClient == null)\n                throw new ArgumentNullException(nameof(httpClient));\n\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            if (httpClient.BaseAddress == null)\n                throw new ArgumentException(\"The KubeApiClient's underlying HttpClient must specify a base address.\", nameof(httpClient));\n\n            options.EnsureValid();\n\n            return new KubeApiClient(httpClient, options);\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/KubeApiClientLoggingExtensions.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\n\nnamespace KubeClient\n{\n    /// <summary>\n    ///     Logging-related extension methods for <see cref=\"KubeApiClient\"/>.\n    /// </summary>\n    public static class KubeApiClientLoggingExtensions\n    {\n        /// <summary>\n        ///     Get the <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </summary>\n        /// <param name=\"kubeApiClient\">\n        ///     The <see cref=\"KubeApiClient\"/>.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"ILoggerFactory\"/>.\n        /// </returns>\n        public static ILoggerFactory LoggerFactory(this KubeApiClient kubeApiClient)\n        {\n            if (kubeApiClient == null)\n                throw new ArgumentNullException(nameof(kubeApiClient));\n            \n            return kubeApiClient.LoggerFactory;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/KubeApiException.cs",
    "content": "\nusing System;\n\nnamespace KubeClient\n{\n    using KubeClient.Http;\n    using Models;\n\n    /// <summary>\n    ///     Exception raised when an error result is returned by the Kubernetes API.\n    /// </summary>\n    public class KubeApiException\n        : KubeClientException\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiException\"/> using the information contained in a Kubernetes status model.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The Kubernetes <see ref=\"StatusV1\"/> model.\n        /// </param>\n        public KubeApiException(StatusV1 status)\n            : base(GetExceptionMessage(status))\n        {\n            Status = status;\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiException\"/> using the information contained in a Kubernetes status model.\n        /// </summary>\n        /// <param name=\"message\">\n        ///     The exception message.\n        /// </param>\n        /// <param name=\"status\">\n        ///     The Kubernetes <see ref=\"StatusV1\"/> model.\n        /// </param>\n        public KubeApiException(string message, StatusV1 status)\n            : base(message + Environment.NewLine + GetExceptionMessage(status))\n        {\n            Status = status;\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiException\"/> using the information contained in a Kubernetes status model.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The Kubernetes <see ref=\"StatusV1\"/> model.\n        /// </param>\n        /// <param name=\"innerException\">\n        ///     The exception that caused the current exception to be raised.\n        /// </param>\n        public KubeApiException(StatusV1 status, Exception innerException)\n            : base(GetExceptionMessage(status), innerException)\n        {\n            if (innerException == null)\n                throw new ArgumentNullException(nameof(innerException));\n\n            Status = status;\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiException\"/> with the specified message.\n        /// </summary>\n        /// <param name=\"message\">\n        ///     The exception message.\n        /// </param>\n        /// <param name=\"innerException\">\n        ///     The exception that caused the current exception to be raised.\n        /// </param>\n        public KubeApiException(string message, HttpRequestException<StatusV1> innerException)\n            : base(message + Environment.NewLine + GetExceptionMessage(innerException?.Response), innerException)\n        {\n            if (String.IsNullOrWhiteSpace(message))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'message'.\", nameof(message));\n            \n            if (innerException == null)\n                throw new ArgumentNullException(nameof(innerException));\n\n            Status = innerException.Response;\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiException\"/> from an <see cref=\"HttpRequestException{TResponse}\"/>.\n        /// </summary>\n        /// <param name=\"requestException\">\n        ///     The exception that caused the current exception to be raised.\n        /// </param>\n        public KubeApiException(HttpRequestException<StatusV1> requestException)\n            : base(GetExceptionMessage(requestException?.Response), innerException: requestException)\n        {\n            if (requestException == null)\n                throw new ArgumentNullException(nameof(requestException));\n\n            Status = requestException.Response;\n        }\n\n        /// <summary>\n        ///     A Kubernetes <see cref=\"StatusV1\"/> model that (if present) contains more information about the error.\n        /// </summary>\n        public StatusV1 Status { get; protected set; }\n\n        /// <summary>\n        ///     Does the exception have a <see cref=\"Status\"/> model available?\n        /// </summary>\n        public bool HasStatus => Status != null;\n\n        /// <summary>\n        ///     The Kubernetes reason code (if available from <see cref=\"Status\"/>).\n        /// </summary>\n        public string StatusReason => Status?.Reason;\n\n        /// <summary>\n        ///     The Kubernetes error message (if available from <see cref=\"Status\"/>).\n        /// </summary>\n        public string StatusMessage => Status?.Message;\n\n        /// <summary>\n        ///     Generate an exception message from a Kubernetes status model.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The Kubernetes <see cref=\"StatusV1\"/> model.\n        /// </param>\n        /// <returns>\n        ///     The exception message.\n        /// </returns>\n        protected static string GetExceptionMessage(StatusV1 status)\n        {\n            if (status == null)\n                return DefaultMessage;\n\n            if (!String.IsNullOrWhiteSpace(status.Reason))\n                return $\"{status.Reason}: {status.Message}\";\n\n            if (!String.IsNullOrWhiteSpace(status.Message))\n                return status.Message;\n\n            return DefaultMessage;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/KubeClient.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n\n    <Description>A Kubernetes API client for .NET</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n    <PackageReference Include=\"System.Collections.Immutable\" Version=\"7.0.0\" />\n    <PackageReference Include=\"System.Diagnostics.Process\" Version=\"4.3.0\" />\n    <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n    <PackageReference Include=\"YamlDotNet\" Version=\"16.1.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'netstandard2.1'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient.Core/KubeClient.Core.csproj\" />\n    <ProjectReference Include=\"../KubeClient.Http/KubeClient.Http.csproj\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient/KubeClientOptionsExtensions.cs",
    "content": "﻿using KubeClient.MessageHandlers;\nusing System;\n\nnamespace KubeClient\n{\n    using Http.Clients;\n    using Http.Diagnostics;\n\n    /// <summary>\n    ///     Extension methods for <see cref=\"KubeClientOptions\"/>.\n    /// </summary>\n    public static class KubeClientOptionsExtensions\n    {\n        /// <summary>\n        ///     Configure a <see cref=\"ClientBuilder\"/> from <see cref=\"KubeClientOptions\"/>.\n        /// </summary>\n        /// <param name=\"kubeClientOptions\">\n        ///     The <see cref=\"KubeClientOptions\"/> used to configure the client.\n        /// </param>\n        /// <param name=\"clientBuilder\">\n        ///     The <see cref=\"ClientBuilder\"/> to configure.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"ClientBuilder\"/>.\n        /// </returns>\n        public static ClientBuilder Configure(this KubeClientOptions kubeClientOptions, ClientBuilder clientBuilder)\n        {\n            if (kubeClientOptions == null)\n                throw new ArgumentNullException(nameof(kubeClientOptions));\n\n            if (clientBuilder == null)\n                throw new ArgumentNullException(nameof(clientBuilder));\n\n            kubeClientOptions.EnsureValid();\n\n            switch (kubeClientOptions.AuthStrategy)\n            {\n                case KubeAuthStrategy.Basic:\n                {\n                    clientBuilder = clientBuilder.AddHandler(\n                        () => new BasicAuthenticationHandler(kubeClientOptions.Username, kubeClientOptions.Password)\n                    );\n\n                    break;\n                }\n                case KubeAuthStrategy.BearerToken:\n                {\n                    clientBuilder = clientBuilder.AddHandler(\n                        () => new StaticBearerTokenHandler(kubeClientOptions.AccessToken)\n                    );\n\n                    break;\n                }\n                case KubeAuthStrategy.BearerTokenProvider:\n                {\n                    clientBuilder = clientBuilder.AddHandler(\n                        () => new CommandBearerTokenHandler(\n                            accessTokenCommand: kubeClientOptions.AccessTokenCommand,\n                            accessTokenCommandArguments: kubeClientOptions.AccessTokenCommandArguments,\n                            accessTokenSelector: kubeClientOptions.AccessTokenSelector,\n                            accessTokenExpirySelector: kubeClientOptions.AccessTokenExpirySelector,\n                            initialAccessToken: kubeClientOptions.InitialAccessToken,\n                            initialTokenExpiryUtc: kubeClientOptions.InitialTokenExpiryUtc,\n                            environmentVariables: kubeClientOptions.EnvironmentVariables\n                        )\n                    );\n\n                    break;\n                }\n                case KubeAuthStrategy.CredentialPlugin:\n                {\n                    clientBuilder = clientBuilder.AddHandler(\n                        () => new CommandBearerTokenHandler(\n                            accessTokenCommand: kubeClientOptions.AccessTokenCommand,\n                            accessTokenCommandArguments: kubeClientOptions.AccessTokenCommandArguments,\n                            accessTokenSelector: kubeClientOptions.AccessTokenSelector ?? \".status.token\",\n                            accessTokenExpirySelector: kubeClientOptions.AccessTokenExpirySelector ?? \".status.expirationTimestamp\",\n                            initialAccessToken: kubeClientOptions.InitialAccessToken,\n                            initialTokenExpiryUtc: kubeClientOptions.InitialTokenExpiryUtc,\n                            environmentVariables: kubeClientOptions.EnvironmentVariables\n                        )\n                    );\n\n                    break;\n                }\n                case KubeAuthStrategy.ClientCertificate:\n                {\n                    if (kubeClientOptions.ClientCertificate == null)\n                        throw new KubeClientException(\"Cannot specify ClientCertificate authentication strategy without supplying a client certificate.\");\n\n                    clientBuilder = clientBuilder.WithClientCertificate(kubeClientOptions.ClientCertificate);\n\n                    break;\n                }\n            }\n\n            if (kubeClientOptions.AllowInsecure)\n                clientBuilder = clientBuilder.AcceptAnyServerCertificate();\n            else if (kubeClientOptions.CertificationAuthorityCertificate != null)\n                clientBuilder = clientBuilder.WithServerCertificate(kubeClientOptions.CertificationAuthorityCertificate);\n\n            LogMessageComponents logComponents = LogMessageComponents.Basic;\n            if (kubeClientOptions.LogHeaders)\n                logComponents |= LogMessageComponents.Headers;\n            if (kubeClientOptions.LogPayloads)\n                logComponents |= LogMessageComponents.Body;\n\n            clientBuilder = clientBuilder.WithLogging(\n                logger: kubeClientOptions.LoggerFactory.CreateLogger(\n                    typeof(KubeApiClient).FullName + \".Http\"\n                ),\n                requestComponents: logComponents,\n                responseComponents: logComponents\n            );\n\n            return clientBuilder;\n        }\n\n        /// <summary>\n        ///     Configure a <see cref=\"ClientBuilder{TContext}\"/> from <see cref=\"KubeClientOptions\"/>.\n        /// </summary>\n        /// <param name=\"kubeClientOptions\">\n        ///     The <see cref=\"KubeClientOptions\"/> used to configure the client.\n        /// </param>\n        /// <param name=\"clientBuilder\">\n        ///     The <see cref=\"ClientBuilder{TContext}\"/> to configure.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"ClientBuilder{TContext}\"/>.\n        /// </returns>\n        public static ClientBuilder<TContext> Configure<TContext>(this KubeClientOptions kubeClientOptions, ClientBuilder<TContext> clientBuilder)\n        {\n            if (kubeClientOptions == null)\n                throw new ArgumentNullException(nameof(kubeClientOptions));\n\n            if (clientBuilder == null)\n                throw new ArgumentNullException(nameof(clientBuilder));\n\n            kubeClientOptions.EnsureValid();\n\n            switch (kubeClientOptions.AuthStrategy)\n            {\n                case KubeAuthStrategy.Basic:\n                {\n                    clientBuilder = clientBuilder.AddHandler(\n                        context => new BasicAuthenticationHandler(kubeClientOptions.Username, kubeClientOptions.Password)\n                    );\n\n                    break;\n                }\n                case KubeAuthStrategy.BearerToken:\n                {\n                    clientBuilder = clientBuilder.AddHandler(\n                        context => new StaticBearerTokenHandler(kubeClientOptions.AccessToken)\n                    );\n\n                    break;\n                }\n                case KubeAuthStrategy.BearerTokenProvider:\n                {\n                    clientBuilder = clientBuilder.AddHandler(\n                        context => new CommandBearerTokenHandler(\n                            accessTokenCommand: kubeClientOptions.AccessTokenCommand,\n                            accessTokenCommandArguments: kubeClientOptions.AccessTokenCommandArguments,\n                            accessTokenSelector: kubeClientOptions.AccessTokenSelector,\n                            accessTokenExpirySelector: kubeClientOptions.AccessTokenExpirySelector,\n                            initialAccessToken: kubeClientOptions.InitialAccessToken,\n                            initialTokenExpiryUtc: kubeClientOptions.InitialTokenExpiryUtc,\n                            environmentVariables: kubeClientOptions.EnvironmentVariables\n                        )\n                    );\n\n                    break;\n                }\n                case KubeAuthStrategy.CredentialPlugin:\n                {\n                    clientBuilder = clientBuilder.AddHandler(\n                        context => new CommandBearerTokenHandler(\n                            accessTokenCommand: kubeClientOptions.AccessTokenCommand,\n                            accessTokenCommandArguments: kubeClientOptions.AccessTokenCommandArguments,\n                            accessTokenSelector: kubeClientOptions.AccessTokenSelector ?? \".status.token\",\n                            accessTokenExpirySelector: kubeClientOptions.AccessTokenExpirySelector ?? \".status.expirationTimestamp\",\n                            initialAccessToken: kubeClientOptions.InitialAccessToken,\n                            initialTokenExpiryUtc: kubeClientOptions.InitialTokenExpiryUtc,\n                            environmentVariables: kubeClientOptions.EnvironmentVariables\n                        )\n                    );\n\n                    break;\n                }\n                case KubeAuthStrategy.ClientCertificate:\n                {\n                    if (kubeClientOptions.ClientCertificate == null)\n                        throw new KubeClientException(\"Cannot specify ClientCertificate authentication strategy without supplying a client certificate.\");\n\n                    clientBuilder = clientBuilder.WithClientCertificate(kubeClientOptions.ClientCertificate);\n\n                    break;\n                }\n            }\n\n            if (kubeClientOptions.AllowInsecure)\n                clientBuilder = clientBuilder.AcceptAnyServerCertificate();\n            else if (kubeClientOptions.CertificationAuthorityCertificate != null)\n                clientBuilder = clientBuilder.WithServerCertificate(kubeClientOptions.CertificationAuthorityCertificate);\n\n            LogMessageComponents logComponents = LogMessageComponents.Basic;\n            if (kubeClientOptions.LogHeaders)\n                logComponents |= LogMessageComponents.Headers;\n            if (kubeClientOptions.LogPayloads)\n                logComponents |= LogMessageComponents.Body;\n\n            clientBuilder = clientBuilder.WithLogging(\n                logger: kubeClientOptions.LoggerFactory.CreateLogger(\n                    typeof(KubeApiClient).FullName + \".Http\"\n                ),\n                requestComponents: logComponents,\n                responseComponents: logComponents\n            );\n\n            return clientBuilder;\n        }\n\n        /// <summary>\n        ///     Determine if Kubernetes client options are configured to use the default (no-op) logger factory (<see cref=\"KubeClientOptions.DefaultLoggerFactory\"/>).\n        /// </summary>\n        /// <param name=\"kubeClientOptions\">\n        ///     The <see cref=\"KubeClientOptions\"/> to examine.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the options are configured to use the default logger factory; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool IsUsingDefaultLoggerFactory(this KubeClientOptions kubeClientOptions)\n        {\n            if (kubeClientOptions == null)\n                throw new ArgumentNullException(nameof(kubeClientOptions));\n\n            return ReferenceEquals(kubeClientOptions.LoggerFactory, KubeClientOptions.DefaultLoggerFactory);\n        }\n\n        /// <summary>\n        ///     Configure Kubernetes client options to use the default (no-op) logger factory (<see cref=\"KubeClientOptions.DefaultLoggerFactory\"/>).\n        /// </summary>\n        /// <param name=\"kubeClientOptions\">\n        ///     The <see cref=\"KubeClientOptions\"/> to configure.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeClientOptions\"/>.\n        /// </returns>\n        public static KubeClientOptions UseDefaultLoggerFactory(this KubeClientOptions kubeClientOptions)\n        {\n            if (kubeClientOptions == null)\n                throw new ArgumentNullException(nameof(kubeClientOptions));\n\n            kubeClientOptions.LoggerFactory = KubeClientOptions.DefaultLoggerFactory;\n\n            return kubeClientOptions;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/KubeResourceUpdateExtensions.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient\n{\n    using Models;\n    using ResourceClients;\n\n    /// <summary>\n    ///     Extension methods for updating Kubernetes resources.\n    /// </summary>\n    public static class KubeResourceUpdateExtensions\n    {\n        /// <summary>\n        ///     Update the specified ConfigMap.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The <see cref=\"ConfigMapV1\"/> resource client.\n        /// </param>\n        /// <param name=\"configMap\">\n        ///     A <see cref=\"ConfigMapV1\"/> representing the new state for the ConfigMap.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapV1\"/> representing the updated ConfigMap.\n        /// </returns>\n        /// <remarks>\n        ///     Updates all mutable fields (if specified on <paramref name=\"configMap\"/>).\n        /// </remarks>\n        public static Task<ConfigMapV1> Update(this ConfigMapClientV1 client, ConfigMapV1 configMap, CancellationToken cancellationToken = default)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (String.IsNullOrWhiteSpace(configMap?.Metadata?.Name))\n                throw new ArgumentException(\"Cannot update a ConfigMap if its metadata does not specify a name.\", nameof(configMap));\n\n            if (String.IsNullOrWhiteSpace(configMap?.Metadata?.Namespace))\n                throw new ArgumentException(\"Cannot update a ConfigMap if its metadata does not specify a namespace.\", nameof(configMap));\n            \n            return client.Update(\n                name: configMap.Metadata.Name,\n                kubeNamespace: configMap.Metadata.Namespace,\n                patchAction: patch =>\n                {\n                    if (configMap.Metadata.Labels != null)\n                    {\n                        patch.Replace(patchConfigMap => patchConfigMap.Metadata.Labels,\n                            value: configMap.Metadata.Labels\n                        );\n                    }\n\n                    if (configMap.Metadata.Annotations != null)\n                    {\n                        patch.Replace(patchConfigMap => patchConfigMap.Metadata.Annotations,\n                            value: configMap.Metadata.Annotations\n                        );\n                    }\n\n                    if (configMap.Data != null)\n                    {\n                        patch.Replace(patchConfigMap => patchConfigMap.Data,\n                            value: configMap.Data\n                        );\n                    }\n                },\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Update the specified Secret.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The <see cref=\"SecretV1\"/> resource client.\n        /// </param>\n        /// <param name=\"secret\">\n        ///     A <see cref=\"SecretV1\"/> representing the new state for the Secret.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretV1\"/> representing the updated Secret.\n        /// </returns>\n        /// <remarks>\n        ///     Updates all mutable fields (if specified on <paramref name=\"secret\"/>).\n        /// </remarks>\n        public static Task<SecretV1> Update(this SecretClientV1 client, SecretV1 secret, CancellationToken cancellationToken = default)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (String.IsNullOrWhiteSpace(secret?.Metadata?.Name))\n                throw new ArgumentException(\"Cannot update a Secret if its metadata does not specify a name.\", nameof(secret));\n\n            if (String.IsNullOrWhiteSpace(secret?.Metadata?.Namespace))\n                throw new ArgumentException(\"Cannot update a Secret if its metadata does not specify a namespace.\", nameof(secret));\n            \n            return client.Update(\n                name: secret.Metadata.Name,\n                kubeNamespace: secret.Metadata.Namespace,\n                patchAction: patch =>\n                {\n                    if (secret.Metadata.Labels != null)\n                    {\n                        patch.Replace(patchSecret => patchSecret.Metadata.Labels,\n                            value: secret.Metadata.Labels\n                        );\n                    }\n\n                    if (secret.Metadata.Annotations != null)\n                    {\n                        patch.Replace(patchSecret => patchSecret.Metadata.Annotations,\n                            value: secret.Metadata.Annotations\n                        );\n                    }\n\n                    if (secret.Data != null)\n                    {\n                        patch.Replace(patchSecret => patchSecret.Data,\n                            value: secret.Data\n                        );\n                    }\n                },\n                cancellationToken: cancellationToken\n            );\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/MessageHandlers/BasicAuthenticationHandler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.MessageHandlers\n{\n    /// <summary>\n    /// Basic Authentication Handler for username/password authentication.\n    /// </summary>\n    public class BasicAuthenticationHandler : DelegatingHandler\n    {\n        readonly string _encoded;\n\n        /// <summary>\n        /// Create a new <see cref=\"BasicAuthenticationHandler\"/>.\n        /// </summary>\n        /// <param name=\"username\">The username to use</param>\n        /// <param name=\"password\">The password to use</param>\n        public BasicAuthenticationHandler(string username, string password)\n        {\n            if(String.IsNullOrEmpty(username))\n                throw new ArgumentNullException(nameof(username));\n            if(String.IsNullOrEmpty(password))\n                throw new ArgumentNullException(nameof(password));\n\n            _encoded = Convert.ToBase64String(Encoding.ASCII.GetBytes(username + \":\" + password));\n        }\n\n        /// <inheritdoc />\n        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n        {\n            request.Headers.Authorization = new AuthenticationHeaderValue(\"Basic\", _encoded);\n            return base.SendAsync(request, cancellationToken);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/MessageHandlers/BearerTokenHandler.cs",
    "content": "using System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.MessageHandlers\n{\n    /// <summary>\n    ///     The base class for HTTP message handlers that add a bearer token to outgoing requests.\n    /// </summary>\n    public abstract class BearerTokenHandler\n        : DelegatingHandler\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"BearerTokenHandler\"/>.\n        /// </summary>\n        protected BearerTokenHandler()\n        {\n        }\n\n        /// <summary>\n        ///     Obtain a bearer token to use for authentication.\n        /// </summary>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     The access token.\n        /// </returns>\n        protected abstract Task<string> GetTokenAsync(CancellationToken cancellationToken);\n\n        /// <summary>\n        ///     Asynchronously process an HTTP request.\n        /// </summary>\n        /// <param name=\"request\">\n        ///     The outgoing request message.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     The incoming response message.\n        /// </returns>\n        protected sealed override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n            \n            string token = await GetTokenAsync(cancellationToken).ConfigureAwait(false);\n\n            request.Headers.Authorization = new AuthenticationHeaderValue(scheme: \"Bearer\", parameter: token);\n\n            return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/MessageHandlers/CommandBearerTokenHandler.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing KubeClient.Utilities;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\n\nnamespace KubeClient.MessageHandlers\n{\n    /// <summary>\n    ///     HTTP message handler that runs a command to obtain a bearer token and adds it to outgoing requests.\n    /// </summary>\n    public class CommandBearerTokenHandler\n        : BearerTokenHandler\n    {\n        /// <summary>\n        ///     An object used to synchronise access to handler state.\n        /// </summary>\n        readonly object _stateLock = new object();\n\n        /// <summary>\n        ///     The command to execute in order to obtain the access token for outgoing requests.\n        /// </summary>\n        readonly string _accessTokenCommand;\n\n        /// <summary>\n        ///     The arguments (if any) for the access-token command.\n        /// </summary>\n        readonly string _accessTokenCommandArguments;\n\n        /// <summary>\n        ///     The JPath-style selector used to retrieve the access token from the command output.\n        /// </summary>\n        readonly string _accessTokenSelector;\n\n        /// <summary>\n        ///     The JPath-style selector used to retrieve the access token's expiry date/time from the command output.\n        /// </summary>\n        readonly string _accessTokenExpirySelector;\n\n        /// <summary>\n        ///     The current access token (if any).\n        /// </summary>\n        string _accessToken;\n\n        /// <summary>\n        ///     The UTC date/time that the access token expires.\n        /// </summary>\n        DateTime? _accessTokenExpiresUtc;\n\n        /// <summary>\n        ///     Environment variables assigned to the executed command\n        /// </summary>\n        private readonly Dictionary<string, string> _environmentVariables;\n\n        /// <summary>\n        ///     Create a new <see cref=\"CommandBearerTokenHandler\"/>.\n        /// </summary>\n        /// <param name=\"accessTokenCommand\">\n        ///     The command to execute in order to obtain the access token for outgoing requests.\n        /// </param>\n        /// <param name=\"accessTokenCommandArguments\">\n        ///     The arguments (if any) for the access-token command.\n        /// </param>\n        /// <param name=\"accessTokenSelector\">\n        ///     The Go-style selector used to retrieve the access token from the command output.\n        /// </param>\n        /// <param name=\"accessTokenExpirySelector\">\n        ///     The Go-style selector used to retrieve the access token's expiry date/time from the command output.\n        /// </param>\n        /// <param name=\"initialAccessToken\">\n        ///     The initial access token (if any) to use for authentication.\n        /// </param>\n        /// <param name=\"initialTokenExpiryUtc\">\n        ///     The UTC date / time the the initial access token (if any) expires.\n        /// </param>\n        /// <param name=\"environmentVariables\">\n        ///     Environment variables assigned to the executed command\n        /// </param>\n        public CommandBearerTokenHandler(string accessTokenCommand, string accessTokenCommandArguments, string accessTokenSelector, string accessTokenExpirySelector, string initialAccessToken = null, DateTime? initialTokenExpiryUtc = null, Dictionary<string, string> environmentVariables = null)\n        {\n            if (String.IsNullOrWhiteSpace(accessTokenCommand))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'accessTokenCommand'.\", nameof(accessTokenCommand));\n\n            if (String.IsNullOrWhiteSpace(accessTokenSelector))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'accessTokenSelector'.\", nameof(accessTokenSelector));\n            \n            if (String.IsNullOrWhiteSpace(accessTokenExpirySelector))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'accessTokenExpirySelector'.\", nameof(accessTokenExpirySelector));\n            \n            _accessTokenCommand = accessTokenCommand;\n            _accessTokenCommandArguments = accessTokenCommandArguments ?? String.Empty;\n            _accessTokenSelector = JPathFromGoSelector(accessTokenSelector);\n            _accessTokenExpirySelector = JPathFromGoSelector(accessTokenExpirySelector);\n\n            if (!String.IsNullOrWhiteSpace(initialAccessToken))\n                _accessToken = initialAccessToken;\n\n            _accessTokenExpiresUtc = initialTokenExpiryUtc;\n            _environmentVariables = environmentVariables;\n        }\n\n        /// <summary>\n        ///     Obtain a bearer token to use for authentication.\n        /// </summary>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     The access token.\n        /// </returns>\n        protected override async Task<string> GetTokenAsync(CancellationToken cancellationToken)\n        {\n            string accessToken;\n            DateTime? accessTokenExpiresUtc;\n\n            // Capture snapshot of access token / expiry.\n            lock (_stateLock)\n            {\n                accessToken = _accessToken;\n                accessTokenExpiresUtc = _accessTokenExpiresUtc;\n            }\n\n            if (!String.IsNullOrWhiteSpace(accessToken) && accessTokenExpiresUtc > DateTime.UtcNow)\n                return accessToken;\n\n            cancellationToken.ThrowIfCancellationRequested();\n\n            ProcessStartInfo accessTokenCommandInfo = new ProcessStartInfo(_accessTokenCommand, _accessTokenCommandArguments)\n            {\n                CreateNoWindow = true,\n                RedirectStandardOutput = true,\n                RedirectStandardError = true,\n                UseShellExecute = false,\n            };\n            if (_environmentVariables?.Count > 0)\n                foreach (var environmentVariable in _environmentVariables)\n                    accessTokenCommandInfo.Environment.Add(environmentVariable.Key, environmentVariable.Value);\n\n            using (Process accessTokenCommand = Process.Start(accessTokenCommandInfo))\n            {\n                int exitCode = await accessTokenCommand.WaitForExitAsync(cancellationToken, killIfCancelled: true);\n                if (exitCode != 0)\n                {\n                    // We omit the command's STDOUT / STDERR from this exception message because they may contain sensitive information!\n\n                    throw new KubeClientException(\n                        $\"Failed to execute access-token command '{_accessTokenCommand} {_accessTokenCommandArguments}' (process exited with code {exitCode}).\"\n                    );\n                }\n\n                string standardOutput = await accessTokenCommand.StandardOutput.ReadToEndAsync().ConfigureAwait(false);\n                cancellationToken.ThrowIfCancellationRequested();\n\n                // Ensure command output is JSON\n                JObject outputJson;\n                try\n                {\n                    outputJson = JObject.Parse(standardOutput);\n                }\n                catch (JsonReaderException invalidJson)\n                {\n                    throw new KubeClientException($\"Failed to parse output of access-token command '{_accessTokenCommand} {_accessTokenCommandArguments}' (not valid JSON).\",\n                        innerException: invalidJson\n                    );\n                }\n\n                accessToken = outputJson.SelectToken(_accessTokenSelector)?.Value<string>();\n                if (accessToken == null)\n                {\n                    throw new KubeClientException(\n                        $\"Failed to find access-token in output of command '{_accessTokenCommand} {_accessTokenCommandArguments}' using JPath selector '{_accessTokenSelector}'.\"\n                            + Environment.NewLine\n                            + standardOutput\n                    );\n                }\n\n                string accessTokenExpiresUtcValue = outputJson.SelectToken(_accessTokenExpirySelector)?.Value<string>();\n                if (accessTokenExpiresUtcValue == null)\n                {\n                    throw new KubeClientException(\n                        $\"Failed to find access-token lifetime in output of command '{_accessTokenCommand} {_accessTokenCommandArguments}' using JPath selector '{_accessTokenExpirySelector}'.\"\n                            + Environment.NewLine\n                            + standardOutput\n                    );\n                }\n\n                accessTokenExpiresUtc = ConvertAccessTokenExpiresUtc(accessTokenExpiresUtcValue);\n\n                // OK, both access token and expiry are good; update atomically.\n                lock (_stateLock)\n                {\n                    _accessToken = accessToken;\n                    _accessTokenExpiresUtc = accessTokenExpiresUtc;\n                }\n\n                return accessToken;\n            }\n        }\n\n        private static DateTime ConvertAccessTokenExpiresUtc(string accessTokenExpiresUtcValue)\n        {\n            return DateTime.Parse(accessTokenExpiresUtcValue,\n                provider: CultureInfo.InvariantCulture,\n                styles: DateTimeStyles.AssumeUniversal\n            );\n        }\n\n        /// <summary>\n        ///     Convert a Go-style selector to a JPath-style selector.\n        /// </summary>\n        /// <param name=\"goSelector\">\n        ///     The Go-style selector (e.g. \"{.foo.bar}\").\n        /// </param>\n        /// <returns>\n        ///     The JPath-style selector (e.g. \"$.foo.bar\").\n        /// </returns>\n        static string JPathFromGoSelector(string goSelector)\n        {\n            if (String.IsNullOrWhiteSpace(goSelector))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'goSelector'.\", nameof(goSelector));\n\n            string jpathSelector = goSelector;\n            \n            if (jpathSelector[0] == '{' && jpathSelector[jpathSelector.Length - 1] == '}')\n                jpathSelector = jpathSelector.Substring(1, jpathSelector.Length - 2);\n            \n            if (jpathSelector[0] == '.')\n                jpathSelector = '$' + jpathSelector;\n\n            return jpathSelector;\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/MessageHandlers/StaticBearerTokenHandler.cs",
    "content": "using System;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.MessageHandlers\n{\n    /// <summary>\n    ///     HTTP message handler that adds a bearer token to outgoing requests.\n    /// </summary>\n    public class StaticBearerTokenHandler\n        : BearerTokenHandler\n    {\n        /// <summary>\n        ///     The bearer token added to outgoing requests.\n        /// </summary>\n        readonly string _token;\n\n        /// <summary>\n        ///     Create a new <see cref=\"StaticBearerTokenHandler\"/>.\n        /// </summary>\n        /// <param name=\"token\">\n        ///     The bearer token added to outgoing requests.\n        /// </param>\n        public StaticBearerTokenHandler(string token)\n        {\n            if (String.IsNullOrWhiteSpace(token))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'token'.\", nameof(token));\n            \n            _token = token;\n        }\n\n        /// <summary>\n        ///     Obtain a bearer token to use for authentication.\n        /// </summary>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     The access token.\n        /// </returns>\n        protected override Task<string> GetTokenAsync(CancellationToken cancellationToken) => Task.FromResult(_token);\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/ContractResolvers/KubeContractResolver.cs",
    "content": "﻿using Newtonsoft.Json.Serialization;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace KubeClient.Models.ContractResolvers\n{\n    /// <summary>\n    ///     JSON contract resolver for K8s models.\n    /// </summary>\n    /// <remarks>\n    ///     Preserves casing of dictionary keys, but all other keys are converted to camelCase.\n    /// </remarks>\n    public class KubeContractResolver\n        : CamelCasePropertyNamesContractResolver\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeContractResolver\"/>.\n        /// </summary>\n        public KubeContractResolver()\n        { \n        }\n\n        /// <summary>\n        /// Get the JSON property name used to represent a dictionary key.\n        /// </summary>\n        /// <param name=\"dictionaryKey\">The dictionary key.</param>\n        /// <returns>The JSON property name.</returns>\n        protected override string ResolveDictionaryKey(string dictionaryKey) => dictionaryKey;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/Converters/DynamicKubeObjectV1Converter.cs",
    "content": "using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Collections.Generic;\nusing System.Reflection;\n\nnamespace KubeClient.Models.Converters\n{\n    /// <summary>\n    ///     Dynamic JSON converter for types derived from <see cref=\"KubeObjectV1\"/>.\n    /// </summary>\n    public class DynamicKubeObjectConverter\n        : JsonConverter\n    {\n        /// <summary>\n        /// The CLR <see cref=\"Type\"/> representing <see cref=\"KubeObjectV1\"/>.\n        /// </summary>\n        static readonly TypeInfo KubeObjectV1Type = typeof(KubeObjectV1).GetTypeInfo();\n\n        /// <summary>\n        /// Registered model types, keyed by K8s kind and apiVersion.\n        /// </summary>\n        readonly Dictionary<(string kind, string apiVersion), Type> _modelTypesByKubeKind;\n\n        /// <summary>\n        /// Create a new <see cref=\"DynamicKubeObjectConverter\"/>.\n        /// </summary>\n        /// <param name=\"modelTypeAssemblies\">Assemblies containing model types supported for deserialisation.</param>\n        public DynamicKubeObjectConverter(params Assembly[] modelTypeAssemblies)\n            : this((IEnumerable<Assembly>)modelTypeAssemblies)\n        {\n        }\n\n        /// <summary>\n        /// Create a new <see cref=\"DynamicKubeObjectConverter\"/>.\n        /// </summary>\n        /// <param name=\"modelTypeAssemblies\">Assemblies containing model types supported for deserialisation.</param>\n        public DynamicKubeObjectConverter(IEnumerable<Assembly> modelTypeAssemblies)\n        {\n            if (modelTypeAssemblies == null)\n                throw new ArgumentNullException(nameof(modelTypeAssemblies));\n            \n            _modelTypesByKubeKind = ModelMetadata.KubeObject.BuildKindToTypeLookup(modelTypeAssemblies);\n\n            var listModelTypesByKubeKind = ModelMetadata.KubeObject.BuildKindToListTypeLookup(modelTypeAssemblies);\n            foreach (var kubeKind in listModelTypesByKubeKind.Keys)\n                _modelTypesByKubeKind[kubeKind] = listModelTypesByKubeKind[kubeKind];\n        }\n\n        /// <summary>\n        ///     Determine wither the converter can convert an object of the specified type to / from JSON.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the converter can convert an object of the specified type; otherwise, <c>false</c>.\n        /// </returns>\n        public override bool CanConvert(Type objectType)\n        {\n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            return KubeObjectV1Type.IsAssignableFrom(\n                objectType.GetTypeInfo()\n            );\n        }\n\n        /// <summary>\n        /// This converter only supports deserialisation (not serialisation).\n        /// </summary>\n        public override bool CanWrite => false;\n\n        /// <summary>\n        ///     Read (deserialise) an object from JSON.\n        /// </summary>\n        /// <param name=\"reader\">\n        ///     A <see cref=\"JsonReader\"/> representing the JSON to read from.\n        /// </param>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <param name=\"existingValue\">\n        ///     The existing value (unused).\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested deserialisation.\n        /// </param>\n        /// <returns>\n        ///     The deserialised object.\n        /// </returns>\n        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)\n        {\n            if (reader == null)\n                throw new ArgumentNullException(nameof(reader));\n            \n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            TypeInfo objectTypeInfo = objectType.GetTypeInfo();\n            if (!KubeObjectV1Type.IsAssignableFrom(objectTypeInfo))\n                throw new NotSupportedException($\"{GetType().FullName} cannot deserialise a value of type '{objectType.FullName}' (not derived from {typeof(KubeObjectV1).FullName}).\");\n\n            JObject json = JObject.Load(reader);\n\n            string kind = json.Value<string>(\"kind\");\n            if (string.IsNullOrWhiteSpace(kind))\n                throw new KubeClientException($\"Cannot deserialise {nameof(KubeObjectV1)} from JSON because the 'kind' property is missing.\");\n\n            string apiVersion = json.Value<string>(\"apiVersion\");\n            if (string.IsNullOrWhiteSpace(apiVersion))\n                throw new KubeClientException($\"Cannot deserialise {nameof(KubeObjectV1)} from JSON because the 'apiVersion' property is missing.\");\n            \n            Type modelType;\n            if (!_modelTypesByKubeKind.TryGetValue((kind, apiVersion), out modelType))\n                throw new KubeClientException($\"Cannot deserialise {nameof(KubeObjectV1)} from JSON because no model type has been registered for '{apiVersion}/{kind}'.\");\n\n            // Ensure the registered model type is actually compatible with the model type being deserialised.\n            if (!objectTypeInfo.IsAssignableFrom(modelType.GetTypeInfo()))\n                throw new NotSupportedException($\"{GetType().FullName} cannot deserialise a value of type '{modelType.FullName}' (not derived from {objectType.FullName}).\");\n\n            return serializer.Deserialize(json.CreateReader(), modelType);\n        }\n\n        /// <summary>\n        ///     Write (serialise) an object to JSON.\n        /// </summary>\n        /// <param name=\"writer\">\n        ///     A <see cref=\"JsonWriter\"/> used to write the JSON.\n        /// </param>\n        /// <param name=\"value\">\n        ///     The value to serialise.\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested serialisation.\n        /// </param>\n        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)\n        {\n            if (writer == null)\n                throw new ArgumentNullException(nameof(writer));\n            \n            if (serializer == null)\n                throw new ArgumentNullException(nameof(serializer));\n\n            throw new NotSupportedException(\"This converter only supports deserialisation (not serialisation).\");\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/Converters/DynamicKubeResourceV1Converter.cs",
    "content": "using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Collections.Generic;\nusing System.Reflection;\n\nnamespace KubeClient.Models.Converters\n{\n    /// <summary>\n    ///     Dynamic JSON converter for types derived from <see cref=\"KubeResourceV1\"/>.\n    /// </summary>\n    public class DynamicKubeResourceV1Converter\n        : JsonConverter\n    {\n        /// <summary>\n        /// The CLR <see cref=\"Type\"/> representing <see cref=\"KubeResourceV1\"/>.\n        /// </summary>\n        static readonly TypeInfo KubeResourceV1Type = typeof(KubeResourceV1).GetTypeInfo();\n\n        /// <summary>\n        /// Registered model types, keyed by K8s kind and apiVersion.\n        /// </summary>\n        readonly Dictionary<(string kind, string apiVersion), Type> _modelTypesByKubeKind;\n\n        /// <summary>\n        /// Create a new <see cref=\"DynamicKubeResourceV1Converter\"/>.\n        /// </summary>\n        /// <param name=\"modelTypeAssemblies\">Assemblies containing model types supported for deserialisation.</param>\n        public DynamicKubeResourceV1Converter(params Assembly[] modelTypeAssemblies)\n            : this((IEnumerable<Assembly>)modelTypeAssemblies)\n        {\n        }\n\n        /// <summary>\n        /// Create a new <see cref=\"DynamicKubeResourceV1Converter\"/>.\n        /// </summary>\n        /// <param name=\"modelTypeAssemblies\">Assemblies containing model types supported for deserialisation.</param>\n        public DynamicKubeResourceV1Converter(IEnumerable<Assembly> modelTypeAssemblies)\n        {\n            if (modelTypeAssemblies == null)\n                throw new ArgumentNullException(nameof(modelTypeAssemblies));\n            \n            _modelTypesByKubeKind = ModelMetadata.KubeObject.BuildKindToTypeLookup(modelTypeAssemblies);\n        }\n\n        /// <summary>\n        ///     Determine wither the converter can convert an object of the specified type to / from JSON.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the converter can convert an object of the specified type; otherwise, <c>false</c>.\n        /// </returns>\n        public override bool CanConvert(Type objectType)\n        {\n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            return KubeResourceV1Type.IsAssignableFrom(\n                objectType.GetTypeInfo()\n            );\n        }\n\n        /// <summary>\n        /// This converter only supports deserialisation (not serialisation).\n        /// </summary>\n        public override bool CanWrite => false;\n\n        /// <summary>\n        ///     Read (deserialise) an object from JSON.\n        /// </summary>\n        /// <param name=\"reader\">\n        ///     A <see cref=\"JsonReader\"/> representing the JSON to read from.\n        /// </param>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <param name=\"existingValue\">\n        ///     The existing value (unused).\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested deserialisation.\n        /// </param>\n        /// <returns>\n        ///     The deserialised object.\n        /// </returns>\n        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)\n        {\n            if (reader == null)\n                throw new ArgumentNullException(nameof(reader));\n            \n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            TypeInfo objectTypeInfo = objectType.GetTypeInfo();\n            if (!KubeResourceV1Type.IsAssignableFrom(objectTypeInfo))\n                throw new NotSupportedException($\"{GetType().FullName} cannot deserialise a value of type '{objectType.FullName}' (not derived from {typeof(KubeResourceV1).FullName}).\");\n\n            JObject json = JObject.Load(reader);\n\n            string kind = json.Value<string>(\"kind\");\n            if (string.IsNullOrWhiteSpace(kind))\n                throw new KubeClientException($\"Cannot deserialise {nameof(KubeResourceV1)} from JSON because the 'kind' property is missing.\");\n\n            string apiVersion = json.Value<string>(\"apiVersion\");\n            if (string.IsNullOrWhiteSpace(apiVersion))\n                throw new KubeClientException($\"Cannot deserialise {nameof(KubeResourceV1)} from JSON because the 'apiVersion' property is missing.\");\n            \n            Type modelType;\n            if (!_modelTypesByKubeKind.TryGetValue((kind, apiVersion), out modelType))\n                throw new KubeClientException($\"Cannot deserialise {nameof(KubeResourceV1)} from JSON because no model type has been registered for '{apiVersion}/{kind}'.\");\n\n            // Ensure the registered model type is actually compatible with the model type being deserialised.\n            if (!objectTypeInfo.IsAssignableFrom(modelType.GetTypeInfo()))\n                throw new NotSupportedException($\"{GetType().FullName} cannot deserialise a value of type '{modelType.FullName}' (not derived from {objectType.FullName}).\");\n\n            return serializer.Deserialize(json.CreateReader(), modelType);\n        }\n\n        /// <summary>\n        ///     Write (serialise) an object to JSON.\n        /// </summary>\n        /// <param name=\"writer\">\n        ///     A <see cref=\"JsonWriter\"/> used to write the JSON.\n        /// </param>\n        /// <param name=\"value\">\n        ///     The value to serialise.\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested serialisation.\n        /// </param>\n        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)\n        {\n            if (writer == null)\n                throw new ArgumentNullException(nameof(writer));\n            \n            if (serializer == null)\n                throw new ArgumentNullException(nameof(serializer));\n\n            throw new NotSupportedException(\"This converter only supports deserialisation (not serialisation).\");\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/Converters/Int32OrStringV1Converter.cs",
    "content": "using System;\nusing Newtonsoft.Json;\n\nnamespace KubeClient.Models.Converters\n{\n    /// <summary>\n    ///     JSON converter for <see cref=\"Int32OrStringV1\"/>.\n    /// </summary>\n    public class Int32OrStringV1Converter\n        : JsonConverter\n    {\n        /// <summary>\n        ///     The CLR <see cref=\"Type\"/> corresponding to <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        static readonly Type Int32OrStringV1Type = typeof(Int32OrStringV1);\n\n        /// <summary>\n        ///     Create a new <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        public Int32OrStringV1Converter()\n        {\n        }\n\n        /// <summary>\n        ///     Determine wither the converter can convert an object of the specified type to / from JSON.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the converter can convert an object of the specified type; otherwise, <c>false</c>.\n        /// </returns>\n        public override bool CanConvert(Type objectType) => objectType == Int32OrStringV1Type;\n\n        /// <summary>\n        ///     Read (deserialise) an object from JSON.\n        /// </summary>\n        /// <param name=\"reader\">\n        ///     A <see cref=\"JsonReader\"/> representing the JSON to read from.\n        /// </param>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <param name=\"existingValue\">\n        ///     The existing value (unused).\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested deserialisation.\n        /// </param>\n        /// <returns>\n        ///     The deserialised object.\n        /// </returns>\n        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)\n        {\n            if (reader == null)\n                throw new ArgumentNullException(nameof(reader));\n            \n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            if (objectType != Int32OrStringV1Type)\n                throw new NotSupportedException($\"{GetType().FullName} cannot deserialise a value of type '{objectType.FullName}'.\");\n\n            switch (reader.TokenType)\n            {\n                case JsonToken.Null:\n                {\n                    return null;\n                }\n                case JsonToken.Integer:\n                {\n                    return new Int32OrStringV1((int)(long)reader.Value);\n                }\n                case JsonToken.String:\n                {\n                    return new Int32OrStringV1((string)reader.Value);\n                }\n                default:\n                {\n                    throw new JsonException($\"Unexpected token type '{reader.TokenType}' for {nameof(Int32OrStringV1)} (expected one of [{JsonToken.Null}, {JsonToken.Integer}, {JsonToken.String}]).\");\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Write (serialise) an object to JSON.\n        /// </summary>\n        /// <param name=\"writer\">\n        ///     A <see cref=\"JsonWriter\"/> used to write the JSON.\n        /// </param>\n        /// <param name=\"value\">\n        ///     The value to serialise.\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested serialisation.\n        /// </param>\n        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)\n        {\n            if (writer == null)\n                throw new ArgumentNullException(nameof(writer));\n            \n            if (serializer == null)\n                throw new ArgumentNullException(nameof(serializer));\n            \n            var typedValue = (Int32OrStringV1)value;\n            if (typedValue.IsInt32)\n            {\n                writer.WriteValue(\n                    (int)typedValue\n                );\n            }\n            else if (typedValue.IsString)\n            {\n                writer.WriteValue(\n                    (string)typedValue\n                );\n            }\n            else\n                writer.WriteNull();\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/Converters/MicroTimeV1Converter.cs",
    "content": "using System;\nusing Newtonsoft.Json;\n\nnamespace KubeClient.Models.Converters\n{\n    /// <summary>\n    ///     JSON converter for <see cref=\"MicroTimeV1\"/>.\n    /// </summary>\n    public class MicroTimeV1Converter\n        : JsonConverter\n    {\n        /// <summary>\n        ///     The CLR <see cref=\"Type\"/> corresponding to <see cref=\"MicroTimeV1\"/>.\n        /// </summary>\n        static readonly Type MicroTimeV1Type = typeof(MicroTimeV1);\n\n        /// <summary>\n        ///     The CLR <see cref=\"Type\"/> corresponding to <see cref=\"MicroTimeV1\"/>.\n        /// </summary>\n        static readonly Type NullableMicroTimeV1Type = typeof(MicroTimeV1?);\n\n        /// <summary>\n        ///     Create a new <see cref=\"MicroTimeV1\"/>.\n        /// </summary>\n        public MicroTimeV1Converter()\n        {\n        }\n\n        /// <summary>\n        ///     Determine wither the converter can convert an object of the specified type to / from JSON.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the converter can convert an object of the specified type; otherwise, <c>false</c>.\n        /// </returns>\n        public override bool CanConvert(Type objectType) => objectType == MicroTimeV1Type;\n\n        /// <summary>\n        ///     Read (deserialise) an object from JSON.\n        /// </summary>\n        /// <param name=\"reader\">\n        ///     A <see cref=\"JsonReader\"/> representing the JSON to read from.\n        /// </param>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <param name=\"existingValue\">\n        ///     The existing value (unused).\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested deserialisation.\n        /// </param>\n        /// <returns>\n        ///     The deserialised object.\n        /// </returns>\n        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)\n        {\n            if (reader == null)\n                throw new ArgumentNullException(nameof(reader));\n            \n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            if (objectType != MicroTimeV1Type && objectType != NullableMicroTimeV1Type)\n                throw new NotSupportedException($\"{GetType().FullName} cannot deserialise a value of type '{objectType.FullName}'.\");\n\n            switch (reader.TokenType)\n            {\n                case JsonToken.Null:\n                {\n                    if (objectType == NullableMicroTimeV1Type)\n                        return null;\n                    \n                    return default(MicroTimeV1);\n                }\n                case JsonToken.Date:\n                {\n                    return new MicroTimeV1(\n                        (DateTime)reader.Value\n                    );\n                }\n                case JsonToken.String:\n                {\n                    return new MicroTimeV1(\n                        DateTime.Parse(\n                            (string)reader.Value\n                        )\n                    );\n                }\n                default:\n                {\n                    throw new JsonException($\"Unexpected token type '{reader.TokenType}' for {nameof(MicroTimeV1)} (expected one of [{JsonToken.Null}, {JsonToken.Date}, {JsonToken.String}]).\");\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Write (serialise) an object to JSON.\n        /// </summary>\n        /// <param name=\"writer\">\n        ///     A <see cref=\"JsonWriter\"/> used to write the JSON.\n        /// </param>\n        /// <param name=\"value\">\n        ///     The value to serialise.\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested serialisation.\n        /// </param>\n        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)\n        {\n            if (writer == null)\n                throw new ArgumentNullException(nameof(writer));\n            \n            if (serializer == null)\n                throw new ArgumentNullException(nameof(serializer));\n            \n            if (value != null)\n            {\n                var microTime = (MicroTimeV1)value;\n                writer.WriteValue(microTime.Value);\n            }\n            else\n                writer.WriteNull();\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/Converters/ResourceEventV1Converter.cs",
    "content": "using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\n\nnamespace KubeClient.Models.Converters\n{\n    /// <summary>\n    ///     Dynamic JSON converter for <see cref=\"ResourceEventV1{TResource}\"/>.\n    /// </summary>\n    public class ResourceEventV1Converter\n        : JsonConverter\n    {\n        /// <summary>\n        /// The CLR <see cref=\"Type\"/> representing <see cref=\"ResourceEventV1{TResource}\"/>, specialised for <see cref=\"KubeResourceV1\"/>.\n        /// </summary>\n        static readonly Type ResourceEventV1Type = typeof(ResourceEventV1<KubeResourceV1>);\n\n        /// <summary>\n        /// The CLR <see cref=\"Type\"/> representing <see cref=\"KubeResourceV1\"/>.\n        /// </summary>\n        static readonly TypeInfo KubeResourceV1Type = typeof(KubeResourceV1).GetTypeInfo();\n\n        /// <summary>\n        /// Default assemblies always scanned for model types.\n        /// </summary>\n        static readonly IEnumerable<Assembly> DefaultModelAssemblies = new Assembly[] { KubeResourceV1Type.Assembly };\n\n        /// <summary>\n        /// Registered model types, keyed by K8s kind and apiVersion.\n        /// </summary>\n        readonly Dictionary<(string kind, string apiVersion), Type> _modelTypesByKubeKind;\n\n        /// <summary>\n        /// Create a new <see cref=\"ResourceEventV1Converter\"/>.\n        /// </summary>\n        /// <param name=\"modelTypeAssemblies\">Assemblies containing model types supported for deserialisation.</param>\n        public ResourceEventV1Converter(params Assembly[] modelTypeAssemblies)\n            : this((IEnumerable<Assembly>)modelTypeAssemblies)\n        {\n        }\n\n        /// <summary>\n        /// Create a new <see cref=\"ResourceEventV1Converter\"/>.\n        /// </summary>\n        /// <param name=\"modelTypeAssemblies\">Assemblies containing model types supported for deserialisation.</param>\n        public ResourceEventV1Converter(IEnumerable<Assembly> modelTypeAssemblies)\n        {\n            if (modelTypeAssemblies == null)\n                throw new ArgumentNullException(nameof(modelTypeAssemblies));\n            \n            _modelTypesByKubeKind = ModelMetadata.KubeObject.BuildKindToTypeLookup(\n                DefaultModelAssemblies.Concat(modelTypeAssemblies)\n            );\n        }\n\n        /// <summary>\n        ///     Determine wither the converter can convert an object of the specified type to / from JSON.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the converter can convert an object of the specified type; otherwise, <c>false</c>.\n        /// </returns>\n        public override bool CanConvert(Type objectType) => objectType == ResourceEventV1Type;\n\n        /// <summary>\n        /// This converter only supports deserialisation (not serialisation).\n        /// </summary>\n        public override bool CanWrite => false;\n\n        /// <summary>\n        ///     Read (deserialise) an object from JSON.\n        /// </summary>\n        /// <param name=\"reader\">\n        ///     A <see cref=\"JsonReader\"/> representing the JSON to read from.\n        /// </param>\n        /// <param name=\"objectType\">\n        ///     The target object <see cref=\"Type\"/>.\n        /// </param>\n        /// <param name=\"existingValue\">\n        ///     The existing value (unused).\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested deserialisation.\n        /// </param>\n        /// <returns>\n        ///     The deserialised object.\n        /// </returns>\n        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)\n        {\n            if (reader == null)\n                throw new ArgumentNullException(nameof(reader));\n            \n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n\n            if (objectType != ResourceEventV1Type)\n                throw new NotSupportedException($\"{GetType().Name} cannot deserialise a value of type '{objectType.FullName}' (only {typeof(ResourceEventV1<KubeResourceV1>).FullName} is supported).\");\n\n            JObject eventJson = JObject.Load(reader);\n\n            var resourceEvent = new ResourceEventV1<KubeResourceV1>\n            {\n                EventType = DeserializeEventType(eventJson),\n                Resource = DeserializeResource(eventJson, serializer)\n            };\n            \n            return resourceEvent;\n        }\n\n        /// <summary>\n        ///     Write (serialise) an object to JSON.\n        /// </summary>\n        /// <param name=\"writer\">\n        ///     A <see cref=\"JsonWriter\"/> used to write the JSON.\n        /// </param>\n        /// <param name=\"value\">\n        ///     The value to serialise.\n        /// </param>\n        /// <param name=\"serializer\">\n        ///     A <see cref=\"JsonSerializer\"/> that can be used for nested serialisation.\n        /// </param>\n        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)\n        {\n            if (writer == null)\n                throw new ArgumentNullException(nameof(writer));\n            \n            if (serializer == null)\n                throw new ArgumentNullException(nameof(serializer));\n\n            throw new NotSupportedException($\"{GetType().Name} only supports deserialisation (not serialisation).\");\n        }\n\n        /// <summary>\n        /// Deserialise the event's type from JSON.\n        /// </summary>\n        /// <param name=\"eventJson\">The serialised event JSON.</param>\n        /// <returns>A <see cref=\"ResourceEventType\"/> value representing the event type.</returns>\n        ResourceEventType DeserializeEventType(JObject eventJson)\n        {\n            if (eventJson == null)\n                throw new ArgumentNullException(nameof(eventJson));\n\n            if (eventJson.Property(\"type\") == null)\n                throw new NotSupportedException($\"{GetType().Name} cannot deserialise JSON because it does not represent a valid {nameof(ResourceEventV1<KubeResourceV1>)} (missing 'type' property).\");\n\n            ResourceEventType eventType;\n            string rawEventType = eventJson.Value<string>(\"type\");\n            if (!Enum.TryParse(rawEventType, ignoreCase: true, out eventType))\n                throw new NotSupportedException($\"{GetType().Name} cannot deserialise JSON because it does not represent a valid {nameof(ResourceEventV1<KubeResourceV1>)} ('type' property has invalid  value '{rawEventType}').\");\n\n            return eventType;\n        }\n\n        /// <summary>\n        /// Get the event's serialised resource from JSON.\n        /// </summary>\n        /// <param name=\"eventJson\">The serialised event JSON.</param>\n        /// <returns>A <see cref=\"JObject\"/> containing the serialised resource JSON, the resource kind, and the resource API version.</returns>\n        (JObject resourceJson, string kind, string apiVersion) GetResourceJson(JObject eventJson)\n        {\n            if (eventJson == null)\n                throw new ArgumentNullException(nameof(eventJson));\n\n            // \"object\" property might not be present at all.\n\n            JObject resourceJson = eventJson.Value<JObject>(\"object\");\n            if (resourceJson == null)\n                return (resourceJson: null, kind: null, apiVersion: null);\n\n            string kind = resourceJson.Value<string>(\"kind\");\n            if (string.IsNullOrWhiteSpace(kind))\n                throw new KubeClientException($\"{GetType().Name} cannot deserialise {nameof(KubeResourceV1)} from JSON because the 'kind' property is missing.\");\n\n            string apiVersion = resourceJson.Value<string>(\"apiVersion\");\n            if (string.IsNullOrWhiteSpace(apiVersion))\n                throw new KubeClientException($\"{GetType().Name} cannot deserialise {nameof(KubeResourceV1)} from JSON because the 'apiVersion' property is missing.\");\n\n            return (resourceJson, kind, apiVersion);\n        }\n\n        /// <summary>\n        /// Get the CLR type representing the model for the specified resource kind and API version.\n        /// </summary>\n        /// <param name=\"kind\">The K8s resource kind.</param>\n        /// <param name=\"apiVersion\">The K8s API version.</param>\n        /// <returns>The model <see cref=\"Type\"/>.</returns>\n        Type GetModelType(string kind, string apiVersion)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(kind)}.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(apiVersion)}.\", nameof(apiVersion));\n\n            Type modelType;\n            if (!_modelTypesByKubeKind.TryGetValue((kind, apiVersion), out modelType))\n                throw new KubeClientException($\"{GetType().Name} cannot deserialise {nameof(KubeResourceV1)} from JSON because no model type has been registered for '{apiVersion}/{kind}'.\");\n\n            // Ensure the registered model type is actually compatible with the model type being deserialised.\n            if (!KubeResourceV1Type.IsAssignableFrom(modelType.GetTypeInfo()))\n                throw new NotSupportedException($\"{GetType().Name} cannot deserialise a value of type '{modelType.FullName}' (not derived from {KubeResourceV1Type.FullName}).\");\n\n            return modelType;\n        }\n\n        /// <summary>\n        /// Deserialise the event's resource from JSON.\n        /// </summary>\n        /// <param name=\"eventJson\">The serialised event JSON.</param>\n        /// <param name=\"serializer\">The JSON serialiser used to deserialise the resource.</param>\n        /// <returns>The deserialised resource.</returns>\n        KubeResourceV1 DeserializeResource(JObject eventJson, JsonSerializer serializer)\n        {\n            (JObject resourceJson, string kind, string apiVersion) = GetResourceJson(eventJson);\n            if (resourceJson == null)\n                return null; // AF: I think it's possible for the event's resource to be null in some cases.\n\n            Type modelType = GetModelType(kind, apiVersion);\n\n            return (KubeResourceV1)serializer.Deserialize(resourceJson.CreateReader(), modelType);\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/DeleteOptionsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeleteOptions may be provided when deleting an API object.\n    /// </summary>\n    [KubeObject(\"DeleteOptions\", \"v1\")]\n    public class DeleteOptionsV1\n        : KubeObjectV1\n    {\n        /// <summary>\n        ///     The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.\n        /// </summary>\n        [JsonProperty(\"gracePeriodSeconds\")]\n        public int? GracePeriodSeconds { get; set; }\n\n        /// <summary>\n        ///     Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.\n        /// </summary>\n        [JsonProperty(\"orphanDependents\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? OrphanDependents { get; set; }\n\n        /// <summary>\n        ///     Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.\n        /// </summary>\n        [JsonProperty(\"preconditions\")]\n        public PreconditionsV1 Preconditions { get; set; }\n\n        /// <summary>\n        ///     Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy.\n        /// </summary>\n        [JsonProperty(\"propagationPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeletePropagationPolicy? PropagationPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/DeletePropagationPolicy.cs",
    "content": "namespace KubeClient.Models\n{\n    /// <summary>\n    ///     Well-known policies for propagating deletion of a resource to its children.\n    /// </summary>\n    public enum DeletePropagationPolicy\n    {\n        /// <summary>\n        ///     Do not delete child resources.\n        /// </summary>\n        Orphan = 0,\n\n        /// <summary>\n        ///     Delete child resources in the foreground; parent's deletion will not complete until child resources have been deleted.\n        /// </summary>\n        Foreground = 1,\n\n        /// <summary>\n        ///     Delete child resources in the foreground; child resources will be deleted asynchronously.\n        /// </summary>\n        Background = 2,\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/ExecCredentialV1Beta1.cs",
    "content": "using System.Collections.Generic;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The model for the response returned by client-go credential plugins.\n    /// </summary>\n    [KubeObject(\"ExecCredential\", \"client.authentication.k8s.io/v1beta1\")]\n    public class ExecCredentialV1Beta1\n        : KubeObjectV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"ExecCredentialV1Beta1\"/>.\n        /// </summary>\n        public ExecCredentialV1Beta1()\n        {\n        }\n\n        /// <summary>\n        ///     The credential plugin's status.\n        /// </summary>\n        public Dictionary<string, object> Status { get; } = new Dictionary<string, object>();\n\n        /// <summary>\n        ///     Determine whether the credential status should be serialised.\n        /// </summary>\n        /// <returns>\n        ///     <c>true</c>, if the credential status should be serialised; otherwise, <c>false</c>.\n        /// </returns>\n        public bool ShouldSerializeStatus() => Status.Count > 0;\n\n        /// <summary>\n        ///     Get the value of the \"status/token\" field (if present).\n        /// </summary>\n        /// <returns>\n        ///     The token, or <c>null</c> if the field is not present.\n        /// </returns>\n        public string GetToken()\n        {\n            if (Status.TryGetValue(\"token\", out object token))\n                return token as string;\n\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/IResourceEventV1.cs",
    "content": "namespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents the payload for a Kubernetes resource event.\n    /// </summary>\n    /// <typeparam name=\"TResource\">\n    ///     The type of resource to which the event relates.\n    /// </typeparam>\n    /// <remarks>This interface is used to support covariance on <typeparamref name=\"TResource\"/>.</remarks>\n    public interface IResourceEventV1<out TResource>\n        where TResource : KubeResourceV1\n    {\n        /// <summary>\n        ///     The event type.\n        /// </summary>\n        ResourceEventType EventType { get; set; }\n\n        /// <summary>\n        ///     The resource to which the event relates.\n        /// </summary>\n        TResource Resource { get; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/Int32OrStringV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing YamlDotNet.Core;\nusing YamlDotNet.Core.Events;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    using Converters;\n\n    /// <summary>\n    ///     Union type representing a K8s API value that can be either a string or an integer.\n    /// </summary>\n    /// <remarks>\n    ///     Any string that cannot be parsed as a number will be treated as a string; otherwise, it will be treated as an <see cref=\"Int32\"/>.\n    /// </remarks>\n    [JsonConverter(typeof(Int32OrStringV1Converter))]\n    public class Int32OrStringV1\n        : IEquatable<Int32OrStringV1>, IEquatable<int>, IEquatable<string>, IYamlConvertible\n    {\n        /// <summary>\n        /// The CLR <see cref=\"Type\"/> representing <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        static readonly Type Int32OrStringV1Type = typeof(Int32OrStringV1);\n\n        /// <summary>\n        ///     The underlying value (if it is an <see cref=\"Int32\"/>).\n        /// </summary>\n        int? _intValue;\n\n        /// <summary>\n        ///     The underlying value (if it not an <see cref=\"Int32\"/>).\n        /// </summary>\n        string _stringValue;\n\n        /// <summary>\n        ///     Wrap an <see cref=\"Int32\"/> in an <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        /// <param name=\"value\">\n        ///     The <see cref=\"Int32\"/> to wrap.\n        /// </param>\n        public Int32OrStringV1(int value)\n        {\n            _intValue = value;\n            _stringValue = null;\n        }\n\n        /// <summary>\n        ///     Wrap a <see cref=\"String\"/> in an <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        /// <param name=\"value\">\n        ///     The <see cref=\"String\"/> to wrap.\n        /// </param>\n        public Int32OrStringV1(string value)\n        {\n            if (Int32.TryParse(value, out int intValue))\n            {\n                _intValue = intValue;\n                _stringValue = null;\n            }\n            else\n            {\n                _stringValue = value;\n                _intValue = null;\n            }\n        }\n\n        /// <summary>\n        /// YAML deserialisation constructor.\n        /// </summary>\n        public Int32OrStringV1()\n        {\n        }\n\n        /// <summary>\n        ///     The underlying value as an <see cref=\"Int32\"/>.\n        /// </summary>\n        /// <exception cref=\"InvalidCastException\">\n        ///     The underlying value is not a valid 32-bit integer.\n        /// </exception>\n        public int Int32Value => _intValue ?? throw new InvalidCastException($\"The value '{_stringValue}' is not a valid 32-bit integer.\");\n        \n        /// <summary>\n        ///     The underlying value as a <see cref=\"String\"/>.\n        /// </summary>\n        public string StringValue => _intValue?.ToString() ?? _stringValue;\n\n        /// <summary>\n        ///     Is the underlying value a valid 32-bit integer?\n        /// </summary>\n        public bool IsInt32 => _intValue.HasValue;\n\n        /// <summary>\n        ///     Is the underlying value a (non-null) string?\n        /// </summary>\n        public bool IsString => _stringValue != null;\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Int32OrStringV1\"/> is equivalent to another <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        /// <param name=\"other\">\n        ///     The other <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/> is equivalent to the other <see cref=\"Int32OrStringV1\"/>; otherwise <c>false</c>.\n        /// </returns>\n        public bool Equals(Int32OrStringV1 other) => _intValue == other._intValue && _stringValue == other._stringValue;\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Int32OrStringV1\"/> is equivalent to another <see cref=\"Int32\"/>.\n        /// </summary>\n        /// <param name=\"other\">\n        ///     The other <see cref=\"Int32\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/> is equivalent to the other <see cref=\"Int32\"/>; otherwise <c>false</c>.\n        /// </returns>\n        public bool Equals(int other) => _intValue == other;\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Int32OrStringV1\"/> is equivalent to another <see cref=\"String\"/>.\n        /// </summary>\n        /// <param name=\"other\">\n        ///     The other <see cref=\"String\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/> is equivalent to the other <see cref=\"String\"/>; otherwise <c>false</c>.\n        /// </returns>\n        public bool Equals(string other) => _stringValue == other;\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Int32OrStringV1\"/> is equivalent to another object.\n        /// </summary>\n        /// <param name=\"other\">\n        ///     The other object.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/> is equivalent to the other object; otherwise <c>false</c>.\n        /// </returns>\n        public override bool Equals(object other)\n        {\n            if (other is Int32OrStringV1 otherInt32OrStringV1)\n                return Equals(otherInt32OrStringV1);\n\n            if (other is int otherInt32)\n                return Equals(otherInt32);\n\n            if (other is string otherString)\n                return Equals(otherString);\n\n            return false;\n        }\n\n        /// <summary>\n        ///     Get a hash code to represent the <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        /// <returns>\n        ///     The hash code.\n        /// </returns>\n        public override int GetHashCode() => _intValue?.GetHashCode() ?? _stringValue?.GetHashCode() ?? 0;\n\n        /// <summary>\n        ///     Get a string representation of the <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        public override string ToString() => StringValue;\n\n        /// <summary>\n        /// Read the <see cref=\"Int32OrStringV1\"/>'s value from YAML.\n        /// </summary>\n        /// <param name=\"parser\">The YAML parser to read from.</param>\n        /// <param name=\"expectedType\">The expected type to deserialise into (must be <see cref=\"Int32OrStringV1\"/>).</param>\n        /// <param name=\"nestedObjectDeserializer\">An <see cref=\"ObjectDeserializer\"/> that can be used to deserialise nested objects (unused for <see cref=\"Int32OrStringV1\"/> since it's a scalar data-type).</param>\n        void IYamlConvertible.Read(IParser parser, Type expectedType, ObjectDeserializer nestedObjectDeserializer)\n        {\n            if ( parser == null )\n                throw new ArgumentNullException(nameof(parser));\n\n            if ( expectedType == null )\n                throw new ArgumentNullException(nameof(expectedType));\n\n            if (expectedType != Int32OrStringV1Type)\n                throw new NotSupportedException($\"The {nameof(IYamlConvertible)} implementation of {nameof(Int32OrStringV1)} can only handle values of type '{Int32OrStringV1Type.FullName}'.\");\n\n            switch ( parser.Current )\n            {\n                case Scalar scalar:\n                {\n                    if ( Int32.TryParse(scalar.Value, out int intValue) )\n                    {\n                        _intValue = intValue;\n                        _stringValue = null;\n                    }\n                    else\n                    {\n                        _stringValue = scalar.Value;\n                        _intValue = null;\n                    }\n\n                    break;\n                }\n                default:\n                {\n                    throw new YamlException($\"Unexpected parser event '{parser.Current.GetType().Name}'.\");\n                }\n            }\n\n            // Leave the parser on the next token (we're done parsing this one).\n            parser.MoveNext();\n        }\n\n        /// <summary>\n        /// Write the <see cref=\"Int32OrStringV1\"/>'s value to YAML.\n        /// </summary>\n        /// <param name=\"emitter\">The YAML emitter that the value will be written to.</param>\n        /// <param name=\"nestedObjectSerializer\">An <see cref=\"ObjectSerializer\"/> that can be used to serialise nested objects (unused for <see cref=\"Int32OrStringV1\"/>).</param>\n        void IYamlConvertible.Write(IEmitter emitter, ObjectSerializer nestedObjectSerializer)\n        {\n            if ( emitter == null )\n                throw new ArgumentNullException(nameof(emitter));\n\n            if ( nestedObjectSerializer == null )\n                throw new ArgumentNullException(nameof(nestedObjectSerializer));\n\n            emitter.Emit(new Scalar(\n                value: ToString()\n            ));\n        }\n\n        /// <summary>\n        ///     Explicitly convert an <see cref=\"Int32OrStringV1\"/> to an <see cref=\"Int32\"/>.\n        /// </summary>\n        /// <param name=\"value\">\n        ///     The <see cref=\"Int32OrStringV1\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"Int32\"/>.\n        /// </returns>\n        /// <exception cref=\"InvalidCastException\">\n        ///     The underlying value is not a valid 32-bit integer.\n        /// </exception>\n        public static explicit operator Int32(Int32OrStringV1 value) => value._intValue ?? throw new InvalidCastException(\"The specified value is not an Int32.\");\n\n        /// <summary>\n        ///     Explicitly convert an <see cref=\"Int32OrStringV1\"/> to a <see cref=\"String\"/>.\n        /// </summary>\n        /// <param name=\"value\">\n        ///     The <see cref=\"Int32OrStringV1\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"String\"/>.\n        /// </returns>\n        public static explicit operator string(Int32OrStringV1 value) => value._stringValue ?? value._intValue?.ToString();\n\n        /// <summary>\n        ///     Implicitly convert an <see cref=\"Int32\"/> to an <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        /// <param name=\"value\">\n        ///     The <see cref=\"Int32\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"Int32OrStringV1\"/>.\n        /// </returns>\n        public static implicit operator Int32OrStringV1(int value) => new Int32OrStringV1(value);\n\n        /// <summary>\n        ///     Implicitly convert a <see cref=\"String\"/> to an <see cref=\"Int32OrStringV1\"/>.\n        /// </summary>\n        /// <param name=\"value\">\n        ///     The <see cref=\"String\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"Int32OrStringV1\"/>.\n        /// </returns>\n        public static implicit operator Int32OrStringV1(string value) => value != null ? new Int32OrStringV1(value) : null;\n\n        /// <summary>\n        ///     Test if 2 <see cref=\"Int32OrStringV1\"/>s are equivalent.\n        /// </summary>\n        /// <param name=\"left\">\n        ///     The first <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <param name=\"right\">\n        ///     The second <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/>s are equivalent; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool operator==(Int32OrStringV1 left, Int32OrStringV1 right)\n        {\n            if (ReferenceEquals(left, null) && ReferenceEquals(right, null))\n               return true;\n\n            if (ReferenceEquals(left, null) || ReferenceEquals(right, null))\n               return false;\n\n            return left.Equals(right);\n        }\n\n        /// <summary>\n        ///     Test if 2 <see cref=\"Int32OrStringV1\"/>s are not equivalent.\n        /// </summary>\n        /// <param name=\"left\">\n        ///     The first <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <param name=\"right\">\n        ///     The second <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/>s are not equivalent; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool operator!=(Int32OrStringV1 left, Int32OrStringV1 right)\n        {\n            if (ReferenceEquals(left, null) && ReferenceEquals(right, null))\n               return false;\n\n            if (ReferenceEquals(left, null) || ReferenceEquals(right, null))\n               return true;\n\n            return !left.Equals(right);\n        }\n\n        /// <summary>\n        ///     Test if an <see cref=\"Int32OrStringV1\"/> is equivalent to an <see cref=\"Int32\"/>.\n        /// </summary>\n        /// <param name=\"left\">\n        ///     The <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <param name=\"right\">\n        ///     The <see cref=\"Int32\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/> is equivalent to the <see cref=\"Int32\"/>; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool operator==(Int32OrStringV1 left, int right)\n        {\n            if (ReferenceEquals(left, null))\n               return false;\n\n            return left.Equals(right);\n        }\n\n        /// <summary>\n        ///     Test if an <see cref=\"Int32OrStringV1\"/> is not equivalent to an <see cref=\"Int32\"/>.\n        /// </summary>\n        /// <param name=\"left\">\n        ///     The <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <param name=\"right\">\n        ///     The <see cref=\"Int32\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/> is not equivalent to the <see cref=\"Int32\"/>; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool operator!=(Int32OrStringV1 left, int right)\n        {\n            if (ReferenceEquals(left, null))\n               return true;\n\n            return !left.Equals(right);\n        }\n\n        /// <summary>\n        ///     Test if an <see cref=\"Int32OrStringV1\"/> is equivalent to a <see cref=\"String\"/>.\n        /// </summary>\n        /// <param name=\"left\">\n        ///     The <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <param name=\"right\">\n        ///     The <see cref=\"String\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/> is equivalent to the <see cref=\"String\"/>; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool operator==(Int32OrStringV1 left, string right)\n        {\n            if (ReferenceEquals(left, null) && ReferenceEquals(right, null))\n               return true;\n\n            if (ReferenceEquals(left, null) || ReferenceEquals(right, null))\n               return false;\n\n            return left.Equals(right);\n        }\n\n        /// <summary>\n        ///     Test if an <see cref=\"Int32OrStringV1\"/> is not equivalent to a <see cref=\"String\"/>.\n        /// </summary>\n        /// <param name=\"left\">\n        ///     The <see cref=\"Int32OrStringV1\"/>.\n        /// </param>\n        /// <param name=\"right\">\n        ///     The <see cref=\"String\"/>.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"Int32OrStringV1\"/> is not equivalent to the <see cref=\"String\"/>; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool operator!=(Int32OrStringV1 left, string right)\n        {\n            if (ReferenceEquals(left, null) && ReferenceEquals(right, null))\n               return false;\n\n            if (ReferenceEquals(left, null) || ReferenceEquals(right, null))\n               return true;\n\n            return !left.Equals(right);\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/JSONSchemaPropsOrBoolV1.cs",
    "content": "﻿using Newtonsoft.Json;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property.\n    /// </summary>\n    public partial class JSONSchemaPropsOrBoolV1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Schema\")]\n        [JsonProperty(\"Schema\", NullValueHandling = NullValueHandling.Include)]\n        public JSONSchemaPropsV1 Schema { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Allows\")]\n        [JsonProperty(\"Allows\", NullValueHandling = NullValueHandling.Include)]\n        public bool Allows { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/JSONSchemaPropsOrStringArrayV1.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.\n    /// </summary>\n    public partial class JSONSchemaPropsOrStringArrayV1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Schema\")]\n        [JsonProperty(\"Schema\", NullValueHandling = NullValueHandling.Include)]\n        public JSONSchemaPropsV1 Schema { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Property\")]\n        [JsonProperty(\"Property\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Property { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/JSONSchemaPropsV1.cs",
    "content": "﻿using Newtonsoft.Json;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).\n    /// </summary>\n    public partial class JSONSchemaPropsV1\n    {\n        /// <summary>\n        ///     x-kubernetes-patch-merge-strategy annotates an object to describe the strategy used when performing a patch-merge.\n        /// </summary>\n        [YamlMember(Alias = \"x-kubernetes-patch-strategy\")]\n        [JsonProperty(\"x-kubernetes-patch-strategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string KubernetesPatchMergeStrategy { get; set; }\n\n        /// <summary>\n        ///     x-kubernetes-patch-merge-key annotates an object to describe the key used when performing a patch-merge.\n        /// </summary>\n        [YamlMember(Alias = \"x-kubernetes-patch-merge-key\")]\n        [JsonProperty(\"x-kubernetes-patch-merge-key\", NullValueHandling = NullValueHandling.Ignore)]\n        public string KubernetesPatchMergeKey { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeActions.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Well-known actions supported by Kubernetes resource APIs.\n    /// </summary>\n    public enum KubeAction\n    {\n        /// <summary>\n        ///     An unknown action.\n        /// </summary>\n        Unknown = 0,\n\n        /// <summary>\n        ///     Retrieve a single resource by name.\n        /// </summary>\n        Get = 1,\n\n        /// <summary>\n        ///     Create a new resource.\n        /// </summary>\n        Create = 2,\n\n        /// <summary>\n        ///     Delete a resource by name.\n        /// </summary>\n        Delete = 3,\n\n        /// <summary>\n        ///     Delete multiple resources.\n        /// </summary>\n        DeleteCollection = 4,\n\n        /// <summary>\n        ///     Retrieve a list of resources.\n        /// </summary>\n        List = 5,\n\n        /// <summary>\n        ///     Selectively update part(s) of a resource.\n        /// </summary>\n        Patch = 6,\n\n        /// <summary>\n        ///     Replace a resource.\n        /// </summary>\n        Update = 7,\n\n        /// <summary>\n        ///     Watch a resource for changes.\n        /// </summary>\n        Watch = 8,\n\n        /// <summary>\n        ///     Watch a list of resources for changes.\n        /// </summary>\n        WatchList = 9,\n\n        /// <summary>\n        ///     Connect to a resource.\n        /// </summary>\n        Connect = 10,\n\n        /// <summary>\n        ///     Create a proxy connection to a resource.\n        /// </summary>\n        Proxy = 11\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeApiAttribute.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Declares the path for one or more Kubernetes resource API actions.\n    /// </summary>\n    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]\n    public class KubeApiAttribute\n        : Attribute\n    {\n        /// <summary>\n        ///     Declare a path and one or more actions for the Kubernetes resource API represented by the target model.\n        /// </summary>\n        /// <param name=\"action\">\n        ///     The API action.\n        /// </param>\n        /// <param name=\"paths\">\n        ///     The API path(s) supporting the action.\n        /// </param>\n        public KubeApiAttribute(KubeAction action, params string[] paths)\n        {\n            if (paths.Length == 0)\n                throw new ArgumentException(\"Must specify at least one API path.\", nameof(paths));\n\n            Action = action;\n            Paths = paths;\n        }\n\n        /// <summary>\n        ///     The API action.\n        /// </summary>\n        public KubeAction Action { get; }\n\n        /// <summary>\n        ///     The API path(s) supporting the action.\n        /// </summary>\n        public string[] Paths { get; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeListItemAttribute.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Mark a model class as representing a list whose items are Kubernetes objects of a specific kind / API version.\n    /// </summary>\n    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]\n    public class KubeListItemAttribute\n        : Attribute\n    {\n        /// <summary>\n        ///     Mark the model class as representing a list of Kubernetes objects of the specified kind / API version.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The object kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The object API version.\n        /// </param>\n        public KubeListItemAttribute(string kind, string apiVersion)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'version'.\", nameof(apiVersion));\n\n            Kind = kind;\n            ApiVersion = apiVersion;\n        }\n\n        /// <summary>\n        ///     The item kind.\n        /// </summary>\n        public string Kind { get; }\n\n        /// <summary>\n        ///     The item API version.\n        /// </summary>\n        public string ApiVersion { get; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeObjectAttribute.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Mark a model class as representing a Kubernetes object.\n    /// </summary>\n    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]\n    public class KubeObjectAttribute\n        : Attribute\n    {\n        /// <summary>\n        ///     Mark the model class as representing a Kubernetes object.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The object kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The object API version.\n        /// </param>\n        public KubeObjectAttribute(string kind, string apiVersion)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'version'.\", nameof(apiVersion));\n\n            Kind = kind;\n            ApiVersion = apiVersion;\n        }\n\n        /// <summary>\n        ///     The resource kind.\n        /// </summary>\n        public string Kind { get; }\n\n        /// <summary>\n        ///     The resource API version.\n        /// </summary>\n        public string ApiVersion { get; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeObjectV1.cs",
    "content": "using System;\nusing System.Collections.Concurrent;\nusing System.Reflection;\nusing Newtonsoft.Json;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The base class for Kubernetes models.\n    /// </summary>\n    public class KubeObjectV1\n    {\n        /// <summary>\n        ///     Model type metadata.\n        /// </summary>\n        static readonly ConcurrentDictionary<Type, (string kind, string apiVersion)> ModelMetadata = new ConcurrentDictionary<Type, (string kind, string apiVersion)>();\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeObjectV1\"/>, automatically initialising <see cref=\"Kind\"/> and <see cref=\"ApiVersion\"/> (if possible).\n        /// </summary>\n        protected KubeObjectV1()\n        {\n            (Kind, ApiVersion) = GetKubeKind(GetType());\n        }\n\n        /// <summary>\n        ///     Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds\n        /// </summary>\n        [JsonProperty(\"kind\")]\n        [YamlMember(Alias = \"kind\")]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources\n        /// </summary>\n        [JsonProperty(\"apiVersion\")]\n        [YamlMember(Alias = \"apiVersion\")]\n        public string ApiVersion { get; set; }\n\n        /// <summary>\n        ///     Get Kubernetes Kind / ApiVersion metadata for the specified object type.\n        /// </summary>\n        /// <typeparam name=\"TObject\">\n        ///     The target object type.\n        /// </typeparam>\n        /// <returns>\n        ///     A tuple containing the object's Kind and ApiVersion metadata (or <c>null</c> and <c>null</c>, if no metadata is available for <typeparamref name=\"TObject\"/>).\n        /// </returns>\n        public static (string kind, string apiVersion) GetKubeKind<TObject>()\n            where TObject : KubeObjectV1\n        {\n            return GetKubeKind(\n                typeof(TObject)\n            );\n        }\n\n        /// <summary>\n        ///     Get Kubernetes Kind / ApiVersion metadata for the specified object type.\n        /// </summary>\n        /// <param name=\"kubeObjectType\">\n        ///     The Kubernetes object type.\n        /// </param>\n        /// <returns>\n        ///     A tuple containing the object's Kind and ApiVersion metadata (or <c>null</c> and <c>null</c>, if no metadata is available for <paramref name=\"kubeObjectType\"/>).\n        /// </returns>\n        public static (string kind, string apiVersion) GetKubeKind(Type kubeObjectType)\n        {\n            if (kubeObjectType == null)\n                throw new ArgumentNullException(nameof(kubeObjectType));\n\n            (string kind, string apiVersion) kubeKind = ModelMetadata.GetOrAdd(kubeObjectType, modelType =>\n            {\n                var kubeObjectAttribute = modelType.GetTypeInfo().GetCustomAttribute<KubeObjectAttribute>();\n                if (kubeObjectAttribute != null)\n                    return (kubeObjectAttribute.Kind, kubeObjectAttribute.ApiVersion);\n\n                return (null, null);\n            });\n\n            return kubeKind;\n        }\n    }\n\n    /// <summary>\n    ///     Extension methods for <see cref=\"KubeObjectV1\"/>.\n    /// </summary>\n    public static class KubeObjectExtensions\n    {\n        /// <summary>\n        ///     Remove type metadata (Kind and ApiVersion) from the <see cref=\"KubeObjectV1\"/>.\n        /// </summary>\n        /// <param name=\"kubeObject\">\n        ///     The <see cref=\"KubeObjectV1\"/>.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"KubeObjectV1\"/> (enables inline use).\n        /// </returns>\n        public static TObject NoTypeMeta<TObject>(this TObject kubeObject)\n            where TObject : KubeObjectV1\n        {\n            if (kubeObject == null)\n                return null;\n\n            kubeObject.Kind = null;\n            kubeObject.ApiVersion = null;\n\n            return kubeObject;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeResourceListResultV1.cs",
    "content": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents the result of a Kubernetes API operation that returns a list of resources.\n    /// </summary>\n    /// <typeparam name=\"TResource\">\n    ///     The type of resource returned by the operation.\n    /// </typeparam>\n    public class KubeResourceListResultV1<TResource>\n        : KubeResultV1, IEnumerable<TResource>\n        where TResource : KubeResourceV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeResourceListResultV1{TResource}\"/> representing the specified <typeparamref name=\"TResource\"/> list.\n        /// </summary>\n        /// <param name=\"resources\">\n        ///     The <typeparamref name=\"TResource\"/> list represented by the <see cref=\"KubeResourceListResultV1{TResource}\"/>.\n        /// </param>\n        public KubeResourceListResultV1(KubeResourceListV1<TResource> resources)\n            : base(DefaultStatus(resources))\n        {\n            Resources = resources;\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeResourceListResultV1{TResource}\"/> representing a <see cref=\"StatusV1\"/>.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The <see cref=\"StatusV1\"/> represented by the <see cref=\"KubeResourceListResultV1{TResource}\"/>.\n        /// </param>\n        public KubeResourceListResultV1(StatusV1 status)\n            : base(status)\n        {\n        }\n\n        /// <summary>\n        ///     The <typeparamref name=\"TResource\"/> represented by the <see cref=\"KubeResourceListResultV1{TResource}\"/>.\n        /// </summary>\n        public KubeResourceListV1<TResource> Resources { get; }\n\n        /// <summary>\n        ///     The type of resource represented by the <see cref=\"KubeResourceListResultV1{TResource}\"/>.\n        /// </summary>\n        public override Type ResourceType => typeof(TResource);\n\n        /// <summary>\n        ///     Implicitly convert a <see cref=\"KubeResourceListResultV1{TResource}\"/> to a <typeparamref name=\"TResource\"/>.\n        /// </summary>\n        /// <param name=\"result\">\n        ///     The <see cref=\"KubeResourceListResultV1{TResource}\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     The result's <see cref=\"KubeResourceListResultV1{TResource}.Resources\"/>.\n        /// </returns>\n        /// <exception cref=\"KubeApiException\">\n        ///     The result <see cref=\"KubeResultV1.Status\"/> does not represent success.\n        /// </exception>\n        public static implicit operator KubeResourceListV1<TResource>(KubeResourceListResultV1<TResource> result)\n        {\n            if (result == null)\n                return null;\n\n            if (!result.IsSuccess)\n                throw new KubeApiException(result.Status);\n\n            return result.Resources;\n        }\n\n        /// <summary>\n        ///     Convert a <typeparamref name=\"TResource\"/> to a <see cref=\"KubeResourceListResultV1{TResource}\"/>.\n        /// </summary>\n        /// <param name=\"resources\">\n        ///     The <typeparamref name=\"TResource\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceListResultV1{TResource}\"/> that wraps the <paramref name=\"resources\"/>.\n        /// </returns>\n        public static implicit operator KubeResourceListResultV1<TResource>(KubeResourceListV1<TResource> resources) => new KubeResourceListResultV1<TResource>(resources);\n\n        /// <summary>\n        ///     Convert a <see cref=\"StatusV1\"/> to a <see cref=\"KubeResourceListResultV1{TResource}\"/>.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The <see cref=\"StatusV1\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceListResultV1{TResource}\"/> that wraps the <paramref name=\"status\"/>.\n        /// </returns>\n        public static implicit operator KubeResourceListResultV1<TResource>(StatusV1 status)\n        {\n            if (status == null)\n                return null;\n\n            return new KubeResourceListResultV1<TResource>(status);\n        }\n\n        /// <summary>\n        ///     The default <see cref=\"StatusV1\"/> used when no status is available because an operation returned a list of resources.\n        /// </summary>\n        protected static StatusV1 DefaultStatus(KubeResourceListV1<TResource> resources)\n        {\n            (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n            int resourceCount = resources != null ? resources.Items.Count : 0;\n\n            return StatusV1.Success($\"Result contains {resourceCount} {apiVersion}/{kind} resources.\");\n        }\n\n        /// <summary>\n        ///     Get a typed enumerator for the resources returned with the result.\n        /// </summary>\n        /// <returns>\n        ///     The enumerator.\n        /// </returns>\n        /// <exception cref=\"KubeApiException\">\n        ///     The result <see cref=\"KubeResultV1.Status\"/> does not represent success.\n        /// </exception>\n        public IEnumerator<TResource> GetEnumerator()\n        {\n            if (!IsSuccess)\n                throw new KubeApiException(Status);\n\n            if (Resources == null)\n                return Enumerable.Empty<TResource>().GetEnumerator();\n\n            return Resources.GetEnumerator();\n        }\n\n        /// <summary>\n        ///     Get an untyped enumerator for the resources returned with the result.\n        /// </summary>\n        /// <returns>\n        ///     The enumerator.\n        /// </returns>\n        /// <exception cref=\"KubeApiException\">\n        ///     The result <see cref=\"KubeResultV1.Status\"/> does not represent success.\n        /// </exception>\n        IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeResourceListV1.cs",
    "content": "using System;\nusing System.Collections;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing Newtonsoft.Json;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The base class for Kubernetes resource lists.\n    /// </summary>\n    public abstract class KubeResourceListV1\n        : KubeObjectV1\n    {\n        /// <summary>\n        ///     Model type metadata.\n        /// </summary>\n        static readonly ConcurrentDictionary<Type, (string kind, string apiVersion)> ItemModelMetadata = new ConcurrentDictionary<Type, (string kind, string apiVersion)>();\n\n        /// <summary>\n        ///     Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\n        /// </summary>\n        [JsonProperty(\"metadata\")]\n        [YamlMember(Alias = \"metadata\")]\n        public ListMetaV1 Metadata { get; set; }\n\n        /// <summary>\n        ///     Enumerate the list's items.\n        /// </summary>\n        /// <returns>\n        ///     The list's items.\n        /// </returns>\n        public abstract IEnumerable<KubeResourceV1> EnumerateItems();\n\n        /// <summary>\n        ///     Get Kubernetes Kind / ApiVersion metadata for the items contained by the specified list type.\n        /// </summary>\n        /// <typeparam name=\"TResourceList\">\n        ///     The target resource-list type.\n        /// </typeparam>\n        /// <returns>\n        ///     A tuple containing the item Kind and ApiVersion metadata (or <c>null</c> and <c>null</c>, if no item metadata is available for <typeparamref name=\"TResourceList\"/>).\n        /// </returns>\n        public static (string kind, string apiVersion) GetListItemKubeKind<TResourceList>()\n            where TResourceList : KubeResourceListV1\n        {\n            return GetListItemKubeKind(\n                typeof(TResourceList)\n            );\n        }\n\n        /// <summary>\n        ///     Get Kubernetes Kind / ApiVersion metadata for the items contained by the specified list type.\n        /// </summary>\n        /// <param name=\"resourceListType\">\n        ///     The target resource-list type.\n        /// </param>\n        /// <returns>\n        ///     A tuple containing the item Kind and ApiVersion metadata (or <c>null</c> and <c>null</c>, if no item metadata is available for the resource-list type).\n        /// </returns>\n        public static (string kind, string apiVersion) GetListItemKubeKind(Type resourceListType)\n        {\n            (string kind, string apiVersion) = ItemModelMetadata.GetOrAdd(resourceListType, modelType =>\n            {\n                var kubeListItemAttribute = modelType.GetTypeInfo().GetCustomAttribute<KubeListItemAttribute>();\n                if (kubeListItemAttribute != null)\n                    return (kubeListItemAttribute.Kind, kubeListItemAttribute.ApiVersion);\n\n                return (null, null);\n            });\n\n            return (kind, apiVersion);\n        }\n    }\n\n    /// <summary>\n    ///     The base class for Kubernetes resource lists where the resource type is known.\n    /// </summary>\n    /// <typeparam name=\"TResource\">\n    ///     The type of resource contained in the list.\n    /// </typeparam>\n    [JsonObject]\n    public abstract class KubeResourceListV1<TResource>\n        : KubeResourceListV1, IEnumerable<TResource>\n        where TResource : KubeResourceV1\n    {\n        /// <summary>\n        ///     The list's resources.\n        /// </summary>\n        public abstract List<TResource> Items { get; }\n\n        /// <summary>\n        ///     Enumerate the list's items.\n        /// </summary>\n        /// <returns>\n        ///     The list's items.\n        /// </returns>\n        public override IEnumerable<KubeResourceV1> EnumerateItems()\n        {\n            foreach (TResource resource in Items)\n                yield return (KubeResourceV1)resource;\n        }\n\n        /// <summary>\n        ///     Get a typed enumerator for the list's resources.\n        /// </summary>\n        /// <returns>\n        ///     The <see cref=\"IEnumerator{T}\"/>.\n        /// </returns>\n        public IEnumerator<TResource> GetEnumerator() => Items.GetEnumerator();\n\n        /// <summary>\n        ///     Get an untyped enumerator for the list's resources.\n        /// </summary>\n        /// <returns>\n        ///     The <see cref=\"IEnumerator\"/>.\n        /// </returns>\n        IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeResourceResultV1.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents the result of a Kubernetes API operation that returns a resource.\n    /// </summary>\n    /// <typeparam name=\"TResource\">\n    ///     The type of resource returned by the operation.\n    /// </typeparam>\n    public class KubeResourceResultV1<TResource>\n        : KubeResultV1\n        where TResource : KubeResourceV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeResourceResultV1{TResource}\"/> representing the specified <typeparamref name=\"TResource\"/>.\n        /// </summary>\n        /// <param name=\"resource\">\n        ///     The <typeparamref name=\"TResource\"/> represented by the <see cref=\"KubeResourceResultV1{TResource}\"/>.\n        /// </param>\n        public KubeResourceResultV1(TResource resource)\n            : base(DefaultStatus)\n        {\n            Resource = resource;\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeResourceResultV1{TResource}\"/> representing a <see cref=\"StatusV1\"/>.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The <see cref=\"StatusV1\"/> represented by the <see cref=\"KubeResourceResultV1{TResource}\"/>.\n        /// </param>\n        public KubeResourceResultV1(StatusV1 status)\n            : base(status)\n        {\n        }\n\n        /// <summary>\n        ///     The <typeparamref name=\"TResource\"/> represented by the <see cref=\"KubeResourceResultV1{TResource}\"/>.\n        /// </summary>\n        public TResource Resource { get; }\n\n        /// <summary>\n        ///     The type of resource represented by the <see cref=\"KubeResourceResultV1{TResource}\"/>.\n        /// </summary>\n        public override Type ResourceType => typeof(TResource);\n\n        /// <summary>\n        ///     Implicitly convert a <see cref=\"KubeResourceResultV1{TResource}\"/> to a <typeparamref name=\"TResource\"/>.\n        /// </summary>\n        /// <param name=\"result\">\n        ///     The <see cref=\"KubeResourceResultV1{TResource}\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     The result's <see cref=\"KubeResourceResultV1{TResource}.Resource\"/>.\n        /// </returns>\n        /// <exception cref=\"KubeApiException\">\n        ///     The result <see cref=\"KubeResultV1.Status\"/> does not represent success.\n        /// </exception>\n        public static implicit operator TResource(KubeResourceResultV1<TResource> result)\n        {\n            if (result == null)\n                return null;\n\n            if (!result.IsSuccess)\n                throw new KubeApiException(result.Status);\n\n            return result.Resource;\n        }\n\n        /// <summary>\n        ///     Convert a <typeparamref name=\"TResource\"/> to a <see cref=\"KubeResourceResultV1{TResource}\"/>.\n        /// </summary>\n        /// <param name=\"resource\">\n        ///     The <typeparamref name=\"TResource\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceResultV1{TResource}\"/> that wraps the <paramref name=\"resource\"/>.\n        /// </returns>\n        public static implicit operator KubeResourceResultV1<TResource>(TResource resource) => new KubeResourceResultV1<TResource>(resource);\n\n        /// <summary>\n        ///     Convert a <see cref=\"StatusV1\"/> to a <see cref=\"KubeResourceResultV1{TResource}\"/>.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The <see cref=\"StatusV1\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceResultV1{TResource}\"/> that wraps the <paramref name=\"status\"/>.\n        /// </returns>\n        public static implicit operator KubeResourceResultV1<TResource>(StatusV1 status)\n        {\n            if (status == null)\n                return null;\n\n            return new KubeResourceResultV1<TResource>(status);\n        }\n\n        /// <summary>\n        ///     The default <see cref=\"StatusV1\"/> used when no status is available because an operation returned a status.\n        /// </summary>\n        protected static StatusV1 DefaultStatus\n        {\n            get\n            {\n                (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n                return StatusV1.Success($\"Result contains a {apiVersion}/{kind} resource.\");\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeResourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The base class for Kubernetes resources.\n    /// </summary>\n    public abstract class KubeResourceV1\n        : KubeObjectV1\n    {\n        /// <summary>\n        ///     Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\n        /// </summary>\n        [JsonProperty(\"metadata\")]\n        [YamlMember(Alias = \"metadata\")]\n        public ObjectMetaV1 Metadata { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/KubeResultV1.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents the result of a Kubernetes API operation.\n    /// </summary>\n    public abstract class KubeResultV1\n    {\n        /// <summary>\n        ///     A <see cref=\"StatusV1\"/> representing the operation status.\n        /// </summary>\n        public StatusV1 Status { get; protected set; }\n\n        /// <summary>\n        ///     Does the result represent a successful operation?\n        /// </summary>\n        public bool IsSuccess => Status?.IsSuccess ?? false;\n\n        /// <summary>\n        ///     The type of resource represented by the <see cref=\"KubeResultV1\"/>.\n        /// </summary>\n        public abstract Type ResourceType { get; }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeResultV1\"/>.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The <see cref=\"StatusV1\"/> that represents the operation result.\n        /// </param>\n        protected KubeResultV1(StatusV1 status)\n        {\n            if (status == null)\n                throw new ArgumentNullException(nameof(status));\n\n            Status = status;\n        }\n\n        /// <summary>\n        ///     Implicitly convert a <see cref=\"KubeResultV1\"/> to a <see cref=\"StatusV1\"/>.\n        /// </summary>\n        /// <param name=\"result\">\n        ///     The <see cref=\"KubeResultV1\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     The result's <see cref=\"KubeResultV1.Status\"/>.\n        /// </returns>\n        public static implicit operator StatusV1(KubeResultV1 result)\n        {\n            if (result == null)\n                return null;\n\n            return result.Status;\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/MergeStrategyAttribute.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Marks a property as supporting merge when using strategic patch in the Kubernetes API.\n    /// </summary>\n    [AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)]\n    public class MergeStrategyAttribute\n        : PatchStrategyAttribute\n    {\n        /// <summary>\n        ///     Mark the property as supporting merge when using strategic patch in the Kubernetes API.\n        /// </summary>\n        public MergeStrategyAttribute()\n        {\n        }\n\n        /// <summary>\n        ///     The name of the field (if any) to use as a key when merging items.\n        /// </summary>\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/MicroTimeV1.cs",
    "content": "using System;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    using Converters;\n\n    /// <summary>\n    ///     MicroTime is version of Time with microsecond level precision.\n    /// </summary>\n    [JsonConverter(typeof(MicroTimeV1Converter))]\n    public struct MicroTimeV1 // TODO: Implement IFormattable, IComparable<MicroTimeV1>, IEquatable<MicroTimeV1>, IComparable<DateTime>, IEquatable<DateTime>\n    {\n        /// <summary>\n        ///     The underlying <see cref=\"DateTime\"/> value.\n        /// </summary>\n        readonly DateTime _value;\n\n        /// <summary>\n        ///     Create a new <see cref=\"MicroTimeV1\"/>.\n        /// </summary>\n        /// <param name=\"value\">    \n        ///     The underlying <see cref=\"DateTime\"/> value.\n        /// </param>\n        public MicroTimeV1(DateTime value)\n        {\n            _value = value;\n        }\n\n        /// <summary>\n        ///     The underlying <see cref=\"DateTime\"/> value.\n        /// </summary>\n        public DateTime Value => _value;\n\n        /// <summary>\n        ///     Convert the <see cref=\"MicroTimeV1\"/> to a string.\n        /// </summary>\n        /// <returns>\n        ///     The string representation of the <see cref=\"MicroTimeV1\"/>.\n        /// </returns>\n        public override string ToString() => _value.ToString(\"o\");\n\n        /// <summary>\n        ///     Implicit cast operator from <see cref=\"MicroTimeV1\"/> to <see cref=\"DateTime\"/>.\n        /// </summary>\n        /// <param name=\"microTime\">The <see cref=\"MicroTimeV1\"/> value to convert.</param>\n        public static implicit operator DateTime(MicroTimeV1 microTime) => microTime.Value;\n\n        /// <summary>\n        ///     Implicit cast operator from <see cref=\"DateTime\"/> to <see cref=\"MicroTimeV1\"/>.\n        /// </summary>\n        /// <param name=\"value\">The <see cref=\"DateTime\"/> value to convert.</param>\n        public static implicit operator MicroTimeV1(DateTime value)\n        {\n            // TODO: Decide if we want to round value to nearest microsecond as part of conversion in this direction.\n\n            return new MicroTimeV1(value);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/ModelExtensions.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Extension methods for Kubernetes API models.\n    /// </summary>\n    public static class ModelExtensions\n    {\n        /// <summary>\n        ///     Get the host name and port corresponding to the Service.\n        /// </summary>\n        /// <param name=\"service\">\n        ///     The Kubernetes <see cref=\"ServiceV1\"/>.\n        /// </param>\n        /// <param name=\"portName\">\n        ///     The name of the port to use.\n        /// </param>\n        /// <returns>\n        ///     The host name and port.\n        /// </returns>\n        public static (string hostName, int? port) GetHostAndPort(this ServiceV1 service, string portName)\n        {\n            if (service == null)\n                throw new ArgumentNullException(nameof(service));\n\n            if (String.IsNullOrWhiteSpace(portName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'portName'.\", nameof(portName));\n\n            string hostName = $\"{service.Metadata.Name}.{service.Metadata.Namespace}.svc.cluster.local\";\n            \n            ServicePortV1 targetPort = service.Spec.Ports.FirstOrDefault(\n                servicePort => servicePort.Name == portName\n            );\n\n            int? port = null;\n            if (targetPort != null)\n            {\n                if (service.Spec.Type == \"NodePort\")\n                    port = targetPort.NodePort;\n                else\n                    port = targetPort.Port;\n            }\n            \n            return (hostName, port);\n        }\n\n        /// <summary>\n        ///     Determine whether a Deployment owns a ReplicaSet.\n        /// </summary>\n        /// <param name=\"replicaSet\">\n        ///     The ReplicaSet to examine.\n        /// </param>\n        /// <param name=\"deployment\">\n        ///     The Deployment to examine.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the ReplicaSet has an owner-reference to the Deployment; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool IsOwnedBy(this ReplicaSetV1 replicaSet, DeploymentV1 deployment)\n        {\n            if (replicaSet == null)\n                throw new ArgumentNullException(nameof(replicaSet));\n\n            if (deployment == null)\n                throw new ArgumentNullException(nameof(deployment));\n\n            if (replicaSet.Metadata == null)\n                throw new ArgumentException(\"Cannot evaluate ownership of the supplied ReplicaSet because its Metadata is null.\", nameof(replicaSet));\n\n            if (deployment.Metadata == null)\n                throw new ArgumentException(\"Cannot evaluate ownership of the supplied ReplicaSet because the supplied Deployment's Metadata is null.\", nameof(replicaSet));\n            \n            bool isOwnedBy = replicaSet.Metadata.OwnerReferences.Any(ownerReference =>\n                ownerReference.Kind == deployment.Kind\n                &&\n                ownerReference.ApiVersion == deployment.ApiVersion\n                &&\n                ownerReference.Name == deployment.Metadata.Name\n            );\n            \n            return isOwnedBy;\n        }\n\n        /// <summary>\n        ///     Determine the revision (represented by the \"deployment.kubernetes.io/revision\" annotation) of the Deployment.\n        /// </summary>\n        /// <param name=\"deployment\">\n        ///     The <see cref=\"DeploymentV1\"/> model.\n        /// </param>\n        /// <returns>\n        ///     The revision, if present; <c>null</c>, if the annotation is absent or not a number.\n        /// </returns>\n        public static int? GetRevision(this DeploymentV1 deployment)\n        {\n            if (deployment == null)\n                throw new ArgumentNullException(nameof(deployment));\n\n            if (deployment.Metadata == null)\n                return null;\n            \n            string rawRevision;\n            if (!deployment.Metadata.Annotations.TryGetValue(K8sAnnotations.Deployment.Revision, out rawRevision))\n                return null;\n\n            int revision;\n            if (!Int32.TryParse(rawRevision, out revision))\n                return null;\n\n            return revision;\n        }\n\n        /// <summary>\n        ///     Determine the revision (represented by the \"deployment.kubernetes.io/revision\" annotation) of the Deployment represented by the ReplicaSet.\n        /// </summary>\n        /// <param name=\"deployment\">\n        ///     The <see cref=\"ReplicaSetV1\"/> model.\n        /// </param>\n        /// <returns>\n        ///     The revision, if present; <c>null</c>, if the annotation is absent or not a number.\n        /// </returns>\n        public static int? GetRevision(this ReplicaSetV1 deployment)\n        {\n            if (deployment == null)\n                throw new ArgumentNullException(nameof(deployment));\n\n            if (deployment.Metadata == null)\n                return null;\n            \n            string rawRevision;\n            if (!deployment.Metadata.Annotations.TryGetValue(K8sAnnotations.Deployment.Revision, out rawRevision))\n                return null;\n\n            int revision;\n            if (!Int32.TryParse(rawRevision, out revision))\n                return null;\n\n            return revision;\n        }\n\n        /// <summary>\n        ///     Get the composite label selector (if any) associated with the specified Deployment.\n        /// </summary>\n        /// <param name=\"deployment\">\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment's current state.\n        /// </param>\n        /// <returns>\n        ///     The composite label selector (e.g. \"key1=value1,key2=value2\"), or <c>null</c> if the Deployment doesn't specify any label selectors.\n        /// </returns>\n        public static string GetLabelSelector(this DeploymentV1 deployment)\n        {\n            if (deployment == null)\n                throw new ArgumentNullException(nameof(deployment));\n            \n            return deployment.Spec?.Selector?.GetLabelSelector();\n        }\n\n        /// <summary>\n        ///     Get the composite label selector (if any) associated with the specified Deployment.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment's current state.\n        /// </param>\n        /// <returns>\n        ///     The composite label selector (e.g. \"key1=value1,key2=value2\"), or <c>null</c> if <paramref name=\"labelSelector\" />'s <see cref=\"LabelSelectorV1.MatchLabels\"/> is empty.\n        /// </returns>\n        public static string GetLabelSelector(this LabelSelectorV1 labelSelector)\n        {\n            if (labelSelector == null)\n                throw new ArgumentNullException(nameof(labelSelector));\n\n            if (labelSelector.MatchLabels.Count == 0)\n                return null;\n\n            return String.Join(\",\", labelSelector.MatchLabels.Select(\n                selector => $\"{selector.Key}={selector.Value}\"\n            ));\n        }\n\n        /// <summary>\n        /// Create an ObjectReference (v1) representing the resource.\n        /// </summary>\n        /// <param name=\"resource\">The <see cref=\"KubeResourceV1\"/>.</param>\n        /// <returns>The new <see cref=\"ObjectReferenceV1\"/>.</returns>\n        /// <exception cref=\"ArgumentException\">\n        ///     <paramref name=\"resource\"/> has <c>null</c> metadata.\n        /// </exception>\n        public static ObjectReferenceV1 ToObjectReference(this KubeResourceV1 resource)\n        {\n            if (resource == null)\n                throw new ArgumentNullException(nameof(resource));\n            \n            ObjectMetaV1 metadata = resource.Metadata;\n            if (metadata == null)\n                throw new ArgumentException($\"{nameof(KubeResourceV1)} has no metadata.\", nameof(resource));\n\n            return new ObjectReferenceV1\n            {\n                Kind = resource.Kind,\n                ApiVersion = resource.ApiVersion ?? \"v1\",\n                Name = metadata.Name,\n                Namespace = metadata.Namespace,\n                Uid = metadata.Uid,\n                ResourceVersion = metadata.ResourceVersion\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/ModelMetadata.cs",
    "content": "using System;\nusing System.Reflection;\nusing System.Linq.Expressions;\nusing System.Linq;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Helper methods for working with model metadata.\n    /// </summary>\n    public static class ModelMetadata\n    {\n        /// <summary>\n        ///     Represents an empty list of keys (resource field names).\n        /// </summary>\n        static readonly IReadOnlyList<string> NoKeys = new string[0];\n\n        /// <summary>\n        ///     <see cref=\"KubeObjectV1\"/> model metadata.\n        /// </summary>\n        public static class KubeObject\n        {\n            /// <summary>\n            ///     The <see cref=\"Type\"/> representing <see cref=\"KubeResourceV1\"/>.\n            /// </summary>\n            static readonly Type KubeResourceV1Type = typeof(KubeResourceV1);\n\n            /// <summary>\n            ///     The <see cref=\"Type\"/> representing <see cref=\"KubeResourceV1\"/>.\n            /// </summary>\n            static readonly Type KubeResourceListV1Type = typeof(KubeResourceListV1);\n\n            /// <summary>\n            ///     Get kind and apiVersion metadata for all model types in the specified assemblies that derive from <see cref=\"KubeResourceListV1\"/>.\n            /// </summary>\n            /// <param name=\"assemblies\">\n            ///     The target assemblies.\n            /// </param>\n            /// <returns>\n            ///     A dictionary of kind/apiVersion tuples, keyed by model type.\n            /// </returns>\n            public static Dictionary<Type, (string kind, string apiVersion)> BuildTypeToKindLookup(params Assembly[] assemblies) => BuildTypeToKindLookup((IEnumerable<Assembly>)assemblies);\n\n            /// <summary>\n            ///     Get kind and apiVersion metadata for all model types in the specified assemblies that derive from <see cref=\"KubeResourceListV1\"/>.\n            /// </summary>\n            /// <param name=\"assemblies\">\n            ///     The target assemblies.\n            /// </param>\n            /// <returns>\n            ///     A dictionary of kind/apiVersion tuples, keyed by model type.\n            /// </returns>\n            public static Dictionary<Type, (string kind, string apiVersion)> BuildTypeToKindLookup(IEnumerable<Assembly> assemblies)\n            {\n                if (assemblies == null)\n                    throw new ArgumentNullException(nameof(assemblies));\n\n                var lookup = new Dictionary<Type, (string kind, string apiVersion)>();\n\n                foreach (Type modelType in assemblies.SelectMany(assembly => assembly.GetTypes()))\n                {\n                    TypeInfo modelTypeInfo = modelType.GetTypeInfo();\n                    if (!modelTypeInfo.IsPublic)\n                        continue;\n\n                    if (!modelTypeInfo.IsClass)\n                        continue;\n\n                    if (modelTypeInfo.IsAbstract)\n                        continue;\n\n                    if (!KubeResourceV1Type.IsAssignableFrom(modelType))\n                        continue;\n\n                    var kubeObjectAttribute = modelTypeInfo.GetCustomAttribute<KubeObjectAttribute>();\n                    if (kubeObjectAttribute == null)\n                        continue;\n\n                    var kubeKind = (kind: kubeObjectAttribute.Kind, apiVersion: kubeObjectAttribute.ApiVersion);\n                    lookup[modelType] = kubeKind;\n                }\n\n                return lookup;\n            }\n\n            /// <summary>\n            ///     Get kind and apiVersion metadata for all model types in the specified assemblies that derive from <see cref=\"KubeResourceListV1\"/>.\n            /// </summary>\n            /// <param name=\"assemblies\">\n            ///     The target assemblies.\n            /// </param>\n            /// <returns>\n            ///     A dictionary of kind/apiVersion tuples, keyed by model type.\n            /// </returns>\n            public static Dictionary<Type, (string kind, string apiVersion)> BuildListTypeToKindLookup(params Assembly[] assemblies) => BuildListTypeToKindLookup((IEnumerable<Assembly>)assemblies);\n\n            /// <summary>\n            ///     Get kind and apiVersion metadata for all model types in the specified assemblies that derive from <see cref=\"KubeResourceListV1\"/>.\n            /// </summary>\n            /// <param name=\"assemblies\">\n            ///     The target assemblies.\n            /// </param>\n            /// <returns>\n            ///     A dictionary of kind/apiVersion tuples, keyed by model type.\n            /// </returns>\n            public static Dictionary<Type, (string kind, string apiVersion)> BuildListTypeToKindLookup(IEnumerable<Assembly> assemblies)\n            {\n                if (assemblies == null)\n                    throw new ArgumentNullException(nameof(assemblies));\n\n                var lookup = new Dictionary<Type, (string kind, string apiVersion)>();\n\n                foreach (Type modelType in assemblies.SelectMany(assembly => assembly.GetTypes()))\n                {\n                    TypeInfo modelTypeInfo = modelType.GetTypeInfo();\n                    if (!modelTypeInfo.IsPublic)\n                        continue;\n\n                    if (!modelTypeInfo.IsClass)\n                        continue;\n\n                    if (modelTypeInfo.IsAbstract)\n                        continue;\n\n                    if (!KubeResourceListV1Type.IsAssignableFrom(modelType))\n                        continue;\n\n                    var kubeObjectAttribute = modelTypeInfo.GetCustomAttribute<KubeObjectAttribute>();\n                    if (kubeObjectAttribute == null)\n                        continue;\n\n                    var kubeKind = (kind: kubeObjectAttribute.Kind, apiVersion: kubeObjectAttribute.ApiVersion);\n                    lookup[modelType] = kubeKind;\n                }\n\n                return lookup;\n            }\n\n            /// <summary>\n            ///     Get kind and apiVersion metadata for all model types in the specified assemblies that derive from <see cref=\"KubeObjectV1\"/>.\n            /// </summary>\n            /// <param name=\"assemblies\">\n            ///     The target assemblies.\n            /// </param>\n            /// <returns>\n            ///     A dictionary of model types, keyed by kind/apiVersion tuple.\n            /// </returns>\n            public static Dictionary<(string kind, string apiVersion), Type> BuildKindToTypeLookup(params Assembly[] assemblies) => BuildKindToTypeLookup((IEnumerable<Assembly>)assemblies);\n\n            /// <summary>\n            ///     Get kind and apiVersion metadata for all model types in the specified assemblies that derive from <see cref=\"KubeObjectV1\"/>.\n            /// </summary>\n            /// <param name=\"assemblies\">\n            ///     The target assemblies.\n            /// </param>\n            /// <returns>\n            ///     A dictionary of model types, keyed by kind/apiVersion tuple.\n            /// </returns>\n            public static Dictionary<(string kind, string apiVersion), Type> BuildKindToTypeLookup(IEnumerable<Assembly> assemblies)\n            {\n                if (assemblies == null)\n                    throw new ArgumentNullException(nameof(assemblies));\n\n                var lookup = new Dictionary<(string kind, string apiVersion), Type>();\n\n                foreach (Type modelType in assemblies.SelectMany(assembly => assembly.GetTypes()))\n                {\n                    TypeInfo modelTypeInfo = modelType.GetTypeInfo();\n                    if (!modelTypeInfo.IsPublic)\n                        continue;\n\n                    if (!modelTypeInfo.IsClass)\n                        continue;\n\n                    if (modelTypeInfo.IsAbstract)\n                        continue;\n\n                    if (!KubeResourceV1Type.IsAssignableFrom(modelType))\n                        continue;\n\n                    var kubeObjectAttribute = modelTypeInfo.GetCustomAttribute<KubeObjectAttribute>();\n                    if (kubeObjectAttribute == null)\n                        continue;\n\n                    var kubeKind = (kind: kubeObjectAttribute.Kind, apiVersion: kubeObjectAttribute.ApiVersion);\n                    lookup[kubeKind] = modelType;\n                }\n\n                return lookup;\n            }\n\n            /// <summary>\n            ///     Get kind and apiVersion metadata for all model types in the specified assemblies that derive from <see cref=\"KubeResourceListV1\"/>.\n            /// </summary>\n            /// <param name=\"assemblies\">\n            ///     The target assemblies.\n            /// </param>\n            /// <returns>\n            ///     A dictionary of model types, keyed by kind/apiVersion tuple.\n            /// </returns>\n            public static Dictionary<(string kind, string apiVersion), Type> BuildKindToListTypeLookup(params Assembly[] assemblies) => BuildKindToListTypeLookup((IEnumerable<Assembly>)assemblies);\n\n            /// <summary>\n            ///     Get kind and apiVersion metadata for all model types in the specified assemblies that derive from <see cref=\"KubeResourceListV1\"/>.\n            /// </summary>\n            /// <param name=\"assemblies\">\n            ///     The target assemblies.\n            /// </param>\n            /// <returns>\n            ///     A dictionary of model types, keyed by kind/apiVersion tuple.\n            /// </returns>\n            public static Dictionary<(string kind, string apiVersion), Type> BuildKindToListTypeLookup(IEnumerable<Assembly> assemblies)\n            {\n                if (assemblies == null)\n                    throw new ArgumentNullException(nameof(assemblies));\n\n                var lookup = new Dictionary<(string kind, string apiVersion), Type>();\n\n                foreach (Type modelType in assemblies.SelectMany(assembly => assembly.GetTypes()))\n                {\n                    TypeInfo modelTypeInfo = modelType.GetTypeInfo();\n                    if (!modelTypeInfo.IsPublic)\n                        continue;\n\n                    if (!modelTypeInfo.IsClass)\n                        continue;\n\n                    if (modelTypeInfo.IsAbstract)\n                        continue;\n\n                    if (!KubeResourceListV1Type.IsAssignableFrom(modelType))\n                        continue;\n\n                    var kubeObjectAttribute = modelTypeInfo.GetCustomAttribute<KubeObjectAttribute>();\n                    if (kubeObjectAttribute == null)\n                        continue;\n\n                    var kubeListItemAttribute = modelTypeInfo.GetCustomAttribute<KubeListItemAttribute>();\n                    if (kubeListItemAttribute == null)\n                        continue;\n\n                    var kubeKind = (kind: kubeListItemAttribute.Kind, apiVersion: kubeListItemAttribute.ApiVersion);\n                    lookup[kubeKind] = modelType;\n                }\n\n                return lookup;\n            }\n        }\n\n        /// <summary>\n        ///     Helper methods for working with model metadata relating to strategic resource patching.\n        /// </summary>\n        public static class StrategicPatch\n        {\n            /// <summary>\n            ///     Determine whether the specified resource field supports merge in K8s strategic patch.\n            /// </summary>\n            /// <param name=\"property\">\n            ///     The target property.\n            /// </param>\n            /// <returns>\n            ///     <c>true</c>, if the property supports merge; otherwise, <c>false</c>.\n            /// </returns>\n            public static bool IsMergeStrategy(PropertyInfo property)\n            {\n                if (property == null)\n                    throw new ArgumentNullException(nameof(property));\n\n                return property.GetCustomAttribute<MergeStrategyAttribute>() != null;\n            }\n\n            /// <summary>\n            ///     Determine whether the specified resource field retains existing values for fields if they are not supplied in K8s strategic patch (via the $retainKeys directive).\n            /// </summary>\n            /// <param name=\"property\">\n            ///     The target property.\n            /// </param>\n            /// <returns>\n            ///     <c>true</c>, if the existing values are retained; otherwise, <c>false</c>.\n            /// </returns>\n            public static bool IsRetainKeysStrategy(PropertyInfo property)\n            {\n                if (property == null)\n                    throw new ArgumentNullException(nameof(property));\n\n                return property.GetCustomAttribute<RetainKeysStrategyAttribute>() != null;\n            }\n\n            /// <summary>\n            ///     Get all patch strategies applicable to the specified property.\n            /// </summary>\n            /// <param name=\"property\">\n            ///     The target property.\n            /// </param>\n            /// <returns>\n            ///     One or more <see cref=\"PatchStrategies\"/> flags indicating the applicable strategies.\n            /// </returns>\n            public static PatchStrategies GetStrategies(PropertyInfo property)\n            {\n                PatchStrategies patchStrategies = PatchStrategies.Replace;\n\n                foreach (PatchStrategyAttribute strategyAttribute in property.GetCustomAttributes<PatchStrategyAttribute>())\n                {\n                    switch (strategyAttribute)\n                    {\n                        case MergeStrategyAttribute mergeStrategy:\n                            {\n                                patchStrategies |= PatchStrategies.Merge;\n\n                                break;\n                            }\n                        case RetainKeysStrategyAttribute retainKeys:\n                            {\n                                patchStrategies |= PatchStrategies.RetainKeys;\n\n                                break;\n                            }\n                    }\n                }\n\n                return patchStrategies;\n            }\n\n            /// <summary>\n            ///     Get the merge key (if any) represented by the specified model property.\n            /// </summary>\n            /// <param name=\"property\">\n            ///     The target property.\n            /// </param>\n            /// <returns>\n            ///     The merge key, or <c>null</c> if the property does not represent the resource's merge key.\n            /// </returns>\n            public static string GetMergeKey(PropertyInfo property)\n            {\n                if (property == null)\n                    throw new ArgumentNullException(nameof(property));\n\n                return property.GetCustomAttribute<MergeStrategyAttribute>()?.Key;\n            }\n\n            /// <summary>\n            ///     Helper methods for working with typed model metadata relating to strategic resource patching.\n            /// </summary>\n            /// <typeparam name=\"TModel\">\n            ///     The model type.\n            /// </typeparam>\n            public static class For<TModel>\n                where TModel : class\n            {\n                /// <summary>\n                ///     Determine whether the specified property supports merge in K8s strategic resource patching.\n                /// </summary>\n                /// <typeparam name=\"TProperty\">\n                ///     The property type.\n                /// </typeparam>\n                /// <param name=\"propertyAccessExpression\">\n                ///     A property-access expression representing the target property.\n                /// </param>\n                /// <returns>\n                ///     <c>true</c>, if the property supports merge; otherwise, <c>false</c>.\n                /// </returns>\n                public static bool IsMergeStrategy<TProperty>(Expression<Func<TModel, TProperty>> propertyAccessExpression)\n                {\n                    if (propertyAccessExpression == null)\n                        throw new ArgumentNullException(nameof(propertyAccessExpression));\n\n                    return StrategicPatch.IsMergeStrategy(\n                        GetProperty(propertyAccessExpression)\n                    );\n                }\n\n                /// <summary>\n                ///     Determine whether the specified resource field retains existing values for fields if they are not supplied in K8s strategic patch (via the $retainKeys directive).\n                /// </summary>\n                /// <typeparam name=\"TProperty\">\n                ///     The property type.\n                /// </typeparam>\n                /// <param name=\"propertyAccessExpression\">\n                ///     A property-access expression representing the target property.\n                /// </param>\n                /// <returns>\n                ///     <c>true</c>, if existing values are retained; otherwise, <c>false</c>.\n                /// </returns>\n                public static bool IsRetainKeysStrategy<TProperty>(Expression<Func<TModel, TProperty>> propertyAccessExpression)\n                {\n                    if (propertyAccessExpression == null)\n                        throw new ArgumentNullException(nameof(propertyAccessExpression));\n\n                    return StrategicPatch.IsRetainKeysStrategy(\n                        GetProperty(propertyAccessExpression)\n                    );\n                }\n\n                /// <summary>\n                ///     Get all patch strategies applicable to the specified property.\n                /// </summary>\n                /// <typeparam name=\"TProperty\">\n                ///     The property type.\n                /// </typeparam>\n                /// <param name=\"propertyAccessExpression\">\n                ///     A property-access expression representing the target property.\n                /// </param>\n                /// <returns>\n                ///     One or more <see cref=\"PatchStrategies\"/> flags indicating the applicable strategies.\n                /// </returns>\n                public static PatchStrategies GetStrategies<TProperty>(Expression<Func<TModel, TProperty>> propertyAccessExpression)\n                {\n                    if (propertyAccessExpression == null)\n                        throw new ArgumentNullException(nameof(propertyAccessExpression));\n\n                    return StrategicPatch.GetStrategies(\n                        GetProperty(propertyAccessExpression)\n                    );\n                }\n\n                /// <summary>\n                ///     Get the merge key (if any) represented by the specified model property.\n                /// </summary>\n                /// <typeparam name=\"TProperty\">\n                ///     The property type.\n                /// </typeparam>\n                /// <param name=\"propertyAccessExpression\">\n                ///     A property-access expression representing the target property.\n                /// </param>\n                /// <returns>\n                ///     The merge key, or <c>null</c> if the property does not represent the resource's merge key.\n                /// </returns>\n                public static string GetMergeKey<TProperty>(Expression<Func<TModel, TProperty>> propertyAccessExpression)\n                {\n                    if (propertyAccessExpression == null)\n                        throw new ArgumentNullException(nameof(propertyAccessExpression));\n\n                    return StrategicPatch.GetMergeKey(\n                        GetProperty(propertyAccessExpression)\n                    );\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Retrieve the property represented by the specified property-access expression.\n        /// </summary>\n        /// <param name=\"propertyAccessExpression\">\n        ///     A property-access expression representing the target property.\n        /// </param>\n        /// <typeparam name=\"TModel\">\n        ///     The model type.\n        /// </typeparam>\n        /// <typeparam name=\"TProperty\">\n        ///     The property type.\n        /// </typeparam>\n        /// <returns>\n        ///     A <see cref=\"PropertyInfo\"/> representing the property.\n        /// </returns>\n        static PropertyInfo GetProperty<TModel, TProperty>(Expression<Func<TModel, TProperty>> propertyAccessExpression)\n            where TModel : class\n        {\n            if (propertyAccessExpression.Body.NodeType != ExpressionType.MemberAccess)\n                throw new ArgumentException(\"The supplied expression does not represent a member-access expression.\", nameof(propertyAccessExpression));\n\n            MemberExpression memberAccess = (MemberExpression)propertyAccessExpression.Body;\n            PropertyInfo property = memberAccess.Member as PropertyInfo;\n            if (property == null)\n                throw new ArgumentException(\"The supplied expression does not represent a property-access expression.\", nameof(propertyAccessExpression));\n\n            return property;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/ObjectMetaV1.cs",
    "content": "﻿using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.\n    /// </summary>\n    public partial class ObjectMetaV1\n    {\n        /// <summary>\n        ///     Additional data (if any) that does not correspond to properties defined on the <see cref=\"ObjectMetaV1\"/> model.\n        /// </summary>\n        [JsonExtensionData]\n        readonly Dictionary<string, JToken> _extensionData = new Dictionary<string, JToken>();\n\n        /// <summary>\n        ///     Additional serialised data (if any) that does not correspond to properties defined on the <see cref=\"ObjectMetaV1\"/> model.\n        /// </summary>\n        [JsonIgnore, YamlIgnore]\n        public IDictionary<string, JToken> ExtensionData => _extensionData;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/PatchStrategies.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents field-level strategies for Kubernetes strategic patch.\n    /// </summary>\n    [Flags]\n    public enum PatchStrategies\n    {\n        /// <summary>\n        ///     Field contents will be replaced.\n        /// </summary>\n        Replace = 0,\n\n        /// <summary>\n        ///     Field contents will be merged.\n        /// </summary>\n        Merge = 1,\n\n        /// <summary>\n        ///     Field contents will be replaced, except for contents whose keys match a value supplied in the $retainKeys directive.\n        /// </summary>\n        RetainKeys = 2\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/PatchStrategyAttribute.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Base class for attributes representing property-level patch strategies in Kubernetes strategic patch.\n    /// </summary>\n    public abstract class PatchStrategyAttribute\n        : Attribute\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"PatchStrategyAttribute\"/>.\n        /// </summary>\n        protected PatchStrategyAttribute()\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/QuantityResource.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    [KubeObject(\"Quantity\", \"resource\")]\n    public class QuantityResource\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/ResourceEventType.cs",
    "content": "using System.Runtime.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Well-known types of Kubernetes resource events.\n    /// </summary>\n    public enum ResourceEventType\n    {\n        /// <summary>\n        ///     Resource was created.\n        /// </summary>\n        [EnumMember(Value = \"ADDED\")]\n        Added,\n\n        /// <summary>\n        ///     Resource was modified.\n        /// </summary>\n        [EnumMember(Value = \"MODIFIED\")]\n        Modified,\n\n        /// <summary>\n        ///     Resource was deleted.\n        /// </summary>\n        [EnumMember(Value = \"DELETED\")]\n        Deleted,\n\n        /// <summary>\n        ///     Event represents a watch bookmark.\n        /// </summary>\n        /// <seealso href=\"https://github.com/kubernetes/enhancements/blob/f61581f3cf591f944e37568b715ff0b2ba357df6/keps/sig-api-machinery/20190206-watch-bookmark.md\"/>\n        [EnumMember(Value = \"BOOKMARK\")]\n        Bookmark,\n\n        /// <summary>\n        ///     Resource encountered an error condition.\n        /// </summary>\n        [EnumMember(Value = \"ERROR\")]\n        Error\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/ResourceEventV1.cs",
    "content": "using Newtonsoft.Json;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents the payload for a Kubernetes resource event.\n    /// </summary>\n    /// <typeparam name=\"TResource\">\n    ///     The type of resource to which the event relates.\n    /// </typeparam>\n    public class ResourceEventV1<TResource>\n        : IResourceEventV1<TResource>\n        where TResource : KubeResourceV1\n    {\n        /// <summary>\n        ///     The event type.\n        /// </summary>\n        [JsonProperty(\"type\")]\n        public ResourceEventType EventType { get; set; }\n\n        /// <summary>\n        ///     The resource to which the event relates.\n        /// </summary>\n        [JsonProperty(\"object\")]\n        public TResource Resource { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/RetainKeysStrategyAttribute.cs",
    "content": "using System;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Marks a property as supporting merge when using strategic patch in the Kubernetes API.\n    /// </summary>\n    [AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)]\n    public class RetainKeysStrategyAttribute\n        : PatchStrategyAttribute\n    {\n        /// <summary>\n        ///     Mark the property as supporting merge when using strategic patch in the Kubernetes API.\n        /// </summary>\n        public RetainKeysStrategyAttribute()\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/StatusV1.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing Newtonsoft.Json;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Status is a return value for calls that don't return other objects.\n    /// </summary>\n    public partial class StatusV1\n    {\n        /// <summary>\n        ///     The <see cref=\"Status\"/> value representing success.\n        /// </summary>\n        public const string SuccessStatus = \"Success\";\n\n        /// <summary>\n        ///     The <see cref=\"Status\"/> value representing failure.\n        /// </summary>\n        public const string FailureStatus = \"Failure\";\n\n        /// <summary>\n        ///     Does the <see cref=\"StatusV1\"/> represent success?\n        /// </summary>\n        [JsonIgnore, YamlIgnore]\n        public bool IsSuccess => Status == SuccessStatus;\n\n        /// <summary>\n        ///     Does the <see cref=\"StatusV1\"/> represent failure?\n        /// </summary>\n        [JsonIgnore, YamlIgnore]\n        public bool IsFailure => Status == FailureStatus;\n\n        /// <summary>\n        ///     Enumerate the list's items.\n        /// </summary>\n        /// <returns>\n        ///     The list's items.\n        /// </returns>\n        public override IEnumerable<KubeResourceV1> EnumerateItems()\n        {\n            yield break; // StatusV1 is not really a Kubernetes resource list.\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"StatusV1\"/> representing success.\n        /// </summary>\n        /// <param name=\"message\">\n        ///     The status message.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public static StatusV1 Success(string message)\n        {\n            if (String.IsNullOrWhiteSpace(message))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'message'.\", nameof(message));\n            \n            return new StatusV1\n            {\n                Status = SuccessStatus,\n                Message = message\n            };\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"StatusV1\"/> representing failure.\n        /// </summary>\n        /// <param name=\"message\">\n        ///     The status message.\n        /// </param>\n        /// <param name=\"reason\">\n        ///     An optional machine-parseable reason code indicating the cause of the failure.\n        /// </param>\n        /// <param name=\"code\">\n        ///     An optional HTTP status code representing the cause of the failure.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public static StatusV1 Failure(string message, string reason = null, int? code = null)\n        {\n            if (String.IsNullOrWhiteSpace(message))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'message'.\", nameof(message));\n            \n            return new StatusV1\n            {\n                Status = FailureStatus,\n                Message = message,\n                Reason = reason,\n                Code = code\n            };\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/ThirdPartyResourceListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ThirdPartyResourceList is a list of ThirdPartyResources.\n    /// </summary>\n    [KubeObject(\"ThirdPartyResourceList\", \"extensions/v1beta1\")]\n    public class ThirdPartyResourceListV1Beta1 : KubeResourceListV1<ThirdPartyResourceV1Beta1>\n    {\n        /// <summary>\n        ///     Items is the list of ThirdPartyResources.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ThirdPartyResourceV1Beta1> Items { get; } = new List<ThirdPartyResourceV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/ThirdPartyResourceV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource types to the API.  It consists of one or more Versions of the api.\n    /// </summary>\n    [KubeObject(\"ThirdPartyResource\", \"extensions/v1beta1\")]\n    public class ThirdPartyResourceV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Description is the description of this object.\n        /// </summary>\n        [JsonProperty(\"description\")]\n        public string Description { get; set; }\n\n        /// <summary>\n        ///     Versions are versions for this third party object\n        /// </summary>\n        [JsonProperty(\"versions\", NullValueHandling = NullValueHandling.Ignore)]\n        public List<APIVersionV1Beta1> Versions { get; set; } = new List<APIVersionV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/TimeV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    [KubeObject(\"Time\", \"v1\")]\n    public class TimeV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/Yaml.cs",
    "content": "using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.IO;\nusing System.Text;\nusing YamlDotNet.Serialization;\n\nusing KubeResourceClient = KubeClient.ResourceClients.KubeResourceClient;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Helper methods for YAML serialisation / deserialisation of models.\n    /// </summary>\n    public static class Yaml\n    {\n        /// <summary>\n        ///     The buffer size used when reading from / writing to streams.\n        /// </summary>\n        const int StreamBufferSize = 1024;\n\n        /// <summary>\n        ///     The singleton YAML <see cref=\"Deserializer\"/> used by static methods on <see cref=\"Yaml\"/>.\n        /// </summary>\n        static readonly IDeserializer YamlDeserialiser = new DeserializerBuilder().IgnoreUnmatchedProperties().Build();\n\n        /// <summary>\n        ///     The singleton YAML <see cref=\"Serializer\"/> used by static methods on <see cref=\"Yaml\"/>.\n        /// </summary>\n        static readonly ISerializer YamlSerialiser = new SerializerBuilder().Build();\n\n        /// <summary>\n        ///     The singleton (JSON-compatible) YAML <see cref=\"Serializer\"/> used by static methods on <see cref=\"Yaml\"/>.\n        /// </summary>\n        static readonly ISerializer YamlJsonSerialiser = new SerializerBuilder().JsonCompatible().Build();\n\n        /// <summary>\n        ///     The singleton <see cref=\"JsonSerializer\"/> used by static methods on <see cref=\"Yaml\"/>.\n        /// </summary>\n        static readonly JsonSerializer JsonSerializer = Newtonsoft.Json.JsonSerializer.Create(KubeResourceClient.SerializerSettings);\n\n        /// <summary>\n        ///     Convert YAML to JSON.\n        /// </summary>\n        /// <param name=\"yaml\">\n        ///     A <see cref=\"TextReader\"/> containing the YAML to convert.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JToken\"/> representing the converted JSON.\n        /// </returns>\n        public static JToken ToJson(TextReader yaml)\n        {\n            if (yaml == null)\n                throw new ArgumentNullException(nameof(yaml));\n\n            object deserialisedYaml = YamlDeserialiser.Deserialize(yaml);\n\n            using (MemoryStream buffer = new MemoryStream())\n            {\n                using (TextWriter jsonWriter = CreateTextWriter(buffer))\n                {\n                    YamlJsonSerialiser.Serialize(jsonWriter, deserialisedYaml);\n                    jsonWriter.Flush();\n                }\n\n                buffer.Seek(0, SeekOrigin.Begin);\n\n                using (JsonReader jsonReader = CreateJsonReader(buffer))\n                {\n                    return JToken.Load(jsonReader);\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Convert YAML to JSON.\n        /// </summary>\n        /// <param name=\"yaml\">\n        ///     A string containing the YAML to convert.\n        /// </param>\n        /// <param name=\"formatting\">\n        ///     A <see cref=\"Formatting\"/> value indicating whether the converted JSON should be formatted (i.e. indented).\n        /// </param>\n        /// <returns>\n        ///     A string containing the converted JSON.\n        /// </returns>\n        public static string ToJson(string yaml, Formatting formatting = Formatting.None)\n        {\n            if (yaml == null)\n                throw new ArgumentNullException(nameof(yaml));\n\n            object deserialisedYaml = YamlDeserialiser.Deserialize(\n                new StringReader(yaml)\n            );\n\n            using (MemoryStream buffer = new MemoryStream())\n            {\n                using (TextWriter jsonWriter = CreateTextWriter(buffer))\n                {\n                    YamlJsonSerialiser.Serialize(jsonWriter, deserialisedYaml);\n                    jsonWriter.Flush();\n                }\n\n                buffer.Seek(0, SeekOrigin.Begin);\n\n                using (JsonReader jsonReader = CreateJsonReader(buffer))\n                {\n                    return JToken.Load(jsonReader).ToString(formatting);\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Deserialise a <typeparamref name=\"TModel\"/> from YAML.\n        /// </summary>\n        /// <typeparam name=\"TModel\">\n        ///     The type of model to deserialise.\n        /// </typeparam>\n        /// <param name=\"yaml\">\n        ///     A <see cref=\"TextReader\"/> containing the YAML.\n        /// </param>\n        /// <returns>\n        ///     The deserialised <typeparamref name=\"TModel\"/>.\n        /// </returns>\n        /// <remarks>\n        ///     Delegates the actual deserialisation to JSON.NET, after converting the YAML to JSON.\n        ///\n        ///     Not particularly efficient, but safe and reliable.\n        /// </remarks>\n        public static TModel Deserialize<TModel>(TextReader yaml)\n        {\n            if (yaml == null)\n                throw new ArgumentNullException(nameof(yaml));\n\n            object deserialisedYaml = YamlDeserialiser.Deserialize(yaml);\n\n            using (MemoryStream buffer = new MemoryStream())\n            {\n                using (JsonWriter jsonWriter = CreateJsonWriter(buffer))\n                {\n                    JsonSerializer.Serialize(jsonWriter, deserialisedYaml);\n                    jsonWriter.Flush();\n                }\n\n                buffer.Seek(0, SeekOrigin.Begin);\n\n                using (JsonReader jsonReader = CreateJsonReader(buffer))\n                {\n                    return JsonSerializer.Deserialize<TModel>(jsonReader);\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Serialise a model to YAML.\n        /// </summary>\n        /// <param name=\"model\">\n        ///     The model to serialise.\n        /// </param>\n        /// <param name=\"writer\">\n        ///     A <see cref=\"TextWriter\"/> that will receive the serialised YAML.\n        /// </param>\n        /// <remarks>\n        ///     Delegates the actual deserialisation to JSON.NET, before converting the JSON to YAML.\n        ///\n        ///     Not particularly efficient, but safe and reliable.\n        /// </remarks>\n        public static void Serialize(object model, TextWriter writer)\n        {\n            if (model == null)\n                throw new ArgumentNullException(nameof(model));\n\n            if (writer == null)\n                throw new ArgumentNullException(nameof(writer));\n\n            object serializableModel;\n\n            using (MemoryStream buffer = new MemoryStream())\n            {\n                using (JsonWriter jsonWriter = CreateJsonWriter(buffer))\n                {\n                    JsonSerializer.Serialize(jsonWriter, model);\n                    jsonWriter.Flush();\n                }\n\n                buffer.Seek(0, SeekOrigin.Begin);\n\n                using (TextReader yamlReader = CreateTextReader(buffer))\n                {\n                    serializableModel = YamlDeserialiser.Deserialize(yamlReader);\n                }\n            }\n\n            YamlSerialiser.Serialize(writer, serializableModel);\n        }\n\n        /// <summary>\n        ///     Create a <see cref=\"JsonReader\"/> that reads from the specified stream.\n        /// </summary>\n        /// <param name=\"stream\">\n        ///     The target stream.\n        /// </param>\n        /// <returns>\n        ///     The new <see cref=\"JsonReader\"/>.\n        /// </returns>\n        static JsonReader CreateJsonReader(Stream stream)\n        {\n            if (stream == null)\n                throw new ArgumentNullException(nameof(stream));\n\n            TextReader textReader = null;\n            JsonReader jsonReader = null;\n\n            try\n            {\n                textReader = CreateTextReader(stream);\n                jsonReader = new JsonTextReader(textReader);\n            }\n            catch (Exception)\n            {\n                using (jsonReader)\n                using (textReader)\n                {\n                    throw;\n                }\n            }\n\n            return jsonReader;\n        }\n\n        /// <summary>\n        ///     Create a <see cref=\"JsonWriter\"/> that writes to the specified stream.\n        /// </summary>\n        /// <param name=\"stream\">\n        ///     The target stream.\n        /// </param>\n        /// <returns>\n        ///     The new <see cref=\"JsonWriter\"/>.\n        /// </returns>\n        static JsonWriter CreateJsonWriter(Stream stream)\n        {\n            if (stream == null)\n                throw new ArgumentNullException(nameof(stream));\n\n            TextWriter textWriter = null;\n            JsonWriter jsonWriter = null;\n\n            try\n            {\n                textWriter = CreateTextWriter(stream);\n                jsonWriter = new JsonTextWriter(textWriter);\n            }\n            catch (Exception)\n            {\n                using (jsonWriter)\n                using (textWriter)\n                {\n                    throw;\n                }\n            }\n\n            return jsonWriter;\n        }\n\n        /// <summary>\n        ///     Create a <see cref=\"TextReader\"/> that reads from the specified stream.\n        /// </summary>\n        /// <param name=\"stream\">\n        ///     The target stream.\n        /// </param>\n        /// <returns>\n        ///     The new <see cref=\"TextReader\"/>.\n        /// </returns>\n        static TextReader CreateTextReader(Stream stream)\n        {\n            if (stream == null)\n                throw new ArgumentNullException(nameof(stream));\n\n            return new StreamReader(stream, Encoding.UTF8, detectEncodingFromByteOrderMarks: false, bufferSize: StreamBufferSize, leaveOpen: true);\n        }\n\n        /// <summary>\n        ///     Create a <see cref=\"TextWriter\"/> that writes to the specified stream.\n        /// </summary>\n        /// <param name=\"stream\">\n        ///     The target stream.\n        /// </param>\n        /// <returns>\n        ///     The new <see cref=\"TextWriter\"/>.\n        /// </returns>\n        static TextWriter CreateTextWriter(Stream stream)\n        {\n            if (stream == null)\n                throw new ArgumentNullException(nameof(stream));\n\n            return new StreamWriter(stream, Encoding.UTF8, bufferSize: StreamBufferSize, leaveOpen: true);\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/Models/generated/APIGroupListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIGroupList is a list of APIGroup, to allow clients to discover the API at /apis.\n    /// </summary>\n    public partial class APIGroupListV1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     groups is a list of APIGroup.\n        /// </summary>\n        [YamlMember(Alias = \"groups\")]\n        [JsonProperty(\"groups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<APIGroupV1> Groups { get; } = new List<APIGroupV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIGroupV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIGroup contains the name, the supported versions, and the preferred version of a group.\n    /// </summary>\n    public partial class APIGroupV1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     name is the name of the group.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     preferredVersion is the version preferred by the API server, which probably is the storage version.\n        /// </summary>\n        [YamlMember(Alias = \"preferredVersion\")]\n        [JsonProperty(\"preferredVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public GroupVersionForDiscoveryV1 PreferredVersion { get; set; }\n\n        /// <summary>\n        ///     a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.\n        /// </summary>\n        [YamlMember(Alias = \"serverAddressByClientCIDRs\")]\n        [JsonProperty(\"serverAddressByClientCIDRs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ServerAddressByClientCIDRV1> ServerAddressByClientCIDRs { get; } = new List<ServerAddressByClientCIDRV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ServerAddressByClientCIDRs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeServerAddressByClientCIDRs() => ServerAddressByClientCIDRs.Count > 0;\n\n        /// <summary>\n        ///     versions are the versions supported in this group.\n        /// </summary>\n        [YamlMember(Alias = \"versions\")]\n        [JsonProperty(\"versions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<GroupVersionForDiscoveryV1> Versions { get; } = new List<GroupVersionForDiscoveryV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIResourceListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.\n    /// </summary>\n    public partial class APIResourceListV1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     groupVersion is the group and version this APIResourceList is for.\n        /// </summary>\n        [YamlMember(Alias = \"groupVersion\")]\n        [JsonProperty(\"groupVersion\", NullValueHandling = NullValueHandling.Include)]\n        public string GroupVersion { get; set; }\n\n        /// <summary>\n        ///     resources contains the name of the resources and if they are namespaced.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<APIResourceV1> Resources { get; } = new List<APIResourceV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIResourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIResource specifies the name of a resource and whether it is namespaced.\n    /// </summary>\n    public partial class APIResourceV1\n    {\n        /// <summary>\n        ///     kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     namespaced indicates if a resource is namespaced or not.\n        /// </summary>\n        [YamlMember(Alias = \"namespaced\")]\n        [JsonProperty(\"namespaced\", NullValueHandling = NullValueHandling.Include)]\n        public bool Namespaced { get; set; }\n\n        /// <summary>\n        ///     name is the plural name of the resource.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     singularName is the singular name of the resource.  This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.\n        /// </summary>\n        [YamlMember(Alias = \"singularName\")]\n        [JsonProperty(\"singularName\", NullValueHandling = NullValueHandling.Include)]\n        public string SingularName { get; set; }\n\n        /// <summary>\n        ///     The hash value of the storage version, the version this resource is converted to when written to the data store. Value must be treated as opaque by clients. Only equality comparison on the value is valid. This is an alpha feature and may change or be removed in the future. The field is populated by the apiserver only if the StorageVersionHash feature gate is enabled. This field will remain optional even if it graduates.\n        /// </summary>\n        [YamlMember(Alias = \"storageVersionHash\")]\n        [JsonProperty(\"storageVersionHash\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StorageVersionHash { get; set; }\n\n        /// <summary>\n        ///     version is the preferred version of the resource.  Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)\".\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Version { get; set; }\n\n        /// <summary>\n        ///     group is the preferred group of the resource.  Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale\".\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n\n        /// <summary>\n        ///     categories is a list of the grouped resources this resource belongs to (e.g. 'all')\n        /// </summary>\n        [YamlMember(Alias = \"categories\")]\n        [JsonProperty(\"categories\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Categories { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Categories\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCategories() => Categories.Count > 0;\n\n        /// <summary>\n        ///     shortNames is a list of suggested short names of the resource.\n        /// </summary>\n        [YamlMember(Alias = \"shortNames\")]\n        [JsonProperty(\"shortNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ShortNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ShortNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeShortNames() => ShortNames.Count > 0;\n\n        /// <summary>\n        ///     verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIServiceCondition describes the state of an APIService at a particular point\n    /// </summary>\n    public partial class APIServiceConditionV1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     Human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type is the type of the condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status is the status of the condition. Can be True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceConditionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class APIServiceConditionV1Beta1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     Human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type is the type of the condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status is the status of the condition. Can be True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIServiceList is a list of APIService objects.\n    /// </summary>\n    [KubeListItem(\"APIService\", \"apiregistration.k8s.io/v1\")]\n    [KubeObject(\"APIServiceList\", \"apiregistration.k8s.io/v1\")]\n    public partial class APIServiceListV1 : KubeResourceListV1<APIServiceV1>\n    {\n        /// <summary>\n        ///     Items is the list of APIService\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<APIServiceV1> Items { get; } = new List<APIServiceV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIServiceList is a list of APIService objects.\n    /// </summary>\n    [KubeListItem(\"APIService\", \"apiregistration.k8s.io/v1beta1\")]\n    [KubeObject(\"APIServiceList\", \"apiregistration.k8s.io/v1beta1\")]\n    public partial class APIServiceListV1Beta1 : KubeResourceListV1<APIServiceV1Beta1>\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<APIServiceV1Beta1> Items { get; } = new List<APIServiceV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIServiceSpec contains information for locating and communicating with a server. Only https is supported, though you are able to disable certificate verification.\n    /// </summary>\n    public partial class APIServiceSpecV1\n    {\n        /// <summary>\n        ///     CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. If unspecified, system trust roots on the apiserver are used.\n        /// </summary>\n        [YamlMember(Alias = \"caBundle\")]\n        [JsonProperty(\"caBundle\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CaBundle { get; set; }\n\n        /// <summary>\n        ///     Service is a reference to the service for this API server.  It must communicate on port 443. If the Service is nil, that means the handling for the API groupversion is handled locally on this server. The call will simply delegate to the normal handler chain to be fulfilled.\n        /// </summary>\n        [YamlMember(Alias = \"service\")]\n        [JsonProperty(\"service\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceReferenceV1 Service { get; set; }\n\n        /// <summary>\n        ///     GroupPriorityMinimum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMinimum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object.  (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s\n        /// </summary>\n        [YamlMember(Alias = \"groupPriorityMinimum\")]\n        [JsonProperty(\"groupPriorityMinimum\", NullValueHandling = NullValueHandling.Include)]\n        public int GroupPriorityMinimum { get; set; }\n\n        /// <summary>\n        ///     Version is the API version this server hosts.  For example, \"v1\"\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Version { get; set; }\n\n        /// <summary>\n        ///     Group is the API group name this server hosts\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n\n        /// <summary>\n        ///     InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged.  You should use the CABundle instead.\n        /// </summary>\n        [YamlMember(Alias = \"insecureSkipTLSVerify\")]\n        [JsonProperty(\"insecureSkipTLSVerify\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? InsecureSkipTLSVerify { get; set; }\n\n        /// <summary>\n        ///     VersionPriority controls the ordering of this API version inside of its group.  Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is \"kube-like\", it will sort above non \"kube-like\" version strings, which are ordered lexicographically. \"Kube-like\" versions start with a \"v\", then are followed by a number (the major version), then optionally the string \"alpha\" or \"beta\" and another number (the minor version). These are sorted first by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.\n        /// </summary>\n        [YamlMember(Alias = \"versionPriority\")]\n        [JsonProperty(\"versionPriority\", NullValueHandling = NullValueHandling.Include)]\n        public int VersionPriority { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIServiceSpec contains information for locating and communicating with a server. Only https is supported, though you are able to disable certificate verification.\n    /// </summary>\n    public partial class APIServiceSpecV1Beta1\n    {\n        /// <summary>\n        ///     CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate.\n        /// </summary>\n        [YamlMember(Alias = \"caBundle\")]\n        [JsonProperty(\"caBundle\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CaBundle { get; set; }\n\n        /// <summary>\n        ///     Service is a reference to the service for this API server.  It must communicate on port 443 If the Service is nil, that means the handling for the API groupversion is handled locally on this server. The call will simply delegate to the normal handler chain to be fulfilled.\n        /// </summary>\n        [YamlMember(Alias = \"service\")]\n        [JsonProperty(\"service\", NullValueHandling = NullValueHandling.Include)]\n        public ServiceReferenceV1Beta1 Service { get; set; }\n\n        /// <summary>\n        ///     GroupPriorityMininum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMininum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object.  (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s\n        /// </summary>\n        [YamlMember(Alias = \"groupPriorityMinimum\")]\n        [JsonProperty(\"groupPriorityMinimum\", NullValueHandling = NullValueHandling.Include)]\n        public int GroupPriorityMinimum { get; set; }\n\n        /// <summary>\n        ///     Version is the API version this server hosts.  For example, \"v1\"\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Version { get; set; }\n\n        /// <summary>\n        ///     Group is the API group name this server hosts\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n\n        /// <summary>\n        ///     InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged.  You should use the CABundle instead.\n        /// </summary>\n        [YamlMember(Alias = \"insecureSkipTLSVerify\")]\n        [JsonProperty(\"insecureSkipTLSVerify\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? InsecureSkipTLSVerify { get; set; }\n\n        /// <summary>\n        ///     VersionPriority controls the ordering of this API version inside of its group.  Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is \"kube-like\", it will sort above non \"kube-like\" version strings, which are ordered lexicographically. \"Kube-like\" versions start with a \"v\", then are followed by a number (the major version), then optionally the string \"alpha\" or \"beta\" and another number (the minor version). These are sorted first by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.\n        /// </summary>\n        [YamlMember(Alias = \"versionPriority\")]\n        [JsonProperty(\"versionPriority\", NullValueHandling = NullValueHandling.Include)]\n        public int VersionPriority { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIServiceStatus contains derived information about an API server\n    /// </summary>\n    public partial class APIServiceStatusV1\n    {\n        /// <summary>\n        ///     Current service state of apiService.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<APIServiceConditionV1> Conditions { get; } = new List<APIServiceConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIServiceStatus contains derived information about an API server\n    /// </summary>\n    public partial class APIServiceStatusV1Beta1\n    {\n        /// <summary>\n        ///     Current service state of apiService.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<APIServiceConditionV1Beta1> Conditions { get; } = new List<APIServiceConditionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIService represents a server for a particular GroupVersion. Name must be \"version.group\".\n    /// </summary>\n    [KubeObject(\"APIService\", \"apiregistration.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/apiregistration.k8s.io/v1/apiservices\")]\n    [KubeApi(KubeAction.Create, \"apis/apiregistration.k8s.io/v1/apiservices\")]\n    [KubeApi(KubeAction.Get, \"apis/apiregistration.k8s.io/v1/apiservices/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apiregistration.k8s.io/v1/apiservices/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apiregistration.k8s.io/v1/apiservices/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apiregistration.k8s.io/v1/apiservices/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apiregistration.k8s.io/v1/watch/apiservices\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apiregistration.k8s.io/v1/apiservices\")]\n    [KubeApi(KubeAction.Get, \"apis/apiregistration.k8s.io/v1/apiservices/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apiregistration.k8s.io/v1/watch/apiservices/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apiregistration.k8s.io/v1/apiservices/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apiregistration.k8s.io/v1/apiservices/{name}/status\")]\n    public partial class APIServiceV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec contains information for locating and communicating with a server\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public APIServiceSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status contains derived information about an API server\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public APIServiceStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIServiceV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIService represents a server for a particular GroupVersion. Name must be \"version.group\".\n    /// </summary>\n    [KubeObject(\"APIService\", \"apiregistration.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/apiregistration.k8s.io/v1beta1/apiservices\")]\n    [KubeApi(KubeAction.Create, \"apis/apiregistration.k8s.io/v1beta1/apiservices\")]\n    [KubeApi(KubeAction.Get, \"apis/apiregistration.k8s.io/v1beta1/apiservices/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apiregistration.k8s.io/v1beta1/apiservices/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apiregistration.k8s.io/v1beta1/apiservices/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apiregistration.k8s.io/v1beta1/apiservices/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apiregistration.k8s.io/v1beta1/watch/apiservices\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apiregistration.k8s.io/v1beta1/apiservices\")]\n    [KubeApi(KubeAction.Get, \"apis/apiregistration.k8s.io/v1beta1/apiservices/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apiregistration.k8s.io/v1beta1/watch/apiservices/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apiregistration.k8s.io/v1beta1/apiservices/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apiregistration.k8s.io/v1beta1/apiservices/{name}/status\")]\n    public partial class APIServiceV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec contains information for locating and communicating with a server\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public APIServiceSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status contains derived information about an API server\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public APIServiceStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIVersionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     An APIVersion represents a single concrete version of an object model.\n    /// </summary>\n    public partial class APIVersionV1Beta1\n    {\n        /// <summary>\n        ///     Name of this version (e.g. 'v1').\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/APIVersionsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     APIVersions lists the versions that are available, to allow clients to discover the API at /api, which is the root path of the legacy v1 API.\n    /// </summary>\n    public partial class APIVersionsV1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.\n        /// </summary>\n        [YamlMember(Alias = \"serverAddressByClientCIDRs\")]\n        [JsonProperty(\"serverAddressByClientCIDRs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ServerAddressByClientCIDRV1> ServerAddressByClientCIDRs { get; } = new List<ServerAddressByClientCIDRV1>();\n\n        /// <summary>\n        ///     versions are the api versions that are available.\n        /// </summary>\n        [YamlMember(Alias = \"versions\")]\n        [JsonProperty(\"versions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Versions { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AWSElasticBlockStoreVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Persistent Disk resource in AWS.\n    ///     \n    ///     An AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class AWSElasticBlockStoreVolumeSourceV1\n    {\n        /// <summary>\n        ///     volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n        /// </summary>\n        [YamlMember(Alias = \"volumeID\")]\n        [JsonProperty(\"volumeID\", NullValueHandling = NullValueHandling.Include)]\n        public string VolumeID { get; set; }\n\n        /// <summary>\n        ///     fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n        /// </summary>\n        [YamlMember(Alias = \"partition\")]\n        [JsonProperty(\"partition\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Partition { get; set; }\n\n        /// <summary>\n        ///     readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AffinityV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Affinity is a group of affinity scheduling rules.\n    /// </summary>\n    public partial class AffinityV1\n    {\n        /// <summary>\n        ///     Describes node affinity scheduling rules for the pod.\n        /// </summary>\n        [YamlMember(Alias = \"nodeAffinity\")]\n        [JsonProperty(\"nodeAffinity\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeAffinityV1 NodeAffinity { get; set; }\n\n        /// <summary>\n        ///     Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\n        /// </summary>\n        [YamlMember(Alias = \"podAffinity\")]\n        [JsonProperty(\"podAffinity\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodAffinityV1 PodAffinity { get; set; }\n\n        /// <summary>\n        ///     Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\n        /// </summary>\n        [YamlMember(Alias = \"podAntiAffinity\")]\n        [JsonProperty(\"podAntiAffinity\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodAntiAffinityV1 PodAntiAffinity { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AggregationRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole\n    /// </summary>\n    public partial class AggregationRuleV1\n    {\n        /// <summary>\n        ///     ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n        /// </summary>\n        [YamlMember(Alias = \"clusterRoleSelectors\")]\n        [JsonProperty(\"clusterRoleSelectors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LabelSelectorV1> ClusterRoleSelectors { get; } = new List<LabelSelectorV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ClusterRoleSelectors\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeClusterRoleSelectors() => ClusterRoleSelectors.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AggregationRuleV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole\n    /// </summary>\n    public partial class AggregationRuleV1Alpha1\n    {\n        /// <summary>\n        ///     ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n        /// </summary>\n        [YamlMember(Alias = \"clusterRoleSelectors\")]\n        [JsonProperty(\"clusterRoleSelectors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LabelSelectorV1> ClusterRoleSelectors { get; } = new List<LabelSelectorV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ClusterRoleSelectors\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeClusterRoleSelectors() => ClusterRoleSelectors.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AggregationRuleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole\n    /// </summary>\n    public partial class AggregationRuleV1Beta1\n    {\n        /// <summary>\n        ///     ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\n        /// </summary>\n        [YamlMember(Alias = \"clusterRoleSelectors\")]\n        [JsonProperty(\"clusterRoleSelectors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LabelSelectorV1> ClusterRoleSelectors { get; } = new List<LabelSelectorV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ClusterRoleSelectors\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeClusterRoleSelectors() => ClusterRoleSelectors.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AllocationResultV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AllocationResult contains attributes of an allocated resource.\n    /// </summary>\n    public partial class AllocationResultV1Alpha3\n    {\n        /// <summary>\n        ///     Controller is the name of the DRA driver which handled the allocation. That driver is also responsible for deallocating the claim. It is empty when the claim can be deallocated without involving a driver.\n        ///     \n        ///     A driver may allocate devices provided by other drivers, so this driver name here can be different from the driver names listed for the results.\n        ///     \n        ///     This is an alpha field and requires enabling the DRAControlPlaneController feature gate.\n        /// </summary>\n        [YamlMember(Alias = \"controller\")]\n        [JsonProperty(\"controller\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Controller { get; set; }\n\n        /// <summary>\n        ///     NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.\n        /// </summary>\n        [YamlMember(Alias = \"nodeSelector\")]\n        [JsonProperty(\"nodeSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeSelectorV1 NodeSelector { get; set; }\n\n        /// <summary>\n        ///     Devices is the result of allocating devices.\n        /// </summary>\n        [YamlMember(Alias = \"devices\")]\n        [JsonProperty(\"devices\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeviceAllocationResultV1Alpha3 Devices { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AllowedFlexVolumeV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AllowedFlexVolume represents a single Flexvolume that is allowed to be used.\n    /// </summary>\n    public partial class AllowedFlexVolumeV1Beta1\n    {\n        /// <summary>\n        ///     driver is the name of the Flexvolume driver.\n        /// </summary>\n        [YamlMember(Alias = \"driver\")]\n        [JsonProperty(\"driver\", NullValueHandling = NullValueHandling.Include)]\n        public string Driver { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AllowedHostPathV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AllowedHostPath defines the host volume conditions that will be enabled by a policy for pods to use. It requires the path prefix to be defined.\n    /// </summary>\n    public partial class AllowedHostPathV1Beta1\n    {\n        /// <summary>\n        ///     pathPrefix is the path prefix that the host volume must match. It does not support `*`. Trailing slashes are trimmed when validating the path prefix with a host path.\n        ///     \n        ///     Examples: `/foo` would allow `/foo`, `/foo/` and `/foo/bar` `/foo` would not allow `/food` or `/etc/foo`\n        /// </summary>\n        [YamlMember(Alias = \"pathPrefix\")]\n        [JsonProperty(\"pathPrefix\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PathPrefix { get; set; }\n\n        /// <summary>\n        ///     when set to true, will allow host volumes matching the pathPrefix only if all volume mounts are readOnly.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AppArmorProfileV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AppArmorProfile defines a pod or container's AppArmor settings.\n    /// </summary>\n    public partial class AppArmorProfileV1\n    {\n        /// <summary>\n        ///     localhostProfile indicates a profile loaded on the node that should be used. The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is \"Localhost\".\n        /// </summary>\n        [YamlMember(Alias = \"localhostProfile\")]\n        [JsonProperty(\"localhostProfile\", NullValueHandling = NullValueHandling.Ignore)]\n        public string LocalhostProfile { get; set; }\n\n        /// <summary>\n        ///     type indicates which kind of AppArmor profile will be applied. Valid options are:\n        ///       Localhost - a profile pre-loaded on the node.\n        ///       RuntimeDefault - the container runtime's default profile.\n        ///       Unconfined - no AppArmor enforcement.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AttachedVolumeV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AttachedVolume describes a volume attached to a node\n    /// </summary>\n    public partial class AttachedVolumeV1\n    {\n        /// <summary>\n        ///     Name of the attached volume\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     DevicePath represents the device path where the volume should be available\n        /// </summary>\n        [YamlMember(Alias = \"devicePath\")]\n        [JsonProperty(\"devicePath\", NullValueHandling = NullValueHandling.Include)]\n        public string DevicePath { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AuditAnnotationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AuditAnnotation describes how to produce an audit annotation for an API request.\n    /// </summary>\n    public partial class AuditAnnotationV1\n    {\n        /// <summary>\n        ///     valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb.\n        ///     \n        ///     If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"valueExpression\")]\n        [JsonProperty(\"valueExpression\", NullValueHandling = NullValueHandling.Include)]\n        public string ValueExpression { get; set; }\n\n        /// <summary>\n        ///     key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\n        ///     \n        ///     The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\".\n        ///     \n        ///     If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AuditAnnotationV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AuditAnnotation describes how to produce an audit annotation for an API request.\n    /// </summary>\n    public partial class AuditAnnotationV1Alpha1\n    {\n        /// <summary>\n        ///     valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb.\n        ///     \n        ///     If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"valueExpression\")]\n        [JsonProperty(\"valueExpression\", NullValueHandling = NullValueHandling.Include)]\n        public string ValueExpression { get; set; }\n\n        /// <summary>\n        ///     key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\n        ///     \n        ///     The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\".\n        ///     \n        ///     If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AuditAnnotationV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AuditAnnotation describes how to produce an audit annotation for an API request.\n    /// </summary>\n    public partial class AuditAnnotationV1Beta1\n    {\n        /// <summary>\n        ///     valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb.\n        ///     \n        ///     If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"valueExpression\")]\n        [JsonProperty(\"valueExpression\", NullValueHandling = NullValueHandling.Include)]\n        public string ValueExpression { get; set; }\n\n        /// <summary>\n        ///     key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\n        ///     \n        ///     The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\".\n        ///     \n        ///     If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AzureDiskVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n    /// </summary>\n    public partial class AzureDiskVolumeSourceV1\n    {\n        /// <summary>\n        ///     diskURI is the URI of data disk in the blob storage\n        /// </summary>\n        [YamlMember(Alias = \"diskURI\")]\n        [JsonProperty(\"diskURI\", NullValueHandling = NullValueHandling.Include)]\n        public string DiskURI { get; set; }\n\n        /// <summary>\n        ///     kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     cachingMode is the Host Caching mode: None, Read Only, Read Write.\n        /// </summary>\n        [YamlMember(Alias = \"cachingMode\")]\n        [JsonProperty(\"cachingMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CachingMode { get; set; }\n\n        /// <summary>\n        ///     diskName is the Name of the data disk in the blob storage\n        /// </summary>\n        [YamlMember(Alias = \"diskName\")]\n        [JsonProperty(\"diskName\", NullValueHandling = NullValueHandling.Include)]\n        public string DiskName { get; set; }\n\n        /// <summary>\n        ///     fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AzureFilePersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AzureFile represents an Azure File Service mount on the host and bind mount to the pod.\n    /// </summary>\n    public partial class AzureFilePersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     secretName is the name of secret that contains Azure Storage Account Name and Key\n        /// </summary>\n        [YamlMember(Alias = \"secretName\")]\n        [JsonProperty(\"secretName\", NullValueHandling = NullValueHandling.Include)]\n        public string SecretName { get; set; }\n\n        /// <summary>\n        ///     secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod\n        /// </summary>\n        [YamlMember(Alias = \"secretNamespace\")]\n        [JsonProperty(\"secretNamespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SecretNamespace { get; set; }\n\n        /// <summary>\n        ///     shareName is the azure Share Name\n        /// </summary>\n        [YamlMember(Alias = \"shareName\")]\n        [JsonProperty(\"shareName\", NullValueHandling = NullValueHandling.Include)]\n        public string ShareName { get; set; }\n\n        /// <summary>\n        ///     readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/AzureFileVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     AzureFile represents an Azure File Service mount on the host and bind mount to the pod.\n    /// </summary>\n    public partial class AzureFileVolumeSourceV1\n    {\n        /// <summary>\n        ///     secretName is the  name of secret that contains Azure Storage Account Name and Key\n        /// </summary>\n        [YamlMember(Alias = \"secretName\")]\n        [JsonProperty(\"secretName\", NullValueHandling = NullValueHandling.Include)]\n        public string SecretName { get; set; }\n\n        /// <summary>\n        ///     shareName is the azure share Name\n        /// </summary>\n        [YamlMember(Alias = \"shareName\")]\n        [JsonProperty(\"shareName\", NullValueHandling = NullValueHandling.Include)]\n        public string ShareName { get; set; }\n\n        /// <summary>\n        ///     readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/BasicDeviceV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     BasicDevice defines one device instance.\n    /// </summary>\n    public partial class BasicDeviceV1Alpha3\n    {\n        /// <summary>\n        ///     Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.\n        ///     \n        ///     The maximum number of attributes and capacities combined is 32.\n        /// </summary>\n        [YamlMember(Alias = \"attributes\")]\n        [JsonProperty(\"attributes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, DeviceAttributeV1Alpha3> Attributes { get; } = new Dictionary<string, DeviceAttributeV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Attributes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAttributes() => Attributes.Count > 0;\n\n        /// <summary>\n        ///     Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.\n        ///     \n        ///     The maximum number of attributes and capacities combined is 32.\n        /// </summary>\n        [YamlMember(Alias = \"capacity\")]\n        [JsonProperty(\"capacity\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Capacity { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Capacity\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCapacity() => Capacity.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/BindingV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Binding ties one object to another; for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead.\n    /// </summary>\n    [KubeObject(\"Binding\", \"v1\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/bindings\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/pods/{name}/binding\")]\n    public partial class BindingV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     The target object that you want to bind to the standard object.\n        /// </summary>\n        [YamlMember(Alias = \"target\")]\n        [JsonProperty(\"target\", NullValueHandling = NullValueHandling.Include)]\n        public ObjectReferenceV1 Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/BoundObjectReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     BoundObjectReference is a reference to an object that a token is bound to.\n    /// </summary>\n    public partial class BoundObjectReferenceV1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     UID of the referent.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     Name of the referent.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CELDeviceSelectorV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CELDeviceSelector contains a CEL expression for selecting a device.\n    /// </summary>\n    public partial class CELDeviceSelectorV1Alpha3\n    {\n        /// <summary>\n        ///     Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.\n        ///     \n        ///     The expression's input is an object named \"device\", which carries the following properties:\n        ///      - driver (string): the name of the driver which defines this device.\n        ///      - attributes (map[string]object): the device's attributes, grouped by prefix\n        ///        (e.g. device.attributes[\"dra.example.com\"] evaluates to an object with all\n        ///        of the attributes which were prefixed by \"dra.example.com\".\n        ///      - capacity (map[string]object): the device's capacities, grouped by prefix.\n        ///     \n        ///     Example: Consider a device with driver=\"dra.example.com\", which exposes two attributes named \"model\" and \"ext.example.com/family\" and which exposes one capacity named \"modules\". This input to this expression would have the following fields:\n        ///     \n        ///         device.driver\n        ///         device.attributes[\"dra.example.com\"].model\n        ///         device.attributes[\"ext.example.com\"].family\n        ///         device.capacity[\"dra.example.com\"].modules\n        ///     \n        ///     The device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.\n        ///     \n        ///     The value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.\n        ///     \n        ///     If an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.\n        ///     \n        ///     A robust expression should check for the existence of attributes before referencing them.\n        ///     \n        ///     For ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:\n        ///     \n        ///         cel.bind(dra, device.attributes[\"dra.example.com\"], dra.someBool &amp;&amp; dra.anotherBool)\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSIDriverListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSIDriverList is a collection of CSIDriver objects.\n    /// </summary>\n    [KubeListItem(\"CSIDriver\", \"storage.k8s.io/v1\")]\n    [KubeObject(\"CSIDriverList\", \"storage.k8s.io/v1\")]\n    public partial class CSIDriverListV1 : KubeResourceListV1<CSIDriverV1>\n    {\n        /// <summary>\n        ///     items is the list of CSIDriver\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CSIDriverV1> Items { get; } = new List<CSIDriverV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSIDriverSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSIDriverSpec is the specification of a CSIDriver.\n    /// </summary>\n    public partial class CSIDriverSpecV1\n    {\n        /// <summary>\n        ///     attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.\n        ///     \n        ///     This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"attachRequired\")]\n        [JsonProperty(\"attachRequired\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AttachRequired { get; set; }\n\n        /// <summary>\n        ///     requiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\n        ///     \n        ///     Note: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.\n        /// </summary>\n        [YamlMember(Alias = \"requiresRepublish\")]\n        [JsonProperty(\"requiresRepublish\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? RequiresRepublish { get; set; }\n\n        /// <summary>\n        ///     tokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: \"csi.storage.k8s.io/serviceAccount.tokens\": {\n        ///       \"&lt;audience&gt;\": {\n        ///         \"token\": &lt;token&gt;,\n        ///         \"expirationTimestamp\": &lt;expiration timestamp in RFC3339&gt;,\n        ///       },\n        ///       ...\n        ///     }\n        ///     \n        ///     Note: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\n        /// </summary>\n        [YamlMember(Alias = \"tokenRequests\")]\n        [JsonProperty(\"tokenRequests\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<TokenRequestV1> TokenRequests { get; } = new List<TokenRequestV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"TokenRequests\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTokenRequests() => TokenRequests.Count > 0;\n\n        /// <summary>\n        ///     volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is \"Persistent\", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism.\n        ///     \n        ///     The other mode is \"Ephemeral\". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume.\n        ///     \n        ///     For more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future.\n        ///     \n        ///     This field is beta. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"volumeLifecycleModes\")]\n        [JsonProperty(\"volumeLifecycleModes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> VolumeLifecycleModes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeLifecycleModes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeLifecycleModes() => VolumeLifecycleModes.Count > 0;\n\n        /// <summary>\n        ///     podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations, if set to true. If set to false, pod information will not be passed on mount. Default is false.\n        ///     \n        ///     The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext.\n        ///     \n        ///     The following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. \"csi.storage.k8s.io/pod.name\": pod.Name \"csi.storage.k8s.io/pod.namespace\": pod.Namespace \"csi.storage.k8s.io/pod.uid\": string(pod.UID) \"csi.storage.k8s.io/ephemeral\": \"true\" if the volume is an ephemeral inline volume\n        ///                                     defined by a CSIVolumeSource, otherwise \"false\"\n        ///     \n        ///     \"csi.storage.k8s.io/ephemeral\" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the \"Persistent\" and \"Ephemeral\" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver.\n        ///     \n        ///     This field was immutable in Kubernetes &lt; 1.29 and now is mutable.\n        /// </summary>\n        [YamlMember(Alias = \"podInfoOnMount\")]\n        [JsonProperty(\"podInfoOnMount\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? PodInfoOnMount { get; set; }\n\n        /// <summary>\n        ///     seLinuxMount specifies if the CSI driver supports \"-o context\" mount option.\n        ///     \n        ///     When \"true\", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with \"-o context=xyz\" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context.\n        ///     \n        ///     When \"false\", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem.\n        ///     \n        ///     Default is \"false\".\n        /// </summary>\n        [YamlMember(Alias = \"seLinuxMount\")]\n        [JsonProperty(\"seLinuxMount\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? SeLinuxMount { get; set; }\n\n        /// <summary>\n        ///     fsGroupPolicy defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details.\n        ///     \n        ///     This field was immutable in Kubernetes &lt; 1.29 and now is mutable.\n        ///     \n        ///     Defaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce.\n        /// </summary>\n        [YamlMember(Alias = \"fsGroupPolicy\")]\n        [JsonProperty(\"fsGroupPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsGroupPolicy { get; set; }\n\n        /// <summary>\n        ///     storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information, if set to true.\n        ///     \n        ///     The check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object.\n        ///     \n        ///     Alternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published.\n        ///     \n        ///     This field was immutable in Kubernetes &lt;= 1.22 and now is mutable.\n        /// </summary>\n        [YamlMember(Alias = \"storageCapacity\")]\n        [JsonProperty(\"storageCapacity\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? StorageCapacity { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSIDriverV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced.\n    /// </summary>\n    [KubeObject(\"CSIDriver\", \"storage.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1/csidrivers\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1/csidrivers\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1/csidrivers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1/csidrivers/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1/csidrivers/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1/csidrivers/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1/watch/csidrivers\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1/csidrivers\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1/watch/csidrivers/{name}\")]\n    public partial class CSIDriverV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec represents the specification of the CSI Driver.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public CSIDriverSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSINodeDriverV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSINodeDriver holds information about the specification of one CSI driver installed on a node\n    /// </summary>\n    public partial class CSINodeDriverV1\n    {\n        /// <summary>\n        ///     nodeID of the node from the driver point of view. This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as \"node1\", but the storage system may refer to the same node as \"nodeA\". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. \"nodeA\" instead of \"node1\". This field is required.\n        /// </summary>\n        [YamlMember(Alias = \"nodeID\")]\n        [JsonProperty(\"nodeID\", NullValueHandling = NullValueHandling.Include)]\n        public string NodeID { get; set; }\n\n        /// <summary>\n        ///     allocatable represents the volume resources of a node that are available for scheduling. This field is beta.\n        /// </summary>\n        [YamlMember(Alias = \"allocatable\")]\n        [JsonProperty(\"allocatable\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeNodeResourcesV1 Allocatable { get; set; }\n\n        /// <summary>\n        ///     name represents the name of the CSI driver that this object refers to. This MUST be the same name returned by the CSI GetPluginName() call for that driver.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. \"company.com/zone\", \"company.com/region\"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology.\n        /// </summary>\n        [YamlMember(Alias = \"topologyKeys\")]\n        [JsonProperty(\"topologyKeys\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> TopologyKeys { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"TopologyKeys\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTopologyKeys() => TopologyKeys.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSINodeListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSINodeList is a collection of CSINode objects.\n    /// </summary>\n    [KubeListItem(\"CSINode\", \"storage.k8s.io/v1\")]\n    [KubeObject(\"CSINodeList\", \"storage.k8s.io/v1\")]\n    public partial class CSINodeListV1 : KubeResourceListV1<CSINodeV1>\n    {\n        /// <summary>\n        ///     items is the list of CSINode\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CSINodeV1> Items { get; } = new List<CSINodeV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSINodeSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSINodeSpec holds information about the specification of all CSI drivers installed on a node\n    /// </summary>\n    public partial class CSINodeSpecV1\n    {\n        /// <summary>\n        ///     drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"drivers\")]\n        [JsonProperty(\"drivers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CSINodeDriverV1> Drivers { get; } = new List<CSINodeDriverV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSINodeV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSINode holds information about all CSI drivers installed on a node. CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object.\n    /// </summary>\n    [KubeObject(\"CSINode\", \"storage.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1/csinodes\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1/csinodes\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1/csinodes/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1/csinodes/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1/csinodes/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1/csinodes/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1/watch/csinodes\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1/csinodes\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1/watch/csinodes/{name}\")]\n    public partial class CSINodeV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec is the specification of CSINode\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public CSINodeSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSIPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents storage that is managed by an external CSI volume driver (Beta feature)\n    /// </summary>\n    public partial class CSIPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\".\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     volumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.\n        /// </summary>\n        [YamlMember(Alias = \"volumeHandle\")]\n        [JsonProperty(\"volumeHandle\", NullValueHandling = NullValueHandling.Include)]\n        public string VolumeHandle { get; set; }\n\n        /// <summary>\n        ///     controllerExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerExpandVolume call. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.\n        /// </summary>\n        [YamlMember(Alias = \"controllerExpandSecretRef\")]\n        [JsonProperty(\"controllerExpandSecretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 ControllerExpandSecretRef { get; set; }\n\n        /// <summary>\n        ///     controllerPublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerPublishVolume and ControllerUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.\n        /// </summary>\n        [YamlMember(Alias = \"controllerPublishSecretRef\")]\n        [JsonProperty(\"controllerPublishSecretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 ControllerPublishSecretRef { get; set; }\n\n        /// <summary>\n        ///     nodeExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeExpandVolume call. This field is optional, may be omitted if no secret is required. If the secret object contains more than one secret, all secrets are passed.\n        /// </summary>\n        [YamlMember(Alias = \"nodeExpandSecretRef\")]\n        [JsonProperty(\"nodeExpandSecretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 NodeExpandSecretRef { get; set; }\n\n        /// <summary>\n        ///     nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.\n        /// </summary>\n        [YamlMember(Alias = \"nodePublishSecretRef\")]\n        [JsonProperty(\"nodePublishSecretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 NodePublishSecretRef { get; set; }\n\n        /// <summary>\n        ///     nodeStageSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeStageVolume and NodeStageVolume and NodeUnstageVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.\n        /// </summary>\n        [YamlMember(Alias = \"nodeStageSecretRef\")]\n        [JsonProperty(\"nodeStageSecretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 NodeStageSecretRef { get; set; }\n\n        /// <summary>\n        ///     driver is the name of the driver to use for this volume. Required.\n        /// </summary>\n        [YamlMember(Alias = \"driver\")]\n        [JsonProperty(\"driver\", NullValueHandling = NullValueHandling.Include)]\n        public string Driver { get; set; }\n\n        /// <summary>\n        ///     volumeAttributes of the volume to publish.\n        /// </summary>\n        [YamlMember(Alias = \"volumeAttributes\")]\n        [JsonProperty(\"volumeAttributes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> VolumeAttributes { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeAttributes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeAttributes() => VolumeAttributes.Count > 0;\n\n        /// <summary>\n        ///     readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSIStorageCapacityListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSIStorageCapacityList is a collection of CSIStorageCapacity objects.\n    /// </summary>\n    [KubeListItem(\"CSIStorageCapacity\", \"storage.k8s.io/v1\")]\n    [KubeObject(\"CSIStorageCapacityList\", \"storage.k8s.io/v1\")]\n    public partial class CSIStorageCapacityListV1 : KubeResourceListV1<CSIStorageCapacityV1>\n    {\n        /// <summary>\n        ///     items is the list of CSIStorageCapacity objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CSIStorageCapacityV1> Items { get; } = new List<CSIStorageCapacityV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSIStorageCapacityV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CSIStorageCapacity stores the result of one CSI GetCapacity call. For a given StorageClass, this describes the available capacity in a particular topology segment.  This can be used when considering where to instantiate new PersistentVolumes.\n    ///     \n    ///     For example this can express things like: - StorageClass \"standard\" has \"1234 GiB\" available in \"topology.kubernetes.io/zone=us-east1\" - StorageClass \"localssd\" has \"10 GiB\" available in \"kubernetes.io/hostname=knode-abc123\"\n    ///     \n    ///     The following three cases all imply that no capacity is available for a certain combination: - no object exists with suitable topology and storage class name - such an object exists, but the capacity is unset - such an object exists, but the capacity is zero\n    ///     \n    ///     The producer of these objects can decide which approach is more suitable.\n    ///     \n    ///     They are consumed by the kube-scheduler when a CSI driver opts into capacity-aware scheduling with CSIDriverSpec.StorageCapacity. The scheduler compares the MaximumVolumeSize against the requested size of pending volumes to filter out unsuitable nodes. If MaximumVolumeSize is unset, it falls back to a comparison against the less precise Capacity. If that is also unset, the scheduler assumes that capacity is insufficient and tries some other node.\n    /// </summary>\n    [KubeObject(\"CSIStorageCapacity\", \"storage.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1/csistoragecapacities\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1/watch/csistoragecapacities\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1/watch/namespaces/{namespace}/csistoragecapacities\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1/watch/namespaces/{namespace}/csistoragecapacities/{name}\")]\n    public partial class CSIStorageCapacityV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields.\n        ///     \n        ///     This is defined since CSI spec 1.4.0 as the largest size that may be used in a CreateVolumeRequest.capacity_range.required_bytes field to create a volume with the same parameters as those in GetCapacityRequest. The corresponding value in the Kubernetes API is ResourceRequirements.Requests in a volume claim.\n        /// </summary>\n        [YamlMember(Alias = \"maximumVolumeSize\")]\n        [JsonProperty(\"maximumVolumeSize\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MaximumVolumeSize { get; set; }\n\n        /// <summary>\n        ///     storageClassName represents the name of the StorageClass that the reported capacity applies to. It must meet the same requirements as the name of a StorageClass object (non-empty, DNS subdomain). If that object no longer exists, the CSIStorageCapacity object is obsolete and should be removed by its creator. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"storageClassName\")]\n        [JsonProperty(\"storageClassName\", NullValueHandling = NullValueHandling.Include)]\n        public string StorageClassName { get; set; }\n\n        /// <summary>\n        ///     capacity is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields.\n        ///     \n        ///     The semantic is currently (CSI spec 1.2) defined as: The available capacity, in bytes, of the storage that can be used to provision volumes. If not set, that information is currently unavailable.\n        /// </summary>\n        [YamlMember(Alias = \"capacity\")]\n        [JsonProperty(\"capacity\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Capacity { get; set; }\n\n        /// <summary>\n        ///     nodeTopology defines which nodes have access to the storage for which capacity was reported. If not set, the storage is not accessible from any node in the cluster. If empty, the storage is accessible from all nodes. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"nodeTopology\")]\n        [JsonProperty(\"nodeTopology\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NodeTopology { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CSIVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a source location of a volume to mount, managed by an external CSI driver\n    /// </summary>\n    public partial class CSIVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and  may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.\n        /// </summary>\n        [YamlMember(Alias = \"nodePublishSecretRef\")]\n        [JsonProperty(\"nodePublishSecretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public LocalObjectReferenceV1 NodePublishSecretRef { get; set; }\n\n        /// <summary>\n        ///     driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.\n        /// </summary>\n        [YamlMember(Alias = \"driver\")]\n        [JsonProperty(\"driver\", NullValueHandling = NullValueHandling.Include)]\n        public string Driver { get; set; }\n\n        /// <summary>\n        ///     volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\n        /// </summary>\n        [YamlMember(Alias = \"volumeAttributes\")]\n        [JsonProperty(\"volumeAttributes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> VolumeAttributes { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeAttributes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeAttributes() => VolumeAttributes.Count > 0;\n\n        /// <summary>\n        ///     readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CapabilitiesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Adds and removes POSIX capabilities from running containers.\n    /// </summary>\n    public partial class CapabilitiesV1\n    {\n        /// <summary>\n        ///     Added capabilities\n        /// </summary>\n        [YamlMember(Alias = \"add\")]\n        [JsonProperty(\"add\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Add { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Add\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAdd() => Add.Count > 0;\n\n        /// <summary>\n        ///     Removed capabilities\n        /// </summary>\n        [YamlMember(Alias = \"drop\")]\n        [JsonProperty(\"drop\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Drop { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Drop\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDrop() => Drop.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CephFSPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.\n    /// </summary>\n    public partial class CephFSPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"secretFile\")]\n        [JsonProperty(\"secretFile\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SecretFile { get; set; }\n\n        /// <summary>\n        ///     secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     user is Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public string User { get; set; }\n\n        /// <summary>\n        ///     monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"monitors\")]\n        [JsonProperty(\"monitors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Monitors { get; } = new List<string>();\n\n        /// <summary>\n        ///     readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CephFSVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.\n    /// </summary>\n    public partial class CephFSVolumeSourceV1\n    {\n        /// <summary>\n        ///     secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"secretFile\")]\n        [JsonProperty(\"secretFile\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SecretFile { get; set; }\n\n        /// <summary>\n        ///     secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public LocalObjectReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public string User { get; set; }\n\n        /// <summary>\n        ///     monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"monitors\")]\n        [JsonProperty(\"monitors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Monitors { get; } = new List<string>();\n\n        /// <summary>\n        ///     readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CertificateSigningRequestCondition describes a condition of a CertificateSigningRequest object\n    /// </summary>\n    public partial class CertificateSigningRequestConditionV1\n    {\n        /// <summary>\n        ///     lastTransitionTime is the time the condition last transitioned from one status to another. If unset, when a new condition type is added or an existing condition's status is changed, the server defaults this to the current time.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     lastUpdateTime is the time of the last update to this condition\n        /// </summary>\n        [YamlMember(Alias = \"lastUpdateTime\")]\n        [JsonProperty(\"lastUpdateTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastUpdateTime { get; set; }\n\n        /// <summary>\n        ///     message contains a human readable message with details about the request state\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     type of the condition. Known conditions are \"Approved\", \"Denied\", and \"Failed\".\n        ///     \n        ///     An \"Approved\" condition is added via the /approval subresource, indicating the request was approved and should be issued by the signer.\n        ///     \n        ///     A \"Denied\" condition is added via the /approval subresource, indicating the request was denied and should not be issued by the signer.\n        ///     \n        ///     A \"Failed\" condition is added via the /status subresource, indicating the signer failed to issue the certificate.\n        ///     \n        ///     Approved and Denied conditions are mutually exclusive. Approved, Denied, and Failed conditions cannot be removed once added.\n        ///     \n        ///     Only one condition of a given type is allowed.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     reason indicates a brief reason for the request state\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     status of the condition, one of True, False, Unknown. Approved, Denied, and Failed conditions may not be \"False\" or \"Unknown\".\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestConditionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class CertificateSigningRequestConditionV1Beta1\n    {\n        /// <summary>\n        ///     timestamp for the last update to this condition\n        /// </summary>\n        [YamlMember(Alias = \"lastUpdateTime\")]\n        [JsonProperty(\"lastUpdateTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastUpdateTime { get; set; }\n\n        /// <summary>\n        ///     human readable message with details about the request state\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     request approval state, currently Approved or Denied.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     brief reason for the request state\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CertificateSigningRequestList is a collection of CertificateSigningRequest objects\n    /// </summary>\n    [KubeListItem(\"CertificateSigningRequest\", \"certificates.k8s.io/v1\")]\n    [KubeObject(\"CertificateSigningRequestList\", \"certificates.k8s.io/v1\")]\n    public partial class CertificateSigningRequestListV1 : KubeResourceListV1<CertificateSigningRequestV1>\n    {\n        /// <summary>\n        ///     items is a collection of CertificateSigningRequest objects\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CertificateSigningRequestV1> Items { get; } = new List<CertificateSigningRequestV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    [KubeListItem(\"CertificateSigningRequest\", \"certificates.k8s.io/v1beta1\")]\n    [KubeObject(\"CertificateSigningRequestList\", \"certificates.k8s.io/v1beta1\")]\n    public partial class CertificateSigningRequestListV1Beta1 : KubeResourceListV1<CertificateSigningRequestV1Beta1>\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CertificateSigningRequestV1Beta1> Items { get; } = new List<CertificateSigningRequestV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CertificateSigningRequestSpec contains the certificate request.\n    /// </summary>\n    public partial class CertificateSigningRequestSpecV1\n    {\n        /// <summary>\n        ///     extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\n        /// </summary>\n        [YamlMember(Alias = \"extra\")]\n        [JsonProperty(\"extra\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, List<string>> Extra { get; } = new Dictionary<string, List<string>>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Extra\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExtra() => Extra.Count > 0;\n\n        /// <summary>\n        ///     uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     signerName indicates the requested signer, and is a qualified name.\n        ///     \n        ///     List/watch requests for CertificateSigningRequests can filter on this field using a \"spec.signerName=NAME\" fieldSelector.\n        ///     \n        ///     Well-known Kubernetes signers are:\n        ///      1. \"kubernetes.io/kube-apiserver-client\": issues client certificates that can be used to authenticate to kube-apiserver.\n        ///       Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the \"csrsigning\" controller in kube-controller-manager.\n        ///      2. \"kubernetes.io/kube-apiserver-client-kubelet\": issues client certificates that kubelets use to authenticate to kube-apiserver.\n        ///       Requests for this signer can be auto-approved by the \"csrapproving\" controller in kube-controller-manager, and can be issued by the \"csrsigning\" controller in kube-controller-manager.\n        ///      3. \"kubernetes.io/kubelet-serving\" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely.\n        ///       Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the \"csrsigning\" controller in kube-controller-manager.\n        ///     \n        ///     More details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers\n        ///     \n        ///     Custom signerNames can also be specified. The signer defines:\n        ///      1. Trust distribution: how trust (CA bundles) are distributed.\n        ///      2. Permitted subjects: and behavior when a disallowed subject is requested.\n        ///      3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested.\n        ///      4. Required, permitted, or forbidden key usages / extended key usages.\n        ///      5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin.\n        ///      6. Whether or not requests for CA certificates are allowed.\n        /// </summary>\n        [YamlMember(Alias = \"signerName\")]\n        [JsonProperty(\"signerName\", NullValueHandling = NullValueHandling.Include)]\n        public string SignerName { get; set; }\n\n        /// <summary>\n        ///     username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\n        /// </summary>\n        [YamlMember(Alias = \"username\")]\n        [JsonProperty(\"username\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Username { get; set; }\n\n        /// <summary>\n        ///     expirationSeconds is the requested duration of validity of the issued certificate. The certificate signer may issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration.\n        ///     \n        ///     The v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager.\n        ///     \n        ///     Certificate signers may not honor this field for various reasons:\n        ///     \n        ///       1. Old signer that is unaware of the field (such as the in-tree\n        ///          implementations prior to v1.22)\n        ///       2. Signer whose configured maximum is shorter than the requested duration\n        ///       3. Signer whose configured minimum is longer than the requested duration\n        ///     \n        ///     The minimum valid value for expirationSeconds is 600, i.e. 10 minutes.\n        /// </summary>\n        [YamlMember(Alias = \"expirationSeconds\")]\n        [JsonProperty(\"expirationSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ExpirationSeconds { get; set; }\n\n        /// <summary>\n        ///     groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\n        /// </summary>\n        [YamlMember(Alias = \"groups\")]\n        [JsonProperty(\"groups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Groups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Groups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeGroups() => Groups.Count > 0;\n\n        /// <summary>\n        ///     usages specifies a set of key usages requested in the issued certificate.\n        ///     \n        ///     Requests for TLS client certificates typically request: \"digital signature\", \"key encipherment\", \"client auth\".\n        ///     \n        ///     Requests for TLS serving certificates typically request: \"key encipherment\", \"digital signature\", \"server auth\".\n        ///     \n        ///     Valid values are:\n        ///      \"signing\", \"digital signature\", \"content commitment\",\n        ///      \"key encipherment\", \"key agreement\", \"data encipherment\",\n        ///      \"cert sign\", \"crl sign\", \"encipher only\", \"decipher only\", \"any\",\n        ///      \"server auth\", \"client auth\",\n        ///      \"code signing\", \"email protection\", \"s/mime\",\n        ///      \"ipsec end system\", \"ipsec tunnel\", \"ipsec user\",\n        ///      \"timestamping\", \"ocsp signing\", \"microsoft sgc\", \"netscape sgc\"\n        /// </summary>\n        [YamlMember(Alias = \"usages\")]\n        [JsonProperty(\"usages\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Usages { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Usages\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeUsages() => Usages.Count > 0;\n\n        /// <summary>\n        ///     request contains an x509 certificate signing request encoded in a \"CERTIFICATE REQUEST\" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded.\n        /// </summary>\n        [YamlMember(Alias = \"request\")]\n        [JsonProperty(\"request\", NullValueHandling = NullValueHandling.Include)]\n        public string Request { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     This information is immutable after the request is created. Only the Request and Usages fields can be set on creation, other fields are derived by Kubernetes and cannot be modified by users.\n    /// </summary>\n    public partial class CertificateSigningRequestSpecV1Beta1\n    {\n        /// <summary>\n        ///     Extra information about the requesting user. See user.Info interface for details.\n        /// </summary>\n        [YamlMember(Alias = \"extra\")]\n        [JsonProperty(\"extra\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, List<string>> Extra { get; } = new Dictionary<string, List<string>>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Extra\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExtra() => Extra.Count > 0;\n\n        /// <summary>\n        ///     UID information about the requesting user. See user.Info interface for details.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     Information about the requesting user. See user.Info interface for details.\n        /// </summary>\n        [YamlMember(Alias = \"username\")]\n        [JsonProperty(\"username\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Username { get; set; }\n\n        /// <summary>\n        ///     Group information about the requesting user. See user.Info interface for details.\n        /// </summary>\n        [YamlMember(Alias = \"groups\")]\n        [JsonProperty(\"groups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Groups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Groups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeGroups() => Groups.Count > 0;\n\n        /// <summary>\n        ///     allowedUsages specifies a set of usage contexts the key will be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\n        ///          https://tools.ietf.org/html/rfc5280#section-4.2.1.12\n        /// </summary>\n        [YamlMember(Alias = \"usages\")]\n        [JsonProperty(\"usages\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Usages { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Usages\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeUsages() => Usages.Count > 0;\n\n        /// <summary>\n        ///     Base64-encoded PKCS#10 CSR data\n        /// </summary>\n        [YamlMember(Alias = \"request\")]\n        [JsonProperty(\"request\", NullValueHandling = NullValueHandling.Include)]\n        public string Request { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CertificateSigningRequestStatus contains conditions used to indicate approved/denied/failed status of the request, and the issued certificate.\n    /// </summary>\n    public partial class CertificateSigningRequestStatusV1\n    {\n        /// <summary>\n        ///     certificate is populated with an issued certificate by the signer after an Approved condition is present. This field is set via the /status subresource. Once populated, this field is immutable.\n        ///     \n        ///     If the certificate signing request is denied, a condition of type \"Denied\" is added and this field remains empty. If the signer cannot issue the certificate, a condition of type \"Failed\" is added and this field remains empty.\n        ///     \n        ///     Validation requirements:\n        ///      1. certificate must contain one or more PEM blocks.\n        ///      2. All PEM blocks must have the \"CERTIFICATE\" label, contain no headers, and the encoded data\n        ///       must be a BER-encoded ASN.1 Certificate structure as described in section 4 of RFC5280.\n        ///      3. Non-PEM content may appear before or after the \"CERTIFICATE\" PEM blocks and is unvalidated,\n        ///       to allow for explanatory text as described in section 5.2 of RFC7468.\n        ///     \n        ///     If more than one PEM block is present, and the definition of the requested spec.signerName does not indicate otherwise, the first block is the issued certificate, and subsequent blocks should be treated as intermediate certificates and presented in TLS handshakes.\n        ///     \n        ///     The certificate is encoded in PEM format.\n        ///     \n        ///     When serialized as JSON or YAML, the data is additionally base64-encoded, so it consists of:\n        ///     \n        ///         base64(\n        ///         -----BEGIN CERTIFICATE-----\n        ///         ...\n        ///         -----END CERTIFICATE-----\n        ///         )\n        /// </summary>\n        [YamlMember(Alias = \"certificate\")]\n        [JsonProperty(\"certificate\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Certificate { get; set; }\n\n        /// <summary>\n        ///     conditions applied to the request. Known conditions are \"Approved\", \"Denied\", and \"Failed\".\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CertificateSigningRequestConditionV1> Conditions { get; } = new List<CertificateSigningRequestConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class CertificateSigningRequestStatusV1Beta1\n    {\n        /// <summary>\n        ///     If request was approved, the controller will place the issued certificate here.\n        /// </summary>\n        [YamlMember(Alias = \"certificate\")]\n        [JsonProperty(\"certificate\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Certificate { get; set; }\n\n        /// <summary>\n        ///     Conditions applied to the request, such as approval or denial.\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CertificateSigningRequestConditionV1Beta1> Conditions { get; } = new List<CertificateSigningRequestConditionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued.\n    ///     \n    ///     Kubelets use this API to obtain:\n    ///      1. client certificates to authenticate to kube-apiserver (with the \"kubernetes.io/kube-apiserver-client-kubelet\" signerName).\n    ///      2. serving certificates for TLS endpoints kube-apiserver can connect to securely (with the \"kubernetes.io/kubelet-serving\" signerName).\n    ///     \n    ///     This API can be used to request client certificates to authenticate to kube-apiserver (with the \"kubernetes.io/kube-apiserver-client\" signerName), or to obtain certificates from custom non-Kubernetes signers.\n    /// </summary>\n    [KubeObject(\"CertificateSigningRequest\", \"certificates.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/certificates.k8s.io/v1/certificatesigningrequests\")]\n    [KubeApi(KubeAction.Create, \"apis/certificates.k8s.io/v1/certificatesigningrequests\")]\n    [KubeApi(KubeAction.Get, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/certificates.k8s.io/v1/watch/certificatesigningrequests\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/certificates.k8s.io/v1/certificatesigningrequests\")]\n    [KubeApi(KubeAction.Get, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/certificates.k8s.io/v1/watch/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.Get, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval\")]\n    [KubeApi(KubeAction.Patch, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status\")]\n    [KubeApi(KubeAction.Patch, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval\")]\n    [KubeApi(KubeAction.Update, \"apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval\")]\n    public partial class CertificateSigningRequestV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec contains the certificate request, and is immutable after creation. Only the request, signerName, expirationSeconds, and usages fields can be set on creation. Other fields are derived by Kubernetes and cannot be modified by users.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public CertificateSigningRequestSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     status contains information about whether the request is approved or denied, and the certificate issued by the signer, or the failure condition indicating signer failure.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CertificateSigningRequestStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CertificateSigningRequestV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Describes a certificate signing request\n    /// </summary>\n    [KubeObject(\"CertificateSigningRequest\", \"certificates.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests\")]\n    [KubeApi(KubeAction.Create, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests\")]\n    [KubeApi(KubeAction.Get, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/certificates.k8s.io/v1beta1/watch/certificatesigningrequests\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests\")]\n    [KubeApi(KubeAction.Get, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/certificates.k8s.io/v1beta1/watch/certificatesigningrequests/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}/approval\")]\n    public partial class CertificateSigningRequestV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     The certificate request itself and any additional information.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public CertificateSigningRequestSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Derived information about the request.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CertificateSigningRequestStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CinderPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class CinderPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"volumeID\")]\n        [JsonProperty(\"volumeID\", NullValueHandling = NullValueHandling.Include)]\n        public string VolumeID { get; set; }\n\n        /// <summary>\n        ///     fsType Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack.\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CinderVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class CinderVolumeSourceV1\n    {\n        /// <summary>\n        ///     volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"volumeID\")]\n        [JsonProperty(\"volumeID\", NullValueHandling = NullValueHandling.Include)]\n        public string VolumeID { get; set; }\n\n        /// <summary>\n        ///     fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public LocalObjectReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClientIPConfigV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClientIPConfig represents the configurations of Client IP based session affinity.\n    /// </summary>\n    public partial class ClientIPConfigV1\n    {\n        /// <summary>\n        ///     timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be &gt;0 &amp;&amp; &lt;=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).\n        /// </summary>\n        [YamlMember(Alias = \"timeoutSeconds\")]\n        [JsonProperty(\"timeoutSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? TimeoutSeconds { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleBindingListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleBindingList is a collection of ClusterRoleBindings\n    /// </summary>\n    [KubeListItem(\"ClusterRoleBinding\", \"rbac.authorization.k8s.io/v1\")]\n    [KubeObject(\"ClusterRoleBindingList\", \"rbac.authorization.k8s.io/v1\")]\n    public partial class ClusterRoleBindingListV1 : KubeResourceListV1<ClusterRoleBindingV1>\n    {\n        /// <summary>\n        ///     Items is a list of ClusterRoleBindings\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ClusterRoleBindingV1> Items { get; } = new List<ClusterRoleBindingV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleBindingListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleBindingList is a collection of ClusterRoleBindings\n    /// </summary>\n    [KubeListItem(\"ClusterRoleBinding\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    [KubeObject(\"ClusterRoleBindingList\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    public partial class ClusterRoleBindingListV1Alpha1 : KubeResourceListV1<ClusterRoleBindingV1Alpha1>\n    {\n        /// <summary>\n        ///     Items is a list of ClusterRoleBindings\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ClusterRoleBindingV1Alpha1> Items { get; } = new List<ClusterRoleBindingV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleBindingListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleBindingList is a collection of ClusterRoleBindings\n    /// </summary>\n    [KubeListItem(\"ClusterRoleBinding\", \"rbac.authorization.k8s.io/v1beta1\")]\n    [KubeObject(\"ClusterRoleBindingList\", \"rbac.authorization.k8s.io/v1beta1\")]\n    public partial class ClusterRoleBindingListV1Beta1 : KubeResourceListV1<ClusterRoleBindingV1Beta1>\n    {\n        /// <summary>\n        ///     Items is a list of ClusterRoleBindings\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ClusterRoleBindingV1Beta1> Items { get; } = new List<ClusterRoleBindingV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleBindingV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference a ClusterRole in the global namespace, and adds who information via Subject.\n    /// </summary>\n    [KubeObject(\"ClusterRoleBinding\", \"rbac.authorization.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1/watch/clusterrolebindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1/watch/clusterrolebindings/{name}\")]\n    public partial class ClusterRoleBindingV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"roleRef\")]\n        [JsonProperty(\"roleRef\", NullValueHandling = NullValueHandling.Include)]\n        public RoleRefV1 RoleRef { get; set; }\n\n        /// <summary>\n        ///     Subjects holds references to the objects the role applies to.\n        /// </summary>\n        [YamlMember(Alias = \"subjects\")]\n        [JsonProperty(\"subjects\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SubjectV1> Subjects { get; } = new List<SubjectV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Subjects\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSubjects() => Subjects.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleBindingV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference a ClusterRole in the global namespace, and adds who information via Subject.\n    /// </summary>\n    [KubeObject(\"ClusterRoleBinding\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterrolebindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterrolebindings/{name}\")]\n    public partial class ClusterRoleBindingV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.\n        /// </summary>\n        [YamlMember(Alias = \"roleRef\")]\n        [JsonProperty(\"roleRef\", NullValueHandling = NullValueHandling.Include)]\n        public RoleRefV1Alpha1 RoleRef { get; set; }\n\n        /// <summary>\n        ///     Subjects holds references to the objects the role applies to.\n        /// </summary>\n        [YamlMember(Alias = \"subjects\")]\n        [JsonProperty(\"subjects\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SubjectV1Alpha1> Subjects { get; } = new List<SubjectV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Subjects\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSubjects() => Subjects.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleBindingV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference a ClusterRole in the global namespace, and adds who information via Subject.\n    /// </summary>\n    [KubeObject(\"ClusterRoleBinding\", \"rbac.authorization.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1beta1/watch/clusterrolebindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1beta1/watch/clusterrolebindings/{name}\")]\n    public partial class ClusterRoleBindingV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.\n        /// </summary>\n        [YamlMember(Alias = \"roleRef\")]\n        [JsonProperty(\"roleRef\", NullValueHandling = NullValueHandling.Include)]\n        public RoleRefV1Beta1 RoleRef { get; set; }\n\n        /// <summary>\n        ///     Subjects holds references to the objects the role applies to.\n        /// </summary>\n        [YamlMember(Alias = \"subjects\")]\n        [JsonProperty(\"subjects\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SubjectV1Beta1> Subjects { get; } = new List<SubjectV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Subjects\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSubjects() => Subjects.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleList is a collection of ClusterRoles\n    /// </summary>\n    [KubeListItem(\"ClusterRole\", \"rbac.authorization.k8s.io/v1\")]\n    [KubeObject(\"ClusterRoleList\", \"rbac.authorization.k8s.io/v1\")]\n    public partial class ClusterRoleListV1 : KubeResourceListV1<ClusterRoleV1>\n    {\n        /// <summary>\n        ///     Items is a list of ClusterRoles\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ClusterRoleV1> Items { get; } = new List<ClusterRoleV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleList is a collection of ClusterRoles\n    /// </summary>\n    [KubeListItem(\"ClusterRole\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    [KubeObject(\"ClusterRoleList\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    public partial class ClusterRoleListV1Alpha1 : KubeResourceListV1<ClusterRoleV1Alpha1>\n    {\n        /// <summary>\n        ///     Items is a list of ClusterRoles\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ClusterRoleV1Alpha1> Items { get; } = new List<ClusterRoleV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRoleList is a collection of ClusterRoles\n    /// </summary>\n    [KubeListItem(\"ClusterRole\", \"rbac.authorization.k8s.io/v1beta1\")]\n    [KubeObject(\"ClusterRoleList\", \"rbac.authorization.k8s.io/v1beta1\")]\n    public partial class ClusterRoleListV1Beta1 : KubeResourceListV1<ClusterRoleV1Beta1>\n    {\n        /// <summary>\n        ///     Items is a list of ClusterRoles\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ClusterRoleV1Beta1> Items { get; } = new List<ClusterRoleV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.\n    /// </summary>\n    [KubeObject(\"ClusterRole\", \"rbac.authorization.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1/clusterroles\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1/clusterroles\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1/watch/clusterroles\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1/clusterroles\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1/watch/clusterroles/{name}\")]\n    public partial class ClusterRoleV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller.\n        /// </summary>\n        [YamlMember(Alias = \"aggregationRule\")]\n        [JsonProperty(\"aggregationRule\", NullValueHandling = NullValueHandling.Ignore)]\n        public AggregationRuleV1 AggregationRule { get; set; }\n\n        /// <summary>\n        ///     Rules holds all the PolicyRules for this ClusterRole\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PolicyRuleV1> Rules { get; } = new List<PolicyRuleV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.\n    /// </summary>\n    [KubeObject(\"ClusterRole\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterroles\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterroles\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterroles\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1alpha1/clusterroles\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterroles/{name}\")]\n    public partial class ClusterRoleV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller.\n        /// </summary>\n        [YamlMember(Alias = \"aggregationRule\")]\n        [JsonProperty(\"aggregationRule\", NullValueHandling = NullValueHandling.Ignore)]\n        public AggregationRuleV1Alpha1 AggregationRule { get; set; }\n\n        /// <summary>\n        ///     Rules holds all the PolicyRules for this ClusterRole\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PolicyRuleV1Alpha1> Rules { get; } = new List<PolicyRuleV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterRoleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.\n    /// </summary>\n    [KubeObject(\"ClusterRole\", \"rbac.authorization.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1beta1/clusterroles\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1beta1/clusterroles\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1beta1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1beta1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1beta1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1beta1/clusterroles/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1beta1/watch/clusterroles\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1beta1/clusterroles\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1beta1/watch/clusterroles/{name}\")]\n    public partial class ClusterRoleV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller.\n        /// </summary>\n        [YamlMember(Alias = \"aggregationRule\")]\n        [JsonProperty(\"aggregationRule\", NullValueHandling = NullValueHandling.Ignore)]\n        public AggregationRuleV1Beta1 AggregationRule { get; set; }\n\n        /// <summary>\n        ///     Rules holds all the PolicyRules for this ClusterRole\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PolicyRuleV1Beta1> Rules { get; } = new List<PolicyRuleV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterTrustBundleListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterTrustBundleList is a collection of ClusterTrustBundle objects\n    /// </summary>\n    [KubeListItem(\"ClusterTrustBundle\", \"certificates.k8s.io/v1alpha1\")]\n    [KubeObject(\"ClusterTrustBundleList\", \"certificates.k8s.io/v1alpha1\")]\n    public partial class ClusterTrustBundleListV1Alpha1 : KubeResourceListV1<ClusterTrustBundleV1Alpha1>\n    {\n        /// <summary>\n        ///     items is a collection of ClusterTrustBundle objects\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ClusterTrustBundleV1Alpha1> Items { get; } = new List<ClusterTrustBundleV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterTrustBundleProjectionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterTrustBundleProjection describes how to select a set of ClusterTrustBundle objects and project their contents into the pod filesystem.\n    /// </summary>\n    public partial class ClusterTrustBundleProjectionV1\n    {\n        /// <summary>\n        ///     Select a single ClusterTrustBundle by object name.  Mutually-exclusive with signerName and labelSelector.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name.  The contents of all selected ClusterTrustBundles will be unified and deduplicated.\n        /// </summary>\n        [YamlMember(Alias = \"signerName\")]\n        [JsonProperty(\"signerName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SignerName { get; set; }\n\n        /// <summary>\n        ///     Relative path from the volume root to write the bundle.\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available.  If using name, then the named ClusterTrustBundle is allowed not to exist.  If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n\n        /// <summary>\n        ///     Select all ClusterTrustBundles that match this label selector.  Only has effect if signerName is set.  Mutually-exclusive with name.  If unset, interpreted as \"match nothing\".  If set but empty, interpreted as \"match everything\".\n        /// </summary>\n        [YamlMember(Alias = \"labelSelector\")]\n        [JsonProperty(\"labelSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 LabelSelector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterTrustBundleSpecV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterTrustBundleSpec contains the signer and trust anchors.\n    /// </summary>\n    public partial class ClusterTrustBundleSpecV1Alpha1\n    {\n        /// <summary>\n        ///     signerName indicates the associated signer, if any.\n        ///     \n        ///     In order to create or update a ClusterTrustBundle that sets signerName, you must have the following cluster-scoped permission: group=certificates.k8s.io resource=signers resourceName=&lt;the signer name&gt; verb=attest.\n        ///     \n        ///     If signerName is not empty, then the ClusterTrustBundle object must be named with the signer name as a prefix (translating slashes to colons). For example, for the signer name `example.com/foo`, valid ClusterTrustBundle object names include `example.com:foo:abc` and `example.com:foo:v1`.\n        ///     \n        ///     If signerName is empty, then the ClusterTrustBundle object's name must not have such a prefix.\n        ///     \n        ///     List/watch requests for ClusterTrustBundles can filter on this field using a `spec.signerName=NAME` field selector.\n        /// </summary>\n        [YamlMember(Alias = \"signerName\")]\n        [JsonProperty(\"signerName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SignerName { get; set; }\n\n        /// <summary>\n        ///     trustBundle contains the individual X.509 trust anchors for this bundle, as PEM bundle of PEM-wrapped, DER-formatted X.509 certificates.\n        ///     \n        ///     The data must consist only of PEM certificate blocks that parse as valid X.509 certificates.  Each certificate must include a basic constraints extension with the CA bit set.  The API server will reject objects that contain duplicate certificates, or that use PEM block headers.\n        ///     \n        ///     Users of ClusterTrustBundles, including Kubelet, are free to reorder and deduplicate certificate blocks in this file according to their own logic, as well as to drop PEM block headers and inter-block data.\n        /// </summary>\n        [YamlMember(Alias = \"trustBundle\")]\n        [JsonProperty(\"trustBundle\", NullValueHandling = NullValueHandling.Include)]\n        public string TrustBundle { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ClusterTrustBundleV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors (root certificates).\n    ///     \n    ///     ClusterTrustBundle objects are considered to be readable by any authenticated user in the cluster, because they can be mounted by pods using the `clusterTrustBundle` projection.  All service accounts have read access to ClusterTrustBundles by default.  Users who only have namespace-level access to a cluster can read ClusterTrustBundles by impersonating a serviceaccount that they have access to.\n    ///     \n    ///     It can be optionally associated with a particular assigner, in which case it contains one valid set of trust anchors for that signer. Signers may have multiple associated ClusterTrustBundles; each is an independent set of trust anchors for that signer. Admission control is used to enforce that only users with permissions on the signer can create or modify the corresponding bundle.\n    /// </summary>\n    [KubeObject(\"ClusterTrustBundle\", \"certificates.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/certificates.k8s.io/v1alpha1/clustertrustbundles\")]\n    [KubeApi(KubeAction.Create, \"apis/certificates.k8s.io/v1alpha1/clustertrustbundles\")]\n    [KubeApi(KubeAction.Get, \"apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/certificates.k8s.io/v1alpha1/watch/clustertrustbundles\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/certificates.k8s.io/v1alpha1/clustertrustbundles\")]\n    [KubeApi(KubeAction.Watch, \"apis/certificates.k8s.io/v1alpha1/watch/clustertrustbundles/{name}\")]\n    public partial class ClusterTrustBundleV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec contains the signer (if any) and trust anchors.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public ClusterTrustBundleSpecV1Alpha1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ComponentConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Information about the condition of a component.\n    /// </summary>\n    public partial class ComponentConditionV1\n    {\n        /// <summary>\n        ///     Message about the condition for a component. For example, information about a health check.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of condition for a component. Valid value: \"Healthy\"\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Condition error code for a component. For example, a health check error code.\n        /// </summary>\n        [YamlMember(Alias = \"error\")]\n        [JsonProperty(\"error\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Error { get; set; }\n\n        /// <summary>\n        ///     Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ComponentStatusListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Status of all the conditions for the component as a list of ComponentStatus objects. Deprecated: This API is deprecated in v1.19+\n    /// </summary>\n    [KubeListItem(\"ComponentStatus\", \"v1\")]\n    [KubeObject(\"ComponentStatusList\", \"v1\")]\n    public partial class ComponentStatusListV1 : KubeResourceListV1<ComponentStatusV1>\n    {\n        /// <summary>\n        ///     List of ComponentStatus objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ComponentStatusV1> Items { get; } = new List<ComponentStatusV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ComponentStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ComponentStatus (and ComponentStatusList) holds the cluster validation info. Deprecated: This API is deprecated in v1.19+\n    /// </summary>\n    [KubeObject(\"ComponentStatus\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/componentstatuses\")]\n    [KubeApi(KubeAction.Get, \"api/v1/componentstatuses/{name}\")]\n    public partial class ComponentStatusV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     List of component conditions observed\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ComponentConditionV1> Conditions { get; } = new List<ComponentConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Condition contains details for one aspect of the current state of this API Resource.\n    /// </summary>\n    public partial class ConditionV1\n    {\n        /// <summary>\n        ///     lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Include)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     message is a human readable message indicating details about the transition. This may be an empty string.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Include)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     type of condition in CamelCase or in foo.example.com/CamelCase.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Include)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ConfigMapEnvSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n    ///     \n    ///     The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.\n    /// </summary>\n    public partial class ConfigMapEnvSourceV1\n    {\n        /// <summary>\n        ///     Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Specify whether the ConfigMap must be defined\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ConfigMapKeySelectorV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Selects a key from a ConfigMap.\n    /// </summary>\n    public partial class ConfigMapKeySelectorV1\n    {\n        /// <summary>\n        ///     Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Specify whether the ConfigMap or its key must be defined\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n\n        /// <summary>\n        ///     The key to select.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ConfigMapListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ConfigMapList is a resource containing a list of ConfigMap objects.\n    /// </summary>\n    [KubeListItem(\"ConfigMap\", \"v1\")]\n    [KubeObject(\"ConfigMapList\", \"v1\")]\n    public partial class ConfigMapListV1 : KubeResourceListV1<ConfigMapV1>\n    {\n        /// <summary>\n        ///     Items is the list of ConfigMaps.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ConfigMapV1> Items { get; } = new List<ConfigMapV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ConfigMapNodeConfigSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node. This API is deprecated since 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration\n    /// </summary>\n    public partial class ConfigMapNodeConfigSourceV1\n    {\n        /// <summary>\n        ///     UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Include)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.\n        /// </summary>\n        [YamlMember(Alias = \"resourceVersion\")]\n        [JsonProperty(\"resourceVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceVersion { get; set; }\n\n        /// <summary>\n        ///     KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.\n        /// </summary>\n        [YamlMember(Alias = \"kubeletConfigKey\")]\n        [JsonProperty(\"kubeletConfigKey\", NullValueHandling = NullValueHandling.Include)]\n        public string KubeletConfigKey { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ConfigMapProjectionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Adapts a ConfigMap into a projected volume.\n    ///     \n    ///     The contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.\n    /// </summary>\n    [KubeListItem(\"KeyToPath\", \"v1\")]\n    public partial class ConfigMapProjectionV1\n    {\n        /// <summary>\n        ///     Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     optional specify whether the ConfigMap or its keys must be defined\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n\n        /// <summary>\n        ///     items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n        /// </summary>\n        [YamlMember(Alias = \"items\")]\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<KeyToPathV1> Items { get; } = new List<KeyToPathV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Items\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeItems() => Items.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ConfigMapV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ConfigMap holds configuration data for pods to consume.\n    /// </summary>\n    [KubeObject(\"ConfigMap\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/configmaps\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/configmaps\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/configmaps\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/configmaps\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/configmaps/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/configmaps/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/configmaps/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/configmaps/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/configmaps\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/configmaps\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/configmaps/{name}\")]\n    public partial class ConfigMapV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet.\n        /// </summary>\n        [YamlMember(Alias = \"binaryData\")]\n        [JsonProperty(\"binaryData\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> BinaryData { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"BinaryData\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeBinaryData() => BinaryData.Count > 0;\n\n        /// <summary>\n        ///     Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process.\n        /// </summary>\n        [YamlMember(Alias = \"data\")]\n        [JsonProperty(\"data\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Data { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Data\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeData() => Data.Count > 0;\n\n        /// <summary>\n        ///     Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.\n        /// </summary>\n        [YamlMember(Alias = \"immutable\")]\n        [JsonProperty(\"immutable\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Immutable { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ConfigMapVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Adapts a ConfigMap into a volume.\n    ///     \n    ///     The contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    [KubeListItem(\"KeyToPath\", \"v1\")]\n    public partial class ConfigMapVolumeSourceV1\n    {\n        /// <summary>\n        ///     defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n        /// </summary>\n        [YamlMember(Alias = \"defaultMode\")]\n        [JsonProperty(\"defaultMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? DefaultMode { get; set; }\n\n        /// <summary>\n        ///     Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     optional specify whether the ConfigMap or its keys must be defined\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n\n        /// <summary>\n        ///     items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n        /// </summary>\n        [YamlMember(Alias = \"items\")]\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<KeyToPathV1> Items { get; } = new List<KeyToPathV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Items\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeItems() => Items.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerImageV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Describe a container image\n    /// </summary>\n    public partial class ContainerImageV1\n    {\n        /// <summary>\n        ///     Names by which this image is known. e.g. [\"kubernetes.example/hyperkube:v1.0.7\", \"cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7\"]\n        /// </summary>\n        [YamlMember(Alias = \"names\")]\n        [JsonProperty(\"names\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Names { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Names\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNames() => Names.Count > 0;\n\n        /// <summary>\n        ///     The size of the image in bytes.\n        /// </summary>\n        [YamlMember(Alias = \"sizeBytes\")]\n        [JsonProperty(\"sizeBytes\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? SizeBytes { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerPortV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerPort represents a network port in a single container.\n    /// </summary>\n    public partial class ContainerPortV1\n    {\n        /// <summary>\n        ///     What host IP to bind the external port to.\n        /// </summary>\n        [YamlMember(Alias = \"hostIP\")]\n        [JsonProperty(\"hostIP\", NullValueHandling = NullValueHandling.Ignore)]\n        public string HostIP { get; set; }\n\n        /// <summary>\n        ///     If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n        /// </summary>\n        [YamlMember(Alias = \"protocol\")]\n        [JsonProperty(\"protocol\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Protocol { get; set; }\n\n        /// <summary>\n        ///     Number of port to expose on the pod's IP address. This must be a valid port number, 0 &lt; x &lt; 65536.\n        /// </summary>\n        [YamlMember(Alias = \"containerPort\")]\n        [JsonProperty(\"containerPort\", NullValueHandling = NullValueHandling.Include)]\n        public int ContainerPort { get; set; }\n\n        /// <summary>\n        ///     Number of port to expose on the host. If specified, this must be a valid port number, 0 &lt; x &lt; 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\n        /// </summary>\n        [YamlMember(Alias = \"hostPort\")]\n        [JsonProperty(\"hostPort\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? HostPort { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerResizePolicyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerResizePolicy represents resource resize policy for the container.\n    /// </summary>\n    public partial class ContainerResizePolicyV1\n    {\n        /// <summary>\n        ///     Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\n        /// </summary>\n        [YamlMember(Alias = \"resourceName\")]\n        [JsonProperty(\"resourceName\", NullValueHandling = NullValueHandling.Include)]\n        public string ResourceName { get; set; }\n\n        /// <summary>\n        ///     Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\n        /// </summary>\n        [YamlMember(Alias = \"restartPolicy\")]\n        [JsonProperty(\"restartPolicy\", NullValueHandling = NullValueHandling.Include)]\n        public string RestartPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerResourceMetricSourceV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory).  The values will be averaged together before being compared to the target.  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.  Only one \"target\" type should be set.\n    /// </summary>\n    public partial class ContainerResourceMetricSourceV2\n    {\n        /// <summary>\n        ///     name is the name of the resource in question.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     container is the name of the container in the pods of the scaling target\n        /// </summary>\n        [YamlMember(Alias = \"container\")]\n        [JsonProperty(\"container\", NullValueHandling = NullValueHandling.Include)]\n        public string Container { get; set; }\n\n        /// <summary>\n        ///     target specifies the target value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"target\")]\n        [JsonProperty(\"target\", NullValueHandling = NullValueHandling.Include)]\n        public MetricTargetV2 Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerResourceMetricStatusV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing a single container in each pod in the current scale target (e.g. CPU or memory).  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.\n    /// </summary>\n    public partial class ContainerResourceMetricStatusV2\n    {\n        /// <summary>\n        ///     name is the name of the resource in question.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     container is the name of the container in the pods of the scaling target\n        /// </summary>\n        [YamlMember(Alias = \"container\")]\n        [JsonProperty(\"container\", NullValueHandling = NullValueHandling.Include)]\n        public string Container { get; set; }\n\n        /// <summary>\n        ///     current contains the current value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"current\")]\n        [JsonProperty(\"current\", NullValueHandling = NullValueHandling.Include)]\n        public MetricValueStatusV2 Current { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerStateRunningV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerStateRunning is a running state of a container.\n    /// </summary>\n    public partial class ContainerStateRunningV1\n    {\n        /// <summary>\n        ///     Time at which the container was last (re-)started\n        /// </summary>\n        [YamlMember(Alias = \"startedAt\")]\n        [JsonProperty(\"startedAt\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? StartedAt { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerStateTerminatedV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerStateTerminated is a terminated state of a container.\n    /// </summary>\n    public partial class ContainerStateTerminatedV1\n    {\n        /// <summary>\n        ///     Container's ID in the format '&lt;type&gt;://&lt;container_id&gt;'\n        /// </summary>\n        [YamlMember(Alias = \"containerID\")]\n        [JsonProperty(\"containerID\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ContainerID { get; set; }\n\n        /// <summary>\n        ///     Exit status from the last termination of the container\n        /// </summary>\n        [YamlMember(Alias = \"exitCode\")]\n        [JsonProperty(\"exitCode\", NullValueHandling = NullValueHandling.Include)]\n        public int ExitCode { get; set; }\n\n        /// <summary>\n        ///     Message regarding the last termination of the container\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Signal from the last termination of the container\n        /// </summary>\n        [YamlMember(Alias = \"signal\")]\n        [JsonProperty(\"signal\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Signal { get; set; }\n\n        /// <summary>\n        ///     (brief) reason from the last termination of the container\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Time at which the container last terminated\n        /// </summary>\n        [YamlMember(Alias = \"finishedAt\")]\n        [JsonProperty(\"finishedAt\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? FinishedAt { get; set; }\n\n        /// <summary>\n        ///     Time at which previous execution of the container started\n        /// </summary>\n        [YamlMember(Alias = \"startedAt\")]\n        [JsonProperty(\"startedAt\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? StartedAt { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerStateV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.\n    /// </summary>\n    public partial class ContainerStateV1\n    {\n        /// <summary>\n        ///     Details about a terminated container\n        /// </summary>\n        [YamlMember(Alias = \"terminated\")]\n        [JsonProperty(\"terminated\", NullValueHandling = NullValueHandling.Ignore)]\n        public ContainerStateTerminatedV1 Terminated { get; set; }\n\n        /// <summary>\n        ///     Details about a running container\n        /// </summary>\n        [YamlMember(Alias = \"running\")]\n        [JsonProperty(\"running\", NullValueHandling = NullValueHandling.Ignore)]\n        public ContainerStateRunningV1 Running { get; set; }\n\n        /// <summary>\n        ///     Details about a waiting container\n        /// </summary>\n        [YamlMember(Alias = \"waiting\")]\n        [JsonProperty(\"waiting\", NullValueHandling = NullValueHandling.Ignore)]\n        public ContainerStateWaitingV1 Waiting { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerStateWaitingV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerStateWaiting is a waiting state of a container.\n    /// </summary>\n    public partial class ContainerStateWaitingV1\n    {\n        /// <summary>\n        ///     Message regarding why the container is not yet running.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     (brief) reason the container is not yet running.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerStatus contains details for the current status of this container.\n    /// </summary>\n    public partial class ContainerStatusV1\n    {\n        /// <summary>\n        ///     ContainerID is the ID of the container in the format '&lt;type&gt;://&lt;container_id&gt;'. Where type is a container runtime identifier, returned from Version call of CRI API (for example \"containerd\").\n        /// </summary>\n        [YamlMember(Alias = \"containerID\")]\n        [JsonProperty(\"containerID\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ContainerID { get; set; }\n\n        /// <summary>\n        ///     ImageID is the image ID of the container's image. The image ID may not match the image ID of the image used in the PodSpec, as it may have been resolved by the runtime.\n        /// </summary>\n        [YamlMember(Alias = \"imageID\")]\n        [JsonProperty(\"imageID\", NullValueHandling = NullValueHandling.Include)]\n        public string ImageID { get; set; }\n\n        /// <summary>\n        ///     Started indicates whether the container has finished its postStart lifecycle hook and passed its startup probe. Initialized as false, becomes true after startupProbe is considered successful. Resets to false when the container is restarted, or if kubelet loses state temporarily. In both cases, startup probes will run again. Is always true when no startupProbe is defined and container is running and has passed the postStart lifecycle hook. The null value must be treated the same as false.\n        /// </summary>\n        [YamlMember(Alias = \"started\")]\n        [JsonProperty(\"started\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Started { get; set; }\n\n        /// <summary>\n        ///     Image is the name of container image that the container is running. The container image may not match the image used in the PodSpec, as it may have been resolved by the runtime. More info: https://kubernetes.io/docs/concepts/containers/images.\n        /// </summary>\n        [YamlMember(Alias = \"image\")]\n        [JsonProperty(\"image\", NullValueHandling = NullValueHandling.Include)]\n        public string Image { get; set; }\n\n        /// <summary>\n        ///     LastTerminationState holds the last termination state of the container to help debug container crashes and restarts. This field is not populated if the container is still running and RestartCount is 0.\n        /// </summary>\n        [YamlMember(Alias = \"lastState\")]\n        [JsonProperty(\"lastState\", NullValueHandling = NullValueHandling.Ignore)]\n        public ContainerStateV1 LastState { get; set; }\n\n        /// <summary>\n        ///     Name is a DNS_LABEL representing the unique name of the container. Each container in a pod must have a unique name across all container types. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     State holds details about the container's current condition.\n        /// </summary>\n        [YamlMember(Alias = \"state\")]\n        [JsonProperty(\"state\", NullValueHandling = NullValueHandling.Ignore)]\n        public ContainerStateV1 State { get; set; }\n\n        /// <summary>\n        ///     User represents user identity information initially attached to the first process of the container\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public ContainerUserV1 User { get; set; }\n\n        /// <summary>\n        ///     AllocatedResources represents the compute resources allocated for this container by the node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission and after successfully admitting desired pod resize.\n        /// </summary>\n        [YamlMember(Alias = \"allocatedResources\")]\n        [JsonProperty(\"allocatedResources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> AllocatedResources { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllocatedResources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllocatedResources() => AllocatedResources.Count > 0;\n\n        /// <summary>\n        ///     AllocatedResourcesStatus represents the status of various resources allocated for this Pod.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"allocatedResourcesStatus\")]\n        [JsonProperty(\"allocatedResourcesStatus\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourceStatusV1> AllocatedResourcesStatus { get; } = new List<ResourceStatusV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllocatedResourcesStatus\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllocatedResourcesStatus() => AllocatedResourcesStatus.Count > 0;\n\n        /// <summary>\n        ///     Resources represents the compute resource requests and limits that have been successfully enacted on the running container after it has been started or has been successfully resized.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceRequirementsV1 Resources { get; set; }\n\n        /// <summary>\n        ///     Status of volume mounts.\n        /// </summary>\n        [MergeStrategy(Key = \"mountPath\")]\n        [YamlMember(Alias = \"volumeMounts\")]\n        [JsonProperty(\"volumeMounts\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeMountStatusV1> VolumeMounts { get; } = new List<VolumeMountStatusV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeMounts\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeMounts() => VolumeMounts.Count > 0;\n\n        /// <summary>\n        ///     RestartCount holds the number of times the container has been restarted. Kubelet makes an effort to always increment the value, but there are cases when the state may be lost due to node restarts and then the value may be reset to 0. The value is never negative.\n        /// </summary>\n        [YamlMember(Alias = \"restartCount\")]\n        [JsonProperty(\"restartCount\", NullValueHandling = NullValueHandling.Include)]\n        public int RestartCount { get; set; }\n\n        /// <summary>\n        ///     Ready specifies whether the container is currently passing its readiness check. The value will change as readiness probes keep executing. If no readiness probes are specified, this field defaults to true once the container is fully started (see Started field).\n        ///     \n        ///     The value is typically used to determine whether a container is ready to accept traffic.\n        /// </summary>\n        [YamlMember(Alias = \"ready\")]\n        [JsonProperty(\"ready\", NullValueHandling = NullValueHandling.Include)]\n        public bool Ready { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerUserV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ContainerUser represents user identity information\n    /// </summary>\n    public partial class ContainerUserV1\n    {\n        /// <summary>\n        ///     Linux holds user identity information initially attached to the first process of the containers in Linux. Note that the actual running identity can be changed if the process has enough privilege to do so.\n        /// </summary>\n        [YamlMember(Alias = \"linux\")]\n        [JsonProperty(\"linux\", NullValueHandling = NullValueHandling.Ignore)]\n        public LinuxContainerUserV1 Linux { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ContainerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A single application container that you want to run within a pod.\n    /// </summary>\n    public partial class ContainerV1\n    {\n        /// <summary>\n        ///     Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n        /// </summary>\n        [YamlMember(Alias = \"command\")]\n        [JsonProperty(\"command\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Command { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Command\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCommand() => Command.Count > 0;\n\n        /// <summary>\n        ///     Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.\n        /// </summary>\n        [YamlMember(Alias = \"image\")]\n        [JsonProperty(\"image\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Image { get; set; }\n\n        /// <summary>\n        ///     Actions that the management system should take in response to container lifecycle events. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"lifecycle\")]\n        [JsonProperty(\"lifecycle\", NullValueHandling = NullValueHandling.Ignore)]\n        public LifecycleV1 Lifecycle { get; set; }\n\n        /// <summary>\n        ///     Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n        /// </summary>\n        [YamlMember(Alias = \"livenessProbe\")]\n        [JsonProperty(\"livenessProbe\", NullValueHandling = NullValueHandling.Ignore)]\n        public ProbeV1 LivenessProbe { get; set; }\n\n        /// <summary>\n        ///     Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n        /// </summary>\n        [YamlMember(Alias = \"readinessProbe\")]\n        [JsonProperty(\"readinessProbe\", NullValueHandling = NullValueHandling.Ignore)]\n        public ProbeV1 ReadinessProbe { get; set; }\n\n        /// <summary>\n        ///     StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n        /// </summary>\n        [YamlMember(Alias = \"startupProbe\")]\n        [JsonProperty(\"startupProbe\", NullValueHandling = NullValueHandling.Ignore)]\n        public ProbeV1 StartupProbe { get; set; }\n\n        /// <summary>\n        ///     Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n        /// </summary>\n        [YamlMember(Alias = \"stdinOnce\")]\n        [JsonProperty(\"stdinOnce\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? StdinOnce { get; set; }\n\n        /// <summary>\n        ///     Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"terminationMessagePath\")]\n        [JsonProperty(\"terminationMessagePath\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TerminationMessagePath { get; set; }\n\n        /// <summary>\n        ///     List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"envFrom\")]\n        [JsonProperty(\"envFrom\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EnvFromSourceV1> EnvFrom { get; } = new List<EnvFromSourceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"EnvFrom\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEnvFrom() => EnvFrom.Count > 0;\n\n        /// <summary>\n        ///     Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n        /// </summary>\n        [YamlMember(Alias = \"stdin\")]\n        [JsonProperty(\"stdin\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Stdin { get; set; }\n\n        /// <summary>\n        ///     Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"workingDir\")]\n        [JsonProperty(\"workingDir\", NullValueHandling = NullValueHandling.Ignore)]\n        public string WorkingDir { get; set; }\n\n        /// <summary>\n        ///     Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n        /// </summary>\n        [YamlMember(Alias = \"args\")]\n        [JsonProperty(\"args\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Args { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Args\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeArgs() => Args.Count > 0;\n\n        /// <summary>\n        ///     List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [MergeStrategy(Key = \"containerPort\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerPortV1> Ports { get; } = new List<ContainerPortV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n\n        /// <summary>\n        ///     Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceRequirementsV1 Resources { get; set; }\n\n        /// <summary>\n        ///     volumeDevices is the list of block devices to be used by the container.\n        /// </summary>\n        [MergeStrategy(Key = \"devicePath\")]\n        [YamlMember(Alias = \"volumeDevices\")]\n        [JsonProperty(\"volumeDevices\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeDeviceV1> VolumeDevices { get; } = new List<VolumeDeviceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeDevices\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeDevices() => VolumeDevices.Count > 0;\n\n        /// <summary>\n        ///     Pod volumes to mount into the container's filesystem. Cannot be updated.\n        /// </summary>\n        [MergeStrategy(Key = \"mountPath\")]\n        [YamlMember(Alias = \"volumeMounts\")]\n        [JsonProperty(\"volumeMounts\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeMountV1> VolumeMounts { get; } = new List<VolumeMountV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeMounts\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeMounts() => VolumeMounts.Count > 0;\n\n        /// <summary>\n        ///     SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n        /// </summary>\n        [YamlMember(Alias = \"securityContext\")]\n        [JsonProperty(\"securityContext\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecurityContextV1 SecurityContext { get; set; }\n\n        /// <summary>\n        ///     List of environment variables to set in the container. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"env\")]\n        [MergeStrategy(Key = \"name\")]\n        [JsonProperty(\"env\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EnvVarV1> Env { get; } = new List<EnvVarV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Env\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEnv() => Env.Count > 0;\n\n        /// <summary>\n        ///     Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n        /// </summary>\n        [YamlMember(Alias = \"imagePullPolicy\")]\n        [JsonProperty(\"imagePullPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ImagePullPolicy { get; set; }\n\n        /// <summary>\n        ///     Resources resize policy for the container.\n        /// </summary>\n        [YamlMember(Alias = \"resizePolicy\")]\n        [JsonProperty(\"resizePolicy\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerResizePolicyV1> ResizePolicy { get; } = new List<ContainerResizePolicyV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResizePolicy\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResizePolicy() => ResizePolicy.Count > 0;\n\n        /// <summary>\n        ///     RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \"Always\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \"Always\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \"Always\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \"sidecar\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\n        /// </summary>\n        [YamlMember(Alias = \"restartPolicy\")]\n        [JsonProperty(\"restartPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RestartPolicy { get; set; }\n\n        /// <summary>\n        ///     Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"terminationMessagePolicy\")]\n        [JsonProperty(\"terminationMessagePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TerminationMessagePolicy { get; set; }\n\n        /// <summary>\n        ///     Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n        /// </summary>\n        [YamlMember(Alias = \"tty\")]\n        [JsonProperty(\"tty\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Tty { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ControllerRevisionListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ControllerRevisionList is a resource containing a list of ControllerRevision objects.\n    /// </summary>\n    [KubeListItem(\"ControllerRevision\", \"apps/v1\")]\n    [KubeObject(\"ControllerRevisionList\", \"apps/v1\")]\n    public partial class ControllerRevisionListV1 : KubeResourceListV1<ControllerRevisionV1>\n    {\n        /// <summary>\n        ///     Items is the list of ControllerRevisions\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ControllerRevisionV1> Items { get; } = new List<ControllerRevisionV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ControllerRevisionListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ControllerRevisionList is a resource containing a list of ControllerRevision objects.\n    /// </summary>\n    [KubeListItem(\"ControllerRevision\", \"apps/v1beta1\")]\n    [KubeObject(\"ControllerRevisionList\", \"apps/v1beta1\")]\n    public partial class ControllerRevisionListV1Beta1 : KubeResourceListV1<ControllerRevisionV1Beta1>\n    {\n        /// <summary>\n        ///     Items is the list of ControllerRevisions\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ControllerRevisionV1Beta1> Items { get; } = new List<ControllerRevisionV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ControllerRevisionListV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ControllerRevisionList is a resource containing a list of ControllerRevision objects.\n    /// </summary>\n    [KubeListItem(\"ControllerRevision\", \"apps/v1beta2\")]\n    [KubeObject(\"ControllerRevisionList\", \"apps/v1beta2\")]\n    public partial class ControllerRevisionListV1Beta2 : KubeResourceListV1<ControllerRevisionV1Beta2>\n    {\n        /// <summary>\n        ///     Items is the list of ControllerRevisions\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ControllerRevisionV1Beta2> Items { get; } = new List<ControllerRevisionV1Beta2>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ControllerRevisionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.\n    /// </summary>\n    [KubeObject(\"ControllerRevision\", \"apps/v1\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/controllerrevisions\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/controllerrevisions\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions/{name}\")]\n    public partial class ControllerRevisionV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Data is the serialized representation of the state.\n        /// </summary>\n        [YamlMember(Alias = \"data\")]\n        [JsonProperty(\"data\", NullValueHandling = NullValueHandling.Ignore)]\n        public RawExtensionRuntime Data { get; set; }\n\n        /// <summary>\n        ///     Revision indicates the revision of the state represented by Data.\n        /// </summary>\n        [YamlMember(Alias = \"revision\")]\n        [JsonProperty(\"revision\", NullValueHandling = NullValueHandling.Include)]\n        public long Revision { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ControllerRevisionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1beta2/ControllerRevision. See the release notes for more information. ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.\n    /// </summary>\n    [KubeObject(\"ControllerRevision\", \"apps/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta1/controllerrevisions\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta1/watch/controllerrevisions\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta1/watch/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1beta1/watch/namespaces/{namespace}/controllerrevisions/{name}\")]\n    public partial class ControllerRevisionV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Data is the serialized representation of the state.\n        /// </summary>\n        [YamlMember(Alias = \"data\")]\n        [JsonProperty(\"data\", NullValueHandling = NullValueHandling.Ignore)]\n        public RawExtensionRuntime Data { get; set; }\n\n        /// <summary>\n        ///     Revision indicates the revision of the state represented by Data.\n        /// </summary>\n        [YamlMember(Alias = \"revision\")]\n        [JsonProperty(\"revision\", NullValueHandling = NullValueHandling.Include)]\n        public long Revision { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ControllerRevisionV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1/ControllerRevision. See the release notes for more information. ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.\n    /// </summary>\n    [KubeObject(\"ControllerRevision\", \"apps/v1beta2\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/controllerrevisions\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/controllerrevisions\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1beta2/watch/namespaces/{namespace}/controllerrevisions/{name}\")]\n    public partial class ControllerRevisionV1Beta2 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Data is the serialized representation of the state.\n        /// </summary>\n        [YamlMember(Alias = \"data\")]\n        [JsonProperty(\"data\", NullValueHandling = NullValueHandling.Ignore)]\n        public RawExtensionRuntime Data { get; set; }\n\n        /// <summary>\n        ///     Revision indicates the revision of the state represented by Data.\n        /// </summary>\n        [YamlMember(Alias = \"revision\")]\n        [JsonProperty(\"revision\", NullValueHandling = NullValueHandling.Include)]\n        public long Revision { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobList is a collection of cron jobs.\n    /// </summary>\n    [KubeListItem(\"CronJob\", \"batch/v1\")]\n    [KubeObject(\"CronJobList\", \"batch/v1\")]\n    public partial class CronJobListV1 : KubeResourceListV1<CronJobV1>\n    {\n        /// <summary>\n        ///     items is the list of CronJobs.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CronJobV1> Items { get; } = new List<CronJobV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobList is a collection of cron jobs.\n    /// </summary>\n    [KubeListItem(\"CronJob\", \"batch/v1beta1\")]\n    [KubeObject(\"CronJobList\", \"batch/v1beta1\")]\n    public partial class CronJobListV1Beta1 : KubeResourceListV1<CronJobV1Beta1>\n    {\n        /// <summary>\n        ///     items is the list of CronJobs.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CronJobV1Beta1> Items { get; } = new List<CronJobV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobListV2Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobList is a collection of cron jobs.\n    /// </summary>\n    [KubeListItem(\"CronJob\", \"batch/v2alpha1\")]\n    [KubeObject(\"CronJobList\", \"batch/v2alpha1\")]\n    public partial class CronJobListV2Alpha1 : KubeResourceListV1<CronJobV2Alpha1>\n    {\n        /// <summary>\n        ///     items is the list of CronJobs.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CronJobV2Alpha1> Items { get; } = new List<CronJobV2Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobSpec describes how the job execution will look like and when it will actually run.\n    /// </summary>\n    public partial class CronJobSpecV1\n    {\n        /// <summary>\n        ///     This flag tells the controller to suspend subsequent executions, it does not apply to already started executions.  Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"suspend\")]\n        [JsonProperty(\"suspend\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Suspend { get; set; }\n\n        /// <summary>\n        ///     Specifies the job that will be created when executing a CronJob.\n        /// </summary>\n        [YamlMember(Alias = \"jobTemplate\")]\n        [JsonProperty(\"jobTemplate\", NullValueHandling = NullValueHandling.Include)]\n        public JobTemplateSpecV1 JobTemplate { get; set; }\n\n        /// <summary>\n        ///     The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.\n        /// </summary>\n        [YamlMember(Alias = \"schedule\")]\n        [JsonProperty(\"schedule\", NullValueHandling = NullValueHandling.Include)]\n        public string Schedule { get; set; }\n\n        /// <summary>\n        ///     The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones\n        /// </summary>\n        [YamlMember(Alias = \"timeZone\")]\n        [JsonProperty(\"timeZone\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TimeZone { get; set; }\n\n        /// <summary>\n        ///     Optional deadline in seconds for starting the job if it misses scheduled time for any reason.  Missed jobs executions will be counted as failed ones.\n        /// </summary>\n        [YamlMember(Alias = \"startingDeadlineSeconds\")]\n        [JsonProperty(\"startingDeadlineSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? StartingDeadlineSeconds { get; set; }\n\n        /// <summary>\n        ///     The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.\n        /// </summary>\n        [YamlMember(Alias = \"failedJobsHistoryLimit\")]\n        [JsonProperty(\"failedJobsHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? FailedJobsHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3.\n        /// </summary>\n        [YamlMember(Alias = \"successfulJobsHistoryLimit\")]\n        [JsonProperty(\"successfulJobsHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? SuccessfulJobsHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     Specifies how to treat concurrent executions of a Job. Valid values are:\n        ///     \n        ///     - \"Allow\" (default): allows CronJobs to run concurrently; - \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \"Replace\": cancels currently running job and replaces it with a new one\n        /// </summary>\n        [YamlMember(Alias = \"concurrencyPolicy\")]\n        [JsonProperty(\"concurrencyPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ConcurrencyPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobSpec describes how the job execution will look like and when it will actually run.\n    /// </summary>\n    public partial class CronJobSpecV1Beta1\n    {\n        /// <summary>\n        ///     This flag tells the controller to suspend subsequent executions, it does not apply to already started executions.  Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"suspend\")]\n        [JsonProperty(\"suspend\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Suspend { get; set; }\n\n        /// <summary>\n        ///     Specifies the job that will be created when executing a CronJob.\n        /// </summary>\n        [YamlMember(Alias = \"jobTemplate\")]\n        [JsonProperty(\"jobTemplate\", NullValueHandling = NullValueHandling.Include)]\n        public JobTemplateSpecV1Beta1 JobTemplate { get; set; }\n\n        /// <summary>\n        ///     The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.\n        /// </summary>\n        [YamlMember(Alias = \"schedule\")]\n        [JsonProperty(\"schedule\", NullValueHandling = NullValueHandling.Include)]\n        public string Schedule { get; set; }\n\n        /// <summary>\n        ///     Optional deadline in seconds for starting the job if it misses scheduled time for any reason.  Missed jobs executions will be counted as failed ones.\n        /// </summary>\n        [YamlMember(Alias = \"startingDeadlineSeconds\")]\n        [JsonProperty(\"startingDeadlineSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? StartingDeadlineSeconds { get; set; }\n\n        /// <summary>\n        ///     The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.\n        /// </summary>\n        [YamlMember(Alias = \"failedJobsHistoryLimit\")]\n        [JsonProperty(\"failedJobsHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? FailedJobsHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.\n        /// </summary>\n        [YamlMember(Alias = \"successfulJobsHistoryLimit\")]\n        [JsonProperty(\"successfulJobsHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? SuccessfulJobsHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     Specifies how to treat concurrent executions of a Job. Valid values are: - \"Allow\" (default): allows CronJobs to run concurrently; - \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \"Replace\": cancels currently running job and replaces it with a new one\n        /// </summary>\n        [YamlMember(Alias = \"concurrencyPolicy\")]\n        [JsonProperty(\"concurrencyPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ConcurrencyPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobSpecV2Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobSpec describes how the job execution will look like and when it will actually run.\n    /// </summary>\n    public partial class CronJobSpecV2Alpha1\n    {\n        /// <summary>\n        ///     This flag tells the controller to suspend subsequent executions, it does not apply to already started executions.  Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"suspend\")]\n        [JsonProperty(\"suspend\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Suspend { get; set; }\n\n        /// <summary>\n        ///     Specifies the job that will be created when executing a CronJob.\n        /// </summary>\n        [YamlMember(Alias = \"jobTemplate\")]\n        [JsonProperty(\"jobTemplate\", NullValueHandling = NullValueHandling.Include)]\n        public JobTemplateSpecV2Alpha1 JobTemplate { get; set; }\n\n        /// <summary>\n        ///     The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.\n        /// </summary>\n        [YamlMember(Alias = \"schedule\")]\n        [JsonProperty(\"schedule\", NullValueHandling = NullValueHandling.Include)]\n        public string Schedule { get; set; }\n\n        /// <summary>\n        ///     Optional deadline in seconds for starting the job if it misses scheduled time for any reason.  Missed jobs executions will be counted as failed ones.\n        /// </summary>\n        [YamlMember(Alias = \"startingDeadlineSeconds\")]\n        [JsonProperty(\"startingDeadlineSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? StartingDeadlineSeconds { get; set; }\n\n        /// <summary>\n        ///     The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.\n        /// </summary>\n        [YamlMember(Alias = \"failedJobsHistoryLimit\")]\n        [JsonProperty(\"failedJobsHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? FailedJobsHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified.\n        /// </summary>\n        [YamlMember(Alias = \"successfulJobsHistoryLimit\")]\n        [JsonProperty(\"successfulJobsHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? SuccessfulJobsHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     Specifies how to treat concurrent executions of a Job. Valid values are: - \"Allow\" (default): allows CronJobs to run concurrently; - \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \"Replace\": cancels currently running job and replaces it with a new one\n        /// </summary>\n        [YamlMember(Alias = \"concurrencyPolicy\")]\n        [JsonProperty(\"concurrencyPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ConcurrencyPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobStatus represents the current state of a cron job.\n    /// </summary>\n    public partial class CronJobStatusV1\n    {\n        /// <summary>\n        ///     A list of pointers to currently running jobs.\n        /// </summary>\n        [YamlMember(Alias = \"active\")]\n        [JsonProperty(\"active\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ObjectReferenceV1> Active { get; } = new List<ObjectReferenceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Active\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeActive() => Active.Count > 0;\n\n        /// <summary>\n        ///     Information when was the last time the job was successfully scheduled.\n        /// </summary>\n        [YamlMember(Alias = \"lastScheduleTime\")]\n        [JsonProperty(\"lastScheduleTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastScheduleTime { get; set; }\n\n        /// <summary>\n        ///     Information when was the last time the job successfully completed.\n        /// </summary>\n        [YamlMember(Alias = \"lastSuccessfulTime\")]\n        [JsonProperty(\"lastSuccessfulTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastSuccessfulTime { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobStatus represents the current state of a cron job.\n    /// </summary>\n    public partial class CronJobStatusV1Beta1\n    {\n        /// <summary>\n        ///     A list of pointers to currently running jobs.\n        /// </summary>\n        [YamlMember(Alias = \"active\")]\n        [JsonProperty(\"active\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ObjectReferenceV1> Active { get; } = new List<ObjectReferenceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Active\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeActive() => Active.Count > 0;\n\n        /// <summary>\n        ///     Information when was the last time the job was successfully scheduled.\n        /// </summary>\n        [YamlMember(Alias = \"lastScheduleTime\")]\n        [JsonProperty(\"lastScheduleTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastScheduleTime { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobStatusV2Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJobStatus represents the current state of a cron job.\n    /// </summary>\n    public partial class CronJobStatusV2Alpha1\n    {\n        /// <summary>\n        ///     A list of pointers to currently running jobs.\n        /// </summary>\n        [YamlMember(Alias = \"active\")]\n        [JsonProperty(\"active\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ObjectReferenceV1> Active { get; } = new List<ObjectReferenceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Active\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeActive() => Active.Count > 0;\n\n        /// <summary>\n        ///     Information when was the last time the job was successfully scheduled.\n        /// </summary>\n        [YamlMember(Alias = \"lastScheduleTime\")]\n        [JsonProperty(\"lastScheduleTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastScheduleTime { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJob represents the configuration of a single cron job.\n    /// </summary>\n    [KubeObject(\"CronJob\", \"batch/v1\")]\n    [KubeApi(KubeAction.List, \"apis/batch/v1/cronjobs\")]\n    [KubeApi(KubeAction.WatchList, \"apis/batch/v1/watch/cronjobs\")]\n    [KubeApi(KubeAction.List, \"apis/batch/v1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Create, \"apis/batch/v1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Get, \"apis/batch/v1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/batch/v1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/batch/v1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/batch/v1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/batch/v1/watch/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/batch/v1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Get, \"apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/batch/v1/watch/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    public partial class CronJobV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of a cron job, including the schedule. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public CronJobSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CronJobStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJob represents the configuration of a single cron job.\n    /// </summary>\n    [KubeObject(\"CronJob\", \"batch/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/batch/v1beta1/cronjobs\")]\n    [KubeApi(KubeAction.WatchList, \"apis/batch/v1beta1/watch/cronjobs\")]\n    [KubeApi(KubeAction.List, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Create, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Get, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/batch/v1beta1/watch/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Get, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/batch/v1beta1/watch/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    public partial class CronJobV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of a cron job, including the schedule. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public CronJobSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CronJobStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CronJobV2Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CronJob represents the configuration of a single cron job.\n    /// </summary>\n    [KubeObject(\"CronJob\", \"batch/v2alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/batch/v2alpha1/cronjobs\")]\n    [KubeApi(KubeAction.WatchList, \"apis/batch/v2alpha1/watch/cronjobs\")]\n    [KubeApi(KubeAction.List, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Create, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Get, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/batch/v2alpha1/watch/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs\")]\n    [KubeApi(KubeAction.Get, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/batch/v2alpha1/watch/namespaces/{namespace}/cronjobs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status\")]\n    public partial class CronJobV2Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of a cron job, including the schedule. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public CronJobSpecV2Alpha1 Spec { get; set; }\n\n        /// <summary>\n        ///     Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CronJobStatusV2Alpha1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CrossVersionObjectReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CrossVersionObjectReference contains enough information to let you identify the referred resource.\n    /// </summary>\n    public partial class CrossVersionObjectReferenceV1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CrossVersionObjectReferenceV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CrossVersionObjectReference contains enough information to let you identify the referred resource.\n    /// </summary>\n    public partial class CrossVersionObjectReferenceV2 : KubeObjectV1\n    {\n        /// <summary>\n        ///     name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CrossVersionObjectReferenceV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CrossVersionObjectReference contains enough information to let you identify the referred resource.\n    /// </summary>\n    public partial class CrossVersionObjectReferenceV2Beta1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceColumnDefinitionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceColumnDefinition specifies a column for server side printing.\n    /// </summary>\n    public partial class CustomResourceColumnDefinitionV1\n    {\n        /// <summary>\n        ///     name is a human readable name for the column.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column.\n        /// </summary>\n        [YamlMember(Alias = \"jsonPath\")]\n        [JsonProperty(\"jsonPath\", NullValueHandling = NullValueHandling.Include)]\n        public string JsonPath { get; set; }\n\n        /// <summary>\n        ///     description is a human readable description of this column.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n\n        /// <summary>\n        ///     format is an optional OpenAPI type definition for this column. The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.\n        /// </summary>\n        [YamlMember(Alias = \"format\")]\n        [JsonProperty(\"format\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Format { get; set; }\n\n        /// <summary>\n        ///     priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0.\n        /// </summary>\n        [YamlMember(Alias = \"priority\")]\n        [JsonProperty(\"priority\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Priority { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceColumnDefinitionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceColumnDefinition specifies a column for server side printing.\n    /// </summary>\n    public partial class CustomResourceColumnDefinitionV1Beta1\n    {\n        /// <summary>\n        ///     name is a human readable name for the column.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     JSONPath is a simple JSON path, i.e. with array notation.\n        /// </summary>\n        [YamlMember(Alias = \"JSONPath\")]\n        [JsonProperty(\"JSONPath\", NullValueHandling = NullValueHandling.Include)]\n        public string JSONPath { get; set; }\n\n        /// <summary>\n        ///     description is a human readable description of this column.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n\n        /// <summary>\n        ///     format is an optional OpenAPI type definition for this column. The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more.\n        /// </summary>\n        [YamlMember(Alias = \"format\")]\n        [JsonProperty(\"format\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Format { get; set; }\n\n        /// <summary>\n        ///     priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a higher priority.\n        /// </summary>\n        [YamlMember(Alias = \"priority\")]\n        [JsonProperty(\"priority\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Priority { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceConversionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceConversion describes how to convert different versions of a CR.\n    /// </summary>\n    public partial class CustomResourceConversionV1\n    {\n        /// <summary>\n        ///     webhook describes how to call the conversion webhook. Required when `strategy` is set to `\"Webhook\"`.\n        /// </summary>\n        [YamlMember(Alias = \"webhook\")]\n        [JsonProperty(\"webhook\", NullValueHandling = NullValueHandling.Ignore)]\n        public WebhookConversionV1 Webhook { get; set; }\n\n        /// <summary>\n        ///     strategy specifies how custom resources are converted between versions. Allowed values are: - `\"None\"`: The converter only change the apiVersion and would not touch any other field in the custom resource. - `\"Webhook\"`: API Server will call to an external webhook to do the conversion. Additional information\n        ///       is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set.\n        /// </summary>\n        [YamlMember(Alias = \"strategy\")]\n        [JsonProperty(\"strategy\", NullValueHandling = NullValueHandling.Include)]\n        public string Strategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionCondition contains details for the current condition of this pod.\n    /// </summary>\n    public partial class CustomResourceDefinitionConditionV1\n    {\n        /// <summary>\n        ///     lastTransitionTime last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     message is a human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     type is the type of the condition. Types include Established, NamesAccepted and Terminating.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     reason is a unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     status is the status of the condition. Can be True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionConditionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionCondition contains details for the current condition of this pod.\n    /// </summary>\n    public partial class CustomResourceDefinitionConditionV1Beta1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     Human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type is the type of the condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status is the status of the condition. Can be True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionList is a list of CustomResourceDefinition objects.\n    /// </summary>\n    [KubeListItem(\"CustomResourceDefinition\", \"apiextensions.k8s.io/v1\")]\n    [KubeObject(\"CustomResourceDefinitionList\", \"apiextensions.k8s.io/v1\")]\n    public partial class CustomResourceDefinitionListV1 : KubeResourceListV1<CustomResourceDefinitionV1>\n    {\n        /// <summary>\n        ///     items list individual CustomResourceDefinition objects\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CustomResourceDefinitionV1> Items { get; } = new List<CustomResourceDefinitionV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionList is a list of CustomResourceDefinition objects.\n    /// </summary>\n    [KubeListItem(\"CustomResourceDefinition\", \"apiextensions.k8s.io/v1beta1\")]\n    [KubeObject(\"CustomResourceDefinitionList\", \"apiextensions.k8s.io/v1beta1\")]\n    public partial class CustomResourceDefinitionListV1Beta1 : KubeResourceListV1<CustomResourceDefinitionV1Beta1>\n    {\n        /// <summary>\n        ///     Items individual CustomResourceDefinitions\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<CustomResourceDefinitionV1Beta1> Items { get; } = new List<CustomResourceDefinitionV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionNamesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition\n    /// </summary>\n    public partial class CustomResourceDefinitionNamesV1\n    {\n        /// <summary>\n        ///     kind is the serialized kind of the resource. It is normally CamelCase and singular. Custom resource instances will use this value as the `kind` attribute in API calls.\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".\n        /// </summary>\n        [YamlMember(Alias = \"listKind\")]\n        [JsonProperty(\"listKind\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ListKind { get; set; }\n\n        /// <summary>\n        ///     plural is the plural name of the resource to serve. The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`. Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`). Must be all lowercase.\n        /// </summary>\n        [YamlMember(Alias = \"plural\")]\n        [JsonProperty(\"plural\", NullValueHandling = NullValueHandling.Include)]\n        public string Plural { get; set; }\n\n        /// <summary>\n        ///     singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.\n        /// </summary>\n        [YamlMember(Alias = \"singular\")]\n        [JsonProperty(\"singular\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Singular { get; set; }\n\n        /// <summary>\n        ///     categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). This is published in API discovery documents, and used by clients to support invocations like `kubectl get all`.\n        /// </summary>\n        [YamlMember(Alias = \"categories\")]\n        [JsonProperty(\"categories\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Categories { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Categories\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCategories() => Categories.Count > 0;\n\n        /// <summary>\n        ///     shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get &lt;shortname&gt;`. It must be all lowercase.\n        /// </summary>\n        [YamlMember(Alias = \"shortNames\")]\n        [JsonProperty(\"shortNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ShortNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ShortNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeShortNames() => ShortNames.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionNamesV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition\n    /// </summary>\n    public partial class CustomResourceDefinitionNamesV1Beta1\n    {\n        /// <summary>\n        ///     Kind is the serialized kind of the resource.  It is normally CamelCase and singular.\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     ListKind is the serialized kind of the list for this resource.  Defaults to &lt;kind&gt;List.\n        /// </summary>\n        [YamlMember(Alias = \"listKind\")]\n        [JsonProperty(\"listKind\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ListKind { get; set; }\n\n        /// <summary>\n        ///     Plural is the plural name of the resource to serve.  It must match the name of the CustomResourceDefinition-registration too: plural.group and it must be all lowercase.\n        /// </summary>\n        [YamlMember(Alias = \"plural\")]\n        [JsonProperty(\"plural\", NullValueHandling = NullValueHandling.Include)]\n        public string Plural { get; set; }\n\n        /// <summary>\n        ///     Singular is the singular name of the resource.  It must be all lowercase  Defaults to lowercased &lt;kind&gt;\n        /// </summary>\n        [YamlMember(Alias = \"singular\")]\n        [JsonProperty(\"singular\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Singular { get; set; }\n\n        /// <summary>\n        ///     Categories is a list of grouped resources custom resources belong to (e.g. 'all')\n        /// </summary>\n        [YamlMember(Alias = \"categories\")]\n        [JsonProperty(\"categories\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Categories { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Categories\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCategories() => Categories.Count > 0;\n\n        /// <summary>\n        ///     ShortNames are short names for the resource.  It must be all lowercase.\n        /// </summary>\n        [YamlMember(Alias = \"shortNames\")]\n        [JsonProperty(\"shortNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ShortNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ShortNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeShortNames() => ShortNames.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionSpec describes how a user wants their resource to appear\n    /// </summary>\n    public partial class CustomResourceDefinitionSpecV1\n    {\n        /// <summary>\n        ///     scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.\n        /// </summary>\n        [YamlMember(Alias = \"scope\")]\n        [JsonProperty(\"scope\", NullValueHandling = NullValueHandling.Include)]\n        public string Scope { get; set; }\n\n        /// <summary>\n        ///     conversion defines conversion settings for the CRD.\n        /// </summary>\n        [YamlMember(Alias = \"conversion\")]\n        [JsonProperty(\"conversion\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceConversionV1 Conversion { get; set; }\n\n        /// <summary>\n        ///     group is the API group of the defined custom resource. The custom resources are served under `/apis/&lt;group&gt;/...`. Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Include)]\n        public string Group { get; set; }\n\n        /// <summary>\n        ///     names specify the resource and kind names for the custom resource.\n        /// </summary>\n        [YamlMember(Alias = \"names\")]\n        [JsonProperty(\"names\", NullValueHandling = NullValueHandling.Include)]\n        public CustomResourceDefinitionNamesV1 Names { get; set; }\n\n        /// <summary>\n        ///     preserveUnknownFields indicates that object fields which are not specified in the OpenAPI schema should be preserved when persisting to storage. apiVersion, kind, metadata and known fields inside metadata are always preserved. This field is deprecated in favor of setting `x-preserve-unknown-fields` to true in `spec.versions[*].schema.openAPIV3Schema`. See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.\n        /// </summary>\n        [YamlMember(Alias = \"preserveUnknownFields\")]\n        [JsonProperty(\"preserveUnknownFields\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? PreserveUnknownFields { get; set; }\n\n        /// <summary>\n        ///     versions is the list of all API versions of the defined custom resource. Version names are used to compute the order in which served versions are listed in API discovery. If the version string is \"kube-like\", it will sort above non \"kube-like\" version strings, which are ordered lexicographically. \"Kube-like\" versions start with a \"v\", then are followed by a number (the major version), then optionally the string \"alpha\" or \"beta\" and another number (the minor version). These are sorted first by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.\n        /// </summary>\n        [YamlMember(Alias = \"versions\")]\n        [JsonProperty(\"versions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CustomResourceDefinitionVersionV1> Versions { get; } = new List<CustomResourceDefinitionVersionV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionSpec describes how a user wants their resource to appear\n    /// </summary>\n    public partial class CustomResourceDefinitionSpecV1Beta1\n    {\n        /// <summary>\n        ///     Scope indicates whether this resource is cluster or namespace scoped.  Default is namespaced\n        /// </summary>\n        [YamlMember(Alias = \"scope\")]\n        [JsonProperty(\"scope\", NullValueHandling = NullValueHandling.Include)]\n        public string Scope { get; set; }\n\n        /// <summary>\n        ///     Validation describes the validation methods for CustomResources\n        /// </summary>\n        [YamlMember(Alias = \"validation\")]\n        [JsonProperty(\"validation\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceValidationV1Beta1 Validation { get; set; }\n\n        /// <summary>\n        ///     Version is the version this resource belongs in Should be always first item in Versions field if provided. Optional, but at least one of Version or Versions must be set. Deprecated: Please use `Versions`.\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Version { get; set; }\n\n        /// <summary>\n        ///     Group is the group this resource belongs in\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Include)]\n        public string Group { get; set; }\n\n        /// <summary>\n        ///     AdditionalPrinterColumns are additional columns shown e.g. in kubectl next to the name. Defaults to a created-at column.\n        /// </summary>\n        [YamlMember(Alias = \"additionalPrinterColumns\")]\n        [JsonProperty(\"additionalPrinterColumns\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CustomResourceColumnDefinitionV1Beta1> AdditionalPrinterColumns { get; } = new List<CustomResourceColumnDefinitionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AdditionalPrinterColumns\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAdditionalPrinterColumns() => AdditionalPrinterColumns.Count > 0;\n\n        /// <summary>\n        ///     Names are the names used to describe this custom resource\n        /// </summary>\n        [YamlMember(Alias = \"names\")]\n        [JsonProperty(\"names\", NullValueHandling = NullValueHandling.Include)]\n        public CustomResourceDefinitionNamesV1Beta1 Names { get; set; }\n\n        /// <summary>\n        ///     Subresources describes the subresources for CustomResources\n        /// </summary>\n        [YamlMember(Alias = \"subresources\")]\n        [JsonProperty(\"subresources\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceSubresourcesV1Beta1 Subresources { get; set; }\n\n        /// <summary>\n        ///     Versions is the list of all supported versions for this resource. If Version field is provided, this field is optional. Validation: All versions must use the same validation schema for now. i.e., top level Validation field is applied to all of these versions. Order: The version name will be used to compute the order. If the version string is \"kube-like\", it will sort above non \"kube-like\" version strings, which are ordered lexicographically. \"Kube-like\" versions start with a \"v\", then are followed by a number (the major version), then optionally the string \"alpha\" or \"beta\" and another number (the minor version). These are sorted first by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.\n        /// </summary>\n        [YamlMember(Alias = \"versions\")]\n        [JsonProperty(\"versions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CustomResourceDefinitionVersionV1Beta1> Versions { get; } = new List<CustomResourceDefinitionVersionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Versions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVersions() => Versions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition\n    /// </summary>\n    public partial class CustomResourceDefinitionStatusV1\n    {\n        /// <summary>\n        ///     acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.\n        /// </summary>\n        [YamlMember(Alias = \"acceptedNames\")]\n        [JsonProperty(\"acceptedNames\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceDefinitionNamesV1 AcceptedNames { get; set; }\n\n        /// <summary>\n        ///     conditions indicate state for particular aspects of a CustomResourceDefinition\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CustomResourceDefinitionConditionV1> Conditions { get; } = new List<CustomResourceDefinitionConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     storedVersions lists all versions of CustomResources that were ever persisted. Tracking these versions allows a migration path for stored versions in etcd. The field is mutable so a migration controller can finish a migration to another version (ensuring no old objects are left in storage), and then remove the rest of the versions from this list. Versions may not be removed from `spec.versions` while they exist in this list.\n        /// </summary>\n        [YamlMember(Alias = \"storedVersions\")]\n        [JsonProperty(\"storedVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> StoredVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"StoredVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeStoredVersions() => StoredVersions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition\n    /// </summary>\n    public partial class CustomResourceDefinitionStatusV1Beta1\n    {\n        /// <summary>\n        ///     AcceptedNames are the names that are actually being used to serve discovery They may be different than the names in spec.\n        /// </summary>\n        [YamlMember(Alias = \"acceptedNames\")]\n        [JsonProperty(\"acceptedNames\", NullValueHandling = NullValueHandling.Include)]\n        public CustomResourceDefinitionNamesV1Beta1 AcceptedNames { get; set; }\n\n        /// <summary>\n        ///     Conditions indicate state for particular aspects of a CustomResourceDefinition\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CustomResourceDefinitionConditionV1Beta1> Conditions { get; } = new List<CustomResourceDefinitionConditionV1Beta1>();\n\n        /// <summary>\n        ///     StoredVersions are all versions of CustomResources that were ever persisted. Tracking these versions allows a migration path for stored versions in etcd. The field is mutable so the migration controller can first finish a migration to another version (i.e. that no old objects are left in the storage), and then remove the rest of the versions from this list. None of the versions in this list can be removed from the spec.Versions field.\n        /// </summary>\n        [YamlMember(Alias = \"storedVersions\")]\n        [JsonProperty(\"storedVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> StoredVersions { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinition represents a resource that should be exposed on the API server.  Its name MUST be in the format &lt;.spec.name&gt;.&lt;.spec.group&gt;.\n    /// </summary>\n    [KubeObject(\"CustomResourceDefinition\", \"apiextensions.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions\")]\n    [KubeApi(KubeAction.Create, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions\")]\n    [KubeApi(KubeAction.Get, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions\")]\n    [KubeApi(KubeAction.Get, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status\")]\n    public partial class CustomResourceDefinitionV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec describes how the user wants the resources to appear\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public CustomResourceDefinitionSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     status indicates the actual state of the CustomResourceDefinition\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceDefinitionStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinition represents a resource that should be exposed on the API server.  Its name MUST be in the format &lt;.spec.name&gt;.&lt;.spec.group&gt;.\n    /// </summary>\n    [KubeObject(\"CustomResourceDefinition\", \"apiextensions.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions\")]\n    [KubeApi(KubeAction.Create, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions\")]\n    [KubeApi(KubeAction.Get, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apiextensions.k8s.io/v1beta1/watch/customresourcedefinitions\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions\")]\n    [KubeApi(KubeAction.Get, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apiextensions.k8s.io/v1beta1/watch/customresourcedefinitions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}/status\")]\n    public partial class CustomResourceDefinitionV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec describes how the user wants the resources to appear\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceDefinitionSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status indicates the actual state of the CustomResourceDefinition\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceDefinitionStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionVersionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceDefinitionVersion describes a version for CRD.\n    /// </summary>\n    public partial class CustomResourceDefinitionVersionV1\n    {\n        /// <summary>\n        ///     schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.\n        /// </summary>\n        [YamlMember(Alias = \"schema\")]\n        [JsonProperty(\"schema\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceValidationV1 Schema { get; set; }\n\n        /// <summary>\n        ///     deprecated indicates this version of the custom resource API is deprecated. When set to true, API requests to this version receive a warning header in the server response. Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"deprecated\")]\n        [JsonProperty(\"deprecated\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Deprecated { get; set; }\n\n        /// <summary>\n        ///     served is a flag enabling/disabling this version from being served via REST APIs\n        /// </summary>\n        [YamlMember(Alias = \"served\")]\n        [JsonProperty(\"served\", NullValueHandling = NullValueHandling.Include)]\n        public bool Served { get; set; }\n\n        /// <summary>\n        ///     name is the version name, e.g. “v1”, “v2beta1”, etc. The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.\n        /// </summary>\n        [YamlMember(Alias = \"storage\")]\n        [JsonProperty(\"storage\", NullValueHandling = NullValueHandling.Include)]\n        public bool Storage { get; set; }\n\n        /// <summary>\n        ///     deprecationWarning overrides the default warning returned to API clients. May only be set when `deprecated` is true. The default warning indicates this version is deprecated and recommends use of the newest served version of equal or greater stability, if one exists.\n        /// </summary>\n        [YamlMember(Alias = \"deprecationWarning\")]\n        [JsonProperty(\"deprecationWarning\", NullValueHandling = NullValueHandling.Ignore)]\n        public string DeprecationWarning { get; set; }\n\n        /// <summary>\n        ///     additionalPrinterColumns specifies additional columns returned in Table output. See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details. If no columns are specified, a single column displaying the age of the custom resource is used.\n        /// </summary>\n        [YamlMember(Alias = \"additionalPrinterColumns\")]\n        [JsonProperty(\"additionalPrinterColumns\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<CustomResourceColumnDefinitionV1> AdditionalPrinterColumns { get; } = new List<CustomResourceColumnDefinitionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AdditionalPrinterColumns\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAdditionalPrinterColumns() => AdditionalPrinterColumns.Count > 0;\n\n        /// <summary>\n        ///     selectableFields specifies paths to fields that may be used as field selectors. A maximum of 8 selectable fields are allowed. See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selectableFields\")]\n        [JsonProperty(\"selectableFields\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SelectableFieldV1> SelectableFields { get; } = new List<SelectableFieldV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"SelectableFields\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSelectableFields() => SelectableFields.Count > 0;\n\n        /// <summary>\n        ///     subresources specify what subresources this version of the defined custom resource have.\n        /// </summary>\n        [YamlMember(Alias = \"subresources\")]\n        [JsonProperty(\"subresources\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceSubresourcesV1 Subresources { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceDefinitionVersionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class CustomResourceDefinitionVersionV1Beta1\n    {\n        /// <summary>\n        ///     Served is a flag enabling/disabling this version from being served via REST APIs\n        /// </summary>\n        [YamlMember(Alias = \"served\")]\n        [JsonProperty(\"served\", NullValueHandling = NullValueHandling.Include)]\n        public bool Served { get; set; }\n\n        /// <summary>\n        ///     Name is the version name, e.g. v1, v2beta1, etc.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Storage flags the version as storage version. There must be exactly one flagged as storage version.\n        /// </summary>\n        [YamlMember(Alias = \"storage\")]\n        [JsonProperty(\"storage\", NullValueHandling = NullValueHandling.Include)]\n        public bool Storage { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceSubresourceScaleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.\n    /// </summary>\n    public partial class CustomResourceSubresourceScaleV1\n    {\n        /// <summary>\n        ///     labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status` or `.spec`. Must be set to work with HorizontalPodAutoscaler. The field pointed by this JSON path must be a string field (not a complex selector struct) which contains a serialized label selector in string form. More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale` subresource will default to the empty string.\n        /// </summary>\n        [YamlMember(Alias = \"labelSelectorPath\")]\n        [JsonProperty(\"labelSelectorPath\", NullValueHandling = NullValueHandling.Ignore)]\n        public string LabelSelectorPath { get; set; }\n\n        /// <summary>\n        ///     specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.spec`. If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.\n        /// </summary>\n        [YamlMember(Alias = \"specReplicasPath\")]\n        [JsonProperty(\"specReplicasPath\", NullValueHandling = NullValueHandling.Include)]\n        public string SpecReplicasPath { get; set; }\n\n        /// <summary>\n        ///     statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status`. If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource will default to 0.\n        /// </summary>\n        [YamlMember(Alias = \"statusReplicasPath\")]\n        [JsonProperty(\"statusReplicasPath\", NullValueHandling = NullValueHandling.Include)]\n        public string StatusReplicasPath { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceSubresourceScaleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.\n    /// </summary>\n    public partial class CustomResourceSubresourceScaleV1Beta1\n    {\n        /// <summary>\n        ///     LabelSelectorPath defines the JSON path inside of a CustomResource that corresponds to Scale.Status.Selector. Only JSON paths without the array notation are allowed. Must be a JSON Path under .status. Must be set to work with HPA. If there is no value under the given path in the CustomResource, the status label selector value in the /scale subresource will default to the empty string.\n        /// </summary>\n        [YamlMember(Alias = \"labelSelectorPath\")]\n        [JsonProperty(\"labelSelectorPath\", NullValueHandling = NullValueHandling.Ignore)]\n        public string LabelSelectorPath { get; set; }\n\n        /// <summary>\n        ///     SpecReplicasPath defines the JSON path inside of a CustomResource that corresponds to Scale.Spec.Replicas. Only JSON paths without the array notation are allowed. Must be a JSON Path under .spec. If there is no value under the given path in the CustomResource, the /scale subresource will return an error on GET.\n        /// </summary>\n        [YamlMember(Alias = \"specReplicasPath\")]\n        [JsonProperty(\"specReplicasPath\", NullValueHandling = NullValueHandling.Include)]\n        public string SpecReplicasPath { get; set; }\n\n        /// <summary>\n        ///     StatusReplicasPath defines the JSON path inside of a CustomResource that corresponds to Scale.Status.Replicas. Only JSON paths without the array notation are allowed. Must be a JSON Path under .status. If there is no value under the given path in the CustomResource, the status replica value in the /scale subresource will default to 0.\n        /// </summary>\n        [YamlMember(Alias = \"statusReplicasPath\")]\n        [JsonProperty(\"statusReplicasPath\", NullValueHandling = NullValueHandling.Include)]\n        public string StatusReplicasPath { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceSubresourceStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceSubresourceStatus defines how to serve the status subresource for CustomResources. Status is represented by the `.status` JSON path inside of a CustomResource. When set, * exposes a /status subresource for the custom resource * PUT requests to the /status subresource take a custom resource object, and ignore changes to anything except the status stanza * PUT/POST/PATCH requests to the custom resource ignore changes to the status stanza\n    /// </summary>\n    public partial class CustomResourceSubresourceStatusV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceSubresourceStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceSubresourceStatus defines how to serve the status subresource for CustomResources. Status is represented by the `.status` JSON path inside of a CustomResource. When set, * exposes a /status subresource for the custom resource * PUT requests to the /status subresource take a custom resource object, and ignore changes to anything except the status stanza * PUT/POST/PATCH requests to the custom resource ignore changes to the status stanza\n    /// </summary>\n    public partial class CustomResourceSubresourceStatusV1Beta1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceSubresourcesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceSubresources defines the status and scale subresources for CustomResources.\n    /// </summary>\n    public partial class CustomResourceSubresourcesV1\n    {\n        /// <summary>\n        ///     scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.\n        /// </summary>\n        [YamlMember(Alias = \"scale\")]\n        [JsonProperty(\"scale\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceSubresourceScaleV1 Scale { get; set; }\n\n        /// <summary>\n        ///     status indicates the custom resource should serve a `/status` subresource. When enabled: 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object. 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceSubresourceStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceSubresourcesV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceSubresources defines the status and scale subresources for CustomResources.\n    /// </summary>\n    public partial class CustomResourceSubresourcesV1Beta1\n    {\n        /// <summary>\n        ///     Scale denotes the scale subresource for CustomResources\n        /// </summary>\n        [YamlMember(Alias = \"scale\")]\n        [JsonProperty(\"scale\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceSubresourceScaleV1Beta1 Scale { get; set; }\n\n        /// <summary>\n        ///     Status denotes the status subresource for CustomResources\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public CustomResourceSubresourceStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceValidationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceValidation is a list of validation methods for CustomResources.\n    /// </summary>\n    public partial class CustomResourceValidationV1\n    {\n        /// <summary>\n        ///     openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.\n        /// </summary>\n        [YamlMember(Alias = \"openAPIV3Schema\")]\n        [JsonProperty(\"openAPIV3Schema\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsV1 OpenAPIV3Schema { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/CustomResourceValidationV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     CustomResourceValidation is a list of validation methods for CustomResources.\n    /// </summary>\n    public partial class CustomResourceValidationV1Beta1\n    {\n        /// <summary>\n        ///     OpenAPIV3Schema is the OpenAPI v3 schema to be validated against.\n        /// </summary>\n        [YamlMember(Alias = \"openAPIV3Schema\")]\n        [JsonProperty(\"openAPIV3Schema\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsV1Beta1 OpenAPIV3Schema { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonEndpointV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonEndpoint contains information about a single Daemon endpoint.\n    /// </summary>\n    public partial class DaemonEndpointV1\n    {\n        /// <summary>\n        ///     Port number of the given endpoint.\n        /// </summary>\n        [YamlMember(Alias = \"Port\")]\n        [JsonProperty(\"Port\", NullValueHandling = NullValueHandling.Include)]\n        public int Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetCondition describes the state of a DaemonSet at a certain point.\n    /// </summary>\n    public partial class DaemonSetConditionV1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of DaemonSet condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetConditionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetCondition describes the state of a DaemonSet at a certain point.\n    /// </summary>\n    public partial class DaemonSetConditionV1Beta1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of DaemonSet condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetConditionV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetCondition describes the state of a DaemonSet at a certain point.\n    /// </summary>\n    public partial class DaemonSetConditionV1Beta2\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of DaemonSet condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetList is a collection of daemon sets.\n    /// </summary>\n    [KubeListItem(\"DaemonSet\", \"apps/v1\")]\n    [KubeObject(\"DaemonSetList\", \"apps/v1\")]\n    public partial class DaemonSetListV1 : KubeResourceListV1<DaemonSetV1>\n    {\n        /// <summary>\n        ///     A list of daemon sets.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<DaemonSetV1> Items { get; } = new List<DaemonSetV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetList is a collection of daemon sets.\n    /// </summary>\n    [KubeListItem(\"DaemonSet\", \"extensions/v1beta1\")]\n    [KubeObject(\"DaemonSetList\", \"extensions/v1beta1\")]\n    public partial class DaemonSetListV1Beta1 : KubeResourceListV1<DaemonSetV1Beta1>\n    {\n        /// <summary>\n        ///     A list of daemon sets.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<DaemonSetV1Beta1> Items { get; } = new List<DaemonSetV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetListV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetList is a collection of daemon sets.\n    /// </summary>\n    [KubeListItem(\"DaemonSet\", \"apps/v1beta2\")]\n    [KubeObject(\"DaemonSetList\", \"apps/v1beta2\")]\n    public partial class DaemonSetListV1Beta2 : KubeResourceListV1<DaemonSetV1Beta2>\n    {\n        /// <summary>\n        ///     A list of daemon sets.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<DaemonSetV1Beta2> Items { get; } = new List<DaemonSetV1Beta2>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetSpec is the specification of a daemon set.\n    /// </summary>\n    public partial class DaemonSetSpecV1\n    {\n        /// <summary>\n        ///     An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). The only allowed template.spec.restartPolicy value is \"Always\". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     A label query over pods that are managed by the daemon set. Must match in order to be controlled. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     An update strategy to replace existing DaemonSet pods with new pods.\n        /// </summary>\n        [YamlMember(Alias = \"updateStrategy\")]\n        [JsonProperty(\"updateStrategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetUpdateStrategyV1 UpdateStrategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetSpec is the specification of a daemon set.\n    /// </summary>\n    public partial class DaemonSetSpecV1Beta1\n    {\n        /// <summary>\n        ///     An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     DEPRECATED. A sequence number representing a specific generation of the template. Populated by the system. It can be set only during the creation.\n        /// </summary>\n        [YamlMember(Alias = \"templateGeneration\")]\n        [JsonProperty(\"templateGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? TemplateGeneration { get; set; }\n\n        /// <summary>\n        ///     A label query over pods that are managed by the daemon set. Must match in order to be controlled. If empty, defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     An update strategy to replace existing DaemonSet pods with new pods.\n        /// </summary>\n        [YamlMember(Alias = \"updateStrategy\")]\n        [JsonProperty(\"updateStrategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetUpdateStrategyV1Beta1 UpdateStrategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetSpecV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetSpec is the specification of a daemon set.\n    /// </summary>\n    public partial class DaemonSetSpecV1Beta2\n    {\n        /// <summary>\n        ///     An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     A label query over pods that are managed by the daemon set. Must match in order to be controlled. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     An update strategy to replace existing DaemonSet pods with new pods.\n        /// </summary>\n        [YamlMember(Alias = \"updateStrategy\")]\n        [JsonProperty(\"updateStrategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetUpdateStrategyV1Beta2 UpdateStrategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetStatus represents the current status of a daemon set.\n    /// </summary>\n    public partial class DaemonSetStatusV1\n    {\n        /// <summary>\n        ///     The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"currentNumberScheduled\")]\n        [JsonProperty(\"currentNumberScheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int CurrentNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"desiredNumberScheduled\")]\n        [JsonProperty(\"desiredNumberScheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int DesiredNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"numberMisscheduled\")]\n        [JsonProperty(\"numberMisscheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int NumberMisscheduled { get; set; }\n\n        /// <summary>\n        ///     The total number of nodes that are running updated daemon pod\n        /// </summary>\n        [YamlMember(Alias = \"updatedNumberScheduled\")]\n        [JsonProperty(\"updatedNumberScheduled\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        /// </summary>\n        [YamlMember(Alias = \"numberAvailable\")]\n        [JsonProperty(\"numberAvailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NumberAvailable { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        /// </summary>\n        [YamlMember(Alias = \"numberUnavailable\")]\n        [JsonProperty(\"numberUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NumberUnavailable { get; set; }\n\n        /// <summary>\n        ///     The most recent generation observed by the daemon set controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a DaemonSet's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DaemonSetConditionV1> Conditions { get; } = new List<DaemonSetConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n\n        /// <summary>\n        ///     numberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running with a Ready Condition.\n        /// </summary>\n        [YamlMember(Alias = \"numberReady\")]\n        [JsonProperty(\"numberReady\", NullValueHandling = NullValueHandling.Include)]\n        public int NumberReady { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetStatus represents the current status of a daemon set.\n    /// </summary>\n    public partial class DaemonSetStatusV1Beta1\n    {\n        /// <summary>\n        ///     The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"currentNumberScheduled\")]\n        [JsonProperty(\"currentNumberScheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int CurrentNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"desiredNumberScheduled\")]\n        [JsonProperty(\"desiredNumberScheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int DesiredNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"numberMisscheduled\")]\n        [JsonProperty(\"numberMisscheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int NumberMisscheduled { get; set; }\n\n        /// <summary>\n        ///     The total number of nodes that are running updated daemon pod\n        /// </summary>\n        [YamlMember(Alias = \"updatedNumberScheduled\")]\n        [JsonProperty(\"updatedNumberScheduled\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        /// </summary>\n        [YamlMember(Alias = \"numberAvailable\")]\n        [JsonProperty(\"numberAvailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NumberAvailable { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        /// </summary>\n        [YamlMember(Alias = \"numberUnavailable\")]\n        [JsonProperty(\"numberUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NumberUnavailable { get; set; }\n\n        /// <summary>\n        ///     The most recent generation observed by the daemon set controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a DaemonSet's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DaemonSetConditionV1Beta1> Conditions { get; } = new List<DaemonSetConditionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.\n        /// </summary>\n        [YamlMember(Alias = \"numberReady\")]\n        [JsonProperty(\"numberReady\", NullValueHandling = NullValueHandling.Include)]\n        public int NumberReady { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetStatusV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetStatus represents the current status of a daemon set.\n    /// </summary>\n    public partial class DaemonSetStatusV1Beta2\n    {\n        /// <summary>\n        ///     The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"currentNumberScheduled\")]\n        [JsonProperty(\"currentNumberScheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int CurrentNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"desiredNumberScheduled\")]\n        [JsonProperty(\"desiredNumberScheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int DesiredNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\n        /// </summary>\n        [YamlMember(Alias = \"numberMisscheduled\")]\n        [JsonProperty(\"numberMisscheduled\", NullValueHandling = NullValueHandling.Include)]\n        public int NumberMisscheduled { get; set; }\n\n        /// <summary>\n        ///     The total number of nodes that are running updated daemon pod\n        /// </summary>\n        [YamlMember(Alias = \"updatedNumberScheduled\")]\n        [JsonProperty(\"updatedNumberScheduled\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedNumberScheduled { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        /// </summary>\n        [YamlMember(Alias = \"numberAvailable\")]\n        [JsonProperty(\"numberAvailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NumberAvailable { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        /// </summary>\n        [YamlMember(Alias = \"numberUnavailable\")]\n        [JsonProperty(\"numberUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NumberUnavailable { get; set; }\n\n        /// <summary>\n        ///     The most recent generation observed by the daemon set controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a DaemonSet's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DaemonSetConditionV1Beta2> Conditions { get; } = new List<DaemonSetConditionV1Beta2>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n\n        /// <summary>\n        ///     The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.\n        /// </summary>\n        [YamlMember(Alias = \"numberReady\")]\n        [JsonProperty(\"numberReady\", NullValueHandling = NullValueHandling.Include)]\n        public int NumberReady { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetUpdateStrategyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.\n    /// </summary>\n    public partial class DaemonSetUpdateStrategyV1\n    {\n        /// <summary>\n        ///     Rolling update config params. Present only if type = \"RollingUpdate\".\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateDaemonSetV1 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetUpdateStrategyV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class DaemonSetUpdateStrategyV1Beta1\n    {\n        /// <summary>\n        ///     Rolling update config params. Present only if type = \"RollingUpdate\".\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateDaemonSetV1Beta1 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is OnDelete.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetUpdateStrategyV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.\n    /// </summary>\n    public partial class DaemonSetUpdateStrategyV1Beta2\n    {\n        /// <summary>\n        ///     Rolling update config params. Present only if type = \"RollingUpdate\".\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateDaemonSetV1Beta2 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DaemonSet represents the configuration of a daemon set.\n    /// </summary>\n    [KubeObject(\"DaemonSet\", \"apps/v1\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/daemonsets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/daemonsets\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1/watch/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status\")]\n    public partial class DaemonSetV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of DaemonSet is deprecated by apps/v1beta2/DaemonSet. See the release notes for more information. DaemonSet represents the configuration of a daemon set.\n    /// </summary>\n    [KubeObject(\"DaemonSet\", \"extensions/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/extensions/v1beta1/daemonsets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/extensions/v1beta1/watch/daemonsets\")]\n    [KubeApi(KubeAction.List, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Create, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Get, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Get, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status\")]\n    public partial class DaemonSetV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DaemonSetV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of DaemonSet is deprecated by apps/v1/DaemonSet. See the release notes for more information. DaemonSet represents the configuration of a daemon set.\n    /// </summary>\n    [KubeObject(\"DaemonSet\", \"apps/v1beta2\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/daemonsets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/daemonsets\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1beta2/watch/namespaces/{namespace}/daemonsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}/status\")]\n    public partial class DaemonSetV1Beta2 : KubeResourceV1\n    {\n        /// <summary>\n        ///     The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetSpecV1Beta2 Spec { get; set; }\n\n        /// <summary>\n        ///     The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonSetStatusV1Beta2 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentCondition describes the state of a deployment at a certain point.\n    /// </summary>\n    public partial class DeploymentConditionV1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     The last time this condition was updated.\n        /// </summary>\n        [YamlMember(Alias = \"lastUpdateTime\")]\n        [JsonProperty(\"lastUpdateTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastUpdateTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of deployment condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentConditionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentCondition describes the state of a deployment at a certain point.\n    /// </summary>\n    public partial class DeploymentConditionV1Beta1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     The last time this condition was updated.\n        /// </summary>\n        [YamlMember(Alias = \"lastUpdateTime\")]\n        [JsonProperty(\"lastUpdateTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastUpdateTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of deployment condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentConditionV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentCondition describes the state of a deployment at a certain point.\n    /// </summary>\n    public partial class DeploymentConditionV1Beta2\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     The last time this condition was updated.\n        /// </summary>\n        [YamlMember(Alias = \"lastUpdateTime\")]\n        [JsonProperty(\"lastUpdateTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastUpdateTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of deployment condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentList is a list of Deployments.\n    /// </summary>\n    [KubeListItem(\"Deployment\", \"apps/v1\")]\n    [KubeObject(\"DeploymentList\", \"apps/v1\")]\n    public partial class DeploymentListV1 : KubeResourceListV1<DeploymentV1>\n    {\n        /// <summary>\n        ///     Items is the list of Deployments.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<DeploymentV1> Items { get; } = new List<DeploymentV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentList is a list of Deployments.\n    /// </summary>\n    [KubeListItem(\"Deployment\", \"apps/v1beta1\")]\n    [KubeObject(\"DeploymentList\", \"apps/v1beta1\")]\n    public partial class DeploymentListV1Beta1 : KubeResourceListV1<DeploymentV1Beta1>\n    {\n        /// <summary>\n        ///     Items is the list of Deployments.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<DeploymentV1Beta1> Items { get; } = new List<DeploymentV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentListV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentList is a list of Deployments.\n    /// </summary>\n    [KubeListItem(\"Deployment\", \"apps/v1beta2\")]\n    [KubeObject(\"DeploymentList\", \"apps/v1beta2\")]\n    public partial class DeploymentListV1Beta2 : KubeResourceListV1<DeploymentV1Beta2>\n    {\n        /// <summary>\n        ///     Items is the list of Deployments.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<DeploymentV1Beta2> Items { get; } = new List<DeploymentV1Beta2>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentRollbackV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED. DeploymentRollback stores the information required to rollback a deployment.\n    /// </summary>\n    public partial class DeploymentRollbackV1Beta1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     Required: This must match the Name of a deployment.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The config of this deployment rollback.\n        /// </summary>\n        [YamlMember(Alias = \"rollbackTo\")]\n        [JsonProperty(\"rollbackTo\", NullValueHandling = NullValueHandling.Include)]\n        public RollbackConfigV1Beta1 RollbackTo { get; set; }\n\n        /// <summary>\n        ///     The annotations to be updated to a deployment\n        /// </summary>\n        [YamlMember(Alias = \"updatedAnnotations\")]\n        [JsonProperty(\"updatedAnnotations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> UpdatedAnnotations { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"UpdatedAnnotations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeUpdatedAnnotations() => UpdatedAnnotations.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentSpec is the specification of the desired behavior of the Deployment.\n    /// </summary>\n    public partial class DeploymentSpecV1\n    {\n        /// <summary>\n        ///     Indicates that the deployment is paused.\n        /// </summary>\n        [YamlMember(Alias = \"paused\")]\n        [JsonProperty(\"paused\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Paused { get; set; }\n\n        /// <summary>\n        ///     Template describes the pods that will be created. The only allowed template.spec.restartPolicy value is \"Always\".\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.\n        /// </summary>\n        [YamlMember(Alias = \"progressDeadlineSeconds\")]\n        [JsonProperty(\"progressDeadlineSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ProgressDeadlineSeconds { get; set; }\n\n        /// <summary>\n        ///     Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     The deployment strategy to use to replace existing pods with new ones.\n        /// </summary>\n        [RetainKeysStrategy]\n        [YamlMember(Alias = \"strategy\")]\n        [JsonProperty(\"strategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentStrategyV1 Strategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentSpec is the specification of the desired behavior of the Deployment.\n    /// </summary>\n    public partial class DeploymentSpecV1Beta1\n    {\n        /// <summary>\n        ///     Indicates that the deployment is paused and will not be processed by the deployment controller.\n        /// </summary>\n        [YamlMember(Alias = \"paused\")]\n        [JsonProperty(\"paused\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Paused { get; set; }\n\n        /// <summary>\n        ///     Template describes the pods that will be created.\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     DEPRECATED. The config this deployment is rolling back to. Will be cleared after rollback is done.\n        /// </summary>\n        [YamlMember(Alias = \"rollbackTo\")]\n        [JsonProperty(\"rollbackTo\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollbackConfigV1Beta1 RollbackTo { get; set; }\n\n        /// <summary>\n        ///     Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. This is not set by default.\n        /// </summary>\n        [YamlMember(Alias = \"progressDeadlineSeconds\")]\n        [JsonProperty(\"progressDeadlineSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ProgressDeadlineSeconds { get; set; }\n\n        /// <summary>\n        ///     Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     The deployment strategy to use to replace existing pods with new ones.\n        /// </summary>\n        [RetainKeysStrategy]\n        [YamlMember(Alias = \"strategy\")]\n        [JsonProperty(\"strategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentStrategyV1Beta1 Strategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentSpecV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentSpec is the specification of the desired behavior of the Deployment.\n    /// </summary>\n    public partial class DeploymentSpecV1Beta2\n    {\n        /// <summary>\n        ///     Indicates that the deployment is paused.\n        /// </summary>\n        [YamlMember(Alias = \"paused\")]\n        [JsonProperty(\"paused\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Paused { get; set; }\n\n        /// <summary>\n        ///     Template describes the pods that will be created.\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.\n        /// </summary>\n        [YamlMember(Alias = \"progressDeadlineSeconds\")]\n        [JsonProperty(\"progressDeadlineSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ProgressDeadlineSeconds { get; set; }\n\n        /// <summary>\n        ///     Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     The deployment strategy to use to replace existing pods with new ones.\n        /// </summary>\n        [YamlMember(Alias = \"strategy\")]\n        [JsonProperty(\"strategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentStrategyV1Beta2 Strategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentStatus is the most recently observed status of the Deployment.\n    /// </summary>\n    public partial class DeploymentStatusV1\n    {\n        /// <summary>\n        ///     The generation observed by the deployment controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.\n        /// </summary>\n        [YamlMember(Alias = \"availableReplicas\")]\n        [JsonProperty(\"availableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AvailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a deployment's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeploymentConditionV1> Conditions { get; } = new List<DeploymentConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     readyReplicas is the number of pods targeted by this Deployment with a Ready Condition.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     Total number of non-terminated pods targeted by this deployment (their labels match the selector).\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.\n        /// </summary>\n        [YamlMember(Alias = \"unavailableReplicas\")]\n        [JsonProperty(\"unavailableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UnavailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Total number of non-terminated pods targeted by this deployment that have the desired template spec.\n        /// </summary>\n        [YamlMember(Alias = \"updatedReplicas\")]\n        [JsonProperty(\"updatedReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedReplicas { get; set; }\n\n        /// <summary>\n        ///     Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentStatus is the most recently observed status of the Deployment.\n    /// </summary>\n    public partial class DeploymentStatusV1Beta1\n    {\n        /// <summary>\n        ///     The generation observed by the deployment controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.\n        /// </summary>\n        [YamlMember(Alias = \"availableReplicas\")]\n        [JsonProperty(\"availableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AvailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a deployment's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeploymentConditionV1Beta1> Conditions { get; } = new List<DeploymentConditionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     Total number of ready pods targeted by this deployment.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     Total number of non-terminated pods targeted by this deployment (their labels match the selector).\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.\n        /// </summary>\n        [YamlMember(Alias = \"unavailableReplicas\")]\n        [JsonProperty(\"unavailableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UnavailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Total number of non-terminated pods targeted by this deployment that have the desired template spec.\n        /// </summary>\n        [YamlMember(Alias = \"updatedReplicas\")]\n        [JsonProperty(\"updatedReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedReplicas { get; set; }\n\n        /// <summary>\n        ///     Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentStatusV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentStatus is the most recently observed status of the Deployment.\n    /// </summary>\n    public partial class DeploymentStatusV1Beta2\n    {\n        /// <summary>\n        ///     The generation observed by the deployment controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.\n        /// </summary>\n        [YamlMember(Alias = \"availableReplicas\")]\n        [JsonProperty(\"availableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AvailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a deployment's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeploymentConditionV1Beta2> Conditions { get; } = new List<DeploymentConditionV1Beta2>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     Total number of ready pods targeted by this deployment.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     Total number of non-terminated pods targeted by this deployment (their labels match the selector).\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.\n        /// </summary>\n        [YamlMember(Alias = \"unavailableReplicas\")]\n        [JsonProperty(\"unavailableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UnavailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Total number of non-terminated pods targeted by this deployment that have the desired template spec.\n        /// </summary>\n        [YamlMember(Alias = \"updatedReplicas\")]\n        [JsonProperty(\"updatedReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedReplicas { get; set; }\n\n        /// <summary>\n        ///     Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentStrategyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentStrategy describes how to replace existing pods with new ones.\n    /// </summary>\n    public partial class DeploymentStrategyV1\n    {\n        /// <summary>\n        ///     Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateDeploymentV1 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentStrategyV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentStrategy describes how to replace existing pods with new ones.\n    /// </summary>\n    public partial class DeploymentStrategyV1Beta1\n    {\n        /// <summary>\n        ///     Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateDeploymentV1Beta1 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentStrategyV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeploymentStrategy describes how to replace existing pods with new ones.\n    /// </summary>\n    public partial class DeploymentStrategyV1Beta2\n    {\n        /// <summary>\n        ///     Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateDeploymentV1Beta2 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Deployment enables declarative updates for Pods and ReplicaSets.\n    /// </summary>\n    [KubeObject(\"Deployment\", \"apps/v1\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/deployments\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/deployments\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1/watch/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}/status\")]\n    public partial class DeploymentV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the Deployment.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Most recently observed status of the Deployment.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment. See the release notes for more information. Deployment enables declarative updates for Pods and ReplicaSets.\n    /// </summary>\n    [KubeObject(\"Deployment\", \"apps/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta1/deployments\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta1/watch/deployments\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta1/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1beta1/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta1/watch/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1beta1/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1beta1/watch/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/status\")]\n    public partial class DeploymentV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the Deployment.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Most recently observed status of the Deployment.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeploymentV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of Deployment is deprecated by apps/v1/Deployment. See the release notes for more information. Deployment enables declarative updates for Pods and ReplicaSets.\n    /// </summary>\n    [KubeObject(\"Deployment\", \"apps/v1beta2\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/deployments\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/deployments\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1beta2/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1beta2/namespaces/{namespace}/deployments\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1beta2/watch/namespaces/{namespace}/deployments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}/status\")]\n    public partial class DeploymentV1Beta2 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the Deployment.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentSpecV1Beta2 Spec { get; set; }\n\n        /// <summary>\n        ///     Most recently observed status of the Deployment.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeploymentStatusV1Beta2 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceAllocationConfigurationV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceAllocationConfiguration gets embedded in an AllocationResult.\n    /// </summary>\n    public partial class DeviceAllocationConfigurationV1Alpha3\n    {\n        /// <summary>\n        ///     Opaque provides driver-specific configuration parameters.\n        /// </summary>\n        [YamlMember(Alias = \"opaque\")]\n        [JsonProperty(\"opaque\", NullValueHandling = NullValueHandling.Ignore)]\n        public OpaqueDeviceConfigurationV1Alpha3 Opaque { get; set; }\n\n        /// <summary>\n        ///     Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.\n        /// </summary>\n        [YamlMember(Alias = \"source\")]\n        [JsonProperty(\"source\", NullValueHandling = NullValueHandling.Include)]\n        public string Source { get; set; }\n\n        /// <summary>\n        ///     Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.\n        /// </summary>\n        [YamlMember(Alias = \"requests\")]\n        [JsonProperty(\"requests\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Requests { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Requests\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequests() => Requests.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceAllocationResultV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceAllocationResult is the result of allocating devices.\n    /// </summary>\n    public partial class DeviceAllocationResultV1Alpha3\n    {\n        /// <summary>\n        ///     This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.\n        ///     \n        ///     This includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.\n        /// </summary>\n        [YamlMember(Alias = \"config\")]\n        [JsonProperty(\"config\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceAllocationConfigurationV1Alpha3> Config { get; } = new List<DeviceAllocationConfigurationV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Config\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConfig() => Config.Count > 0;\n\n        /// <summary>\n        ///     Results lists all allocated devices.\n        /// </summary>\n        [YamlMember(Alias = \"results\")]\n        [JsonProperty(\"results\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceRequestAllocationResultV1Alpha3> Results { get; } = new List<DeviceRequestAllocationResultV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Results\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResults() => Results.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceAttributeV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceAttribute must have exactly one field set.\n    /// </summary>\n    public partial class DeviceAttributeV1Alpha3\n    {\n        /// <summary>\n        ///     StringValue is a string. Must not be longer than 64 characters.\n        /// </summary>\n        [YamlMember(Alias = \"string\")]\n        [JsonProperty(\"string\", NullValueHandling = NullValueHandling.Ignore)]\n        public string String { get; set; }\n\n        /// <summary>\n        ///     BoolValue is a true/false value.\n        /// </summary>\n        [YamlMember(Alias = \"bool\")]\n        [JsonProperty(\"bool\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Bool { get; set; }\n\n        /// <summary>\n        ///     VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters.\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Version { get; set; }\n\n        /// <summary>\n        ///     IntValue is a number.\n        /// </summary>\n        [YamlMember(Alias = \"int\")]\n        [JsonProperty(\"int\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? Int { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceClaimConfigurationV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.\n    /// </summary>\n    public partial class DeviceClaimConfigurationV1Alpha3\n    {\n        /// <summary>\n        ///     Opaque provides driver-specific configuration parameters.\n        /// </summary>\n        [YamlMember(Alias = \"opaque\")]\n        [JsonProperty(\"opaque\", NullValueHandling = NullValueHandling.Ignore)]\n        public OpaqueDeviceConfigurationV1Alpha3 Opaque { get; set; }\n\n        /// <summary>\n        ///     Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.\n        /// </summary>\n        [YamlMember(Alias = \"requests\")]\n        [JsonProperty(\"requests\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Requests { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Requests\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequests() => Requests.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceClaimV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceClaim defines how to request devices with a ResourceClaim.\n    /// </summary>\n    public partial class DeviceClaimV1Alpha3\n    {\n        /// <summary>\n        ///     This field holds configuration for multiple potential drivers which could satisfy requests in this claim. It is ignored while allocating the claim.\n        /// </summary>\n        [YamlMember(Alias = \"config\")]\n        [JsonProperty(\"config\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceClaimConfigurationV1Alpha3> Config { get; } = new List<DeviceClaimConfigurationV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Config\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConfig() => Config.Count > 0;\n\n        /// <summary>\n        ///     These constraints must be satisfied by the set of devices that get allocated for the claim.\n        /// </summary>\n        [YamlMember(Alias = \"constraints\")]\n        [JsonProperty(\"constraints\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceConstraintV1Alpha3> Constraints { get; } = new List<DeviceConstraintV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Constraints\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConstraints() => Constraints.Count > 0;\n\n        /// <summary>\n        ///     Requests represent individual requests for distinct devices which must all be satisfied. If empty, nothing needs to be allocated.\n        /// </summary>\n        [YamlMember(Alias = \"requests\")]\n        [JsonProperty(\"requests\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceRequestV1Alpha3> Requests { get; } = new List<DeviceRequestV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Requests\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequests() => Requests.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceClassConfigurationV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceClassConfiguration is used in DeviceClass.\n    /// </summary>\n    public partial class DeviceClassConfigurationV1Alpha3\n    {\n        /// <summary>\n        ///     Opaque provides driver-specific configuration parameters.\n        /// </summary>\n        [YamlMember(Alias = \"opaque\")]\n        [JsonProperty(\"opaque\", NullValueHandling = NullValueHandling.Ignore)]\n        public OpaqueDeviceConfigurationV1Alpha3 Opaque { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceClassListV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceClassList is a collection of classes.\n    /// </summary>\n    [KubeListItem(\"DeviceClass\", \"resource.k8s.io/v1alpha3\")]\n    [KubeObject(\"DeviceClassList\", \"resource.k8s.io/v1alpha3\")]\n    public partial class DeviceClassListV1Alpha3 : KubeResourceListV1<DeviceClassV1Alpha3>\n    {\n        /// <summary>\n        ///     Items is the list of resource classes.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<DeviceClassV1Alpha3> Items { get; } = new List<DeviceClassV1Alpha3>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceClassSpecV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.\n    /// </summary>\n    public partial class DeviceClassSpecV1Alpha3\n    {\n        /// <summary>\n        ///     Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.\n        ///     \n        ///     They are passed to the driver, but are not considered while allocating the claim.\n        /// </summary>\n        [YamlMember(Alias = \"config\")]\n        [JsonProperty(\"config\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceClassConfigurationV1Alpha3> Config { get; } = new List<DeviceClassConfigurationV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Config\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConfig() => Config.Count > 0;\n\n        /// <summary>\n        ///     Each selector must be satisfied by a device which is claimed via this class.\n        /// </summary>\n        [YamlMember(Alias = \"selectors\")]\n        [JsonProperty(\"selectors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceSelectorV1Alpha3> Selectors { get; } = new List<DeviceSelectorV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Selectors\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSelectors() => Selectors.Count > 0;\n\n        /// <summary>\n        ///     Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a claim that has not been allocated yet *and* that claim gets allocated through a control plane controller. It is ignored when the claim does not use a control plane controller for allocation.\n        ///     \n        ///     Setting this field is optional. If unset, all Nodes are candidates.\n        ///     \n        ///     This is an alpha field and requires enabling the DRAControlPlaneController feature gate.\n        /// </summary>\n        [YamlMember(Alias = \"suitableNodes\")]\n        [JsonProperty(\"suitableNodes\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeSelectorV1 SuitableNodes { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceClassV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. It can be referenced in the device requests of a claim to apply these presets. Cluster scoped.\n    ///     \n    ///     This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.\n    /// </summary>\n    [KubeObject(\"DeviceClass\", \"resource.k8s.io/v1alpha3\")]\n    [KubeApi(KubeAction.List, \"apis/resource.k8s.io/v1alpha3/deviceclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/resource.k8s.io/v1alpha3/deviceclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/resource.k8s.io/v1alpha3/deviceclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/resource.k8s.io/v1alpha3/deviceclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/resource.k8s.io/v1alpha3/deviceclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/resource.k8s.io/v1alpha3/deviceclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/resource.k8s.io/v1alpha3/watch/deviceclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/resource.k8s.io/v1alpha3/deviceclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/resource.k8s.io/v1alpha3/watch/deviceclasses/{name}\")]\n    public partial class DeviceClassV1Alpha3 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines what can be allocated and how to configure it.\n        ///     \n        ///     This is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation.\n        ///     \n        ///     Changing the spec automatically increments the metadata.generation number.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public DeviceClassSpecV1Alpha3 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceConstraintV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceConstraint must have exactly one field set besides Requests.\n    /// </summary>\n    public partial class DeviceConstraintV1Alpha3\n    {\n        /// <summary>\n        ///     MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.\n        ///     \n        ///     For example, if you specified \"dra.example.com/numa\" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.\n        ///     \n        ///     Must include the domain qualifier.\n        /// </summary>\n        [YamlMember(Alias = \"matchAttribute\")]\n        [JsonProperty(\"matchAttribute\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MatchAttribute { get; set; }\n\n        /// <summary>\n        ///     Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.\n        /// </summary>\n        [YamlMember(Alias = \"requests\")]\n        [JsonProperty(\"requests\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Requests { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Requests\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequests() => Requests.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceRequestAllocationResultV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceRequestAllocationResult contains the allocation result for one request.\n    /// </summary>\n    public partial class DeviceRequestAllocationResultV1Alpha3\n    {\n        /// <summary>\n        ///     Device references one device instance via its name in the driver's resource pool. It must be a DNS label.\n        /// </summary>\n        [YamlMember(Alias = \"device\")]\n        [JsonProperty(\"device\", NullValueHandling = NullValueHandling.Include)]\n        public string Device { get; set; }\n\n        /// <summary>\n        ///     This name together with the driver name and the device name field identify which device was allocated (`&lt;driver name&gt;/&lt;pool name&gt;/&lt;device name&gt;`).\n        ///     \n        ///     Must not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.\n        /// </summary>\n        [YamlMember(Alias = \"pool\")]\n        [JsonProperty(\"pool\", NullValueHandling = NullValueHandling.Include)]\n        public string Pool { get; set; }\n\n        /// <summary>\n        ///     Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.\n        ///     \n        ///     Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.\n        /// </summary>\n        [YamlMember(Alias = \"driver\")]\n        [JsonProperty(\"driver\", NullValueHandling = NullValueHandling.Include)]\n        public string Driver { get; set; }\n\n        /// <summary>\n        ///     Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.\n        /// </summary>\n        [YamlMember(Alias = \"request\")]\n        [JsonProperty(\"request\", NullValueHandling = NullValueHandling.Include)]\n        public string Request { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceRequestV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceRequest is a request for devices required for a claim. This is typically a request for a single resource like a device, but can also ask for several identical devices.\n    ///     \n    ///     A DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request.\n    /// </summary>\n    public partial class DeviceRequestV1Alpha3\n    {\n        /// <summary>\n        ///     AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:\n        ///     \n        ///     - ExactCount: This request is for a specific number of devices.\n        ///       This is the default. The exact number is provided in the\n        ///       count field.\n        ///     \n        ///     - All: This request is for all of the matching devices in a pool.\n        ///       Allocation will fail if some devices are already allocated,\n        ///       unless adminAccess is requested.\n        ///     \n        ///     If AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.\n        ///     \n        ///     More modes may get added in the future. Clients must refuse to handle requests with unknown modes.\n        /// </summary>\n        [YamlMember(Alias = \"allocationMode\")]\n        [JsonProperty(\"allocationMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string AllocationMode { get; set; }\n\n        /// <summary>\n        ///     DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.\n        ///     \n        ///     A class is required. Which classes are available depends on the cluster.\n        ///     \n        ///     Administrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference.\n        /// </summary>\n        [YamlMember(Alias = \"deviceClassName\")]\n        [JsonProperty(\"deviceClassName\", NullValueHandling = NullValueHandling.Include)]\n        public string DeviceClassName { get; set; }\n\n        /// <summary>\n        ///     Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.\n        ///     \n        ///     Must be a DNS label.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device.  They ignore all ordinary claims to the device with respect to access modes and any resource allocations.\n        /// </summary>\n        [YamlMember(Alias = \"adminAccess\")]\n        [JsonProperty(\"adminAccess\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AdminAccess { get; set; }\n\n        /// <summary>\n        ///     Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. All selectors must be satisfied for a device to be considered.\n        /// </summary>\n        [YamlMember(Alias = \"selectors\")]\n        [JsonProperty(\"selectors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceSelectorV1Alpha3> Selectors { get; } = new List<DeviceSelectorV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Selectors\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSelectors() => Selectors.Count > 0;\n\n        /// <summary>\n        ///     Count is used only when the count mode is \"ExactCount\". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.\n        /// </summary>\n        [YamlMember(Alias = \"count\")]\n        [JsonProperty(\"count\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? Count { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceSelectorV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DeviceSelector must have exactly one field set.\n    /// </summary>\n    public partial class DeviceSelectorV1Alpha3\n    {\n        /// <summary>\n        ///     CEL contains a CEL expression for selecting a device.\n        /// </summary>\n        [YamlMember(Alias = \"cel\")]\n        [JsonProperty(\"cel\", NullValueHandling = NullValueHandling.Ignore)]\n        public CELDeviceSelectorV1Alpha3 Cel { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DeviceV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.\n    /// </summary>\n    public partial class DeviceV1Alpha3\n    {\n        /// <summary>\n        ///     Basic defines one device instance.\n        /// </summary>\n        [YamlMember(Alias = \"basic\")]\n        [JsonProperty(\"basic\", NullValueHandling = NullValueHandling.Ignore)]\n        public BasicDeviceV1Alpha3 Basic { get; set; }\n\n        /// <summary>\n        ///     Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DownwardAPIProjectionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.\n    /// </summary>\n    [KubeListItem(\"DownwardAPIVolumeFile\", \"v1\")]\n    public partial class DownwardAPIProjectionV1\n    {\n        /// <summary>\n        ///     Items is a list of DownwardAPIVolume file\n        /// </summary>\n        [YamlMember(Alias = \"items\")]\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DownwardAPIVolumeFileV1> Items { get; } = new List<DownwardAPIVolumeFileV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Items\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeItems() => Items.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DownwardAPIVolumeFileV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DownwardAPIVolumeFile represents information to create the file containing the pod field\n    /// </summary>\n    public partial class DownwardAPIVolumeFileV1\n    {\n        /// <summary>\n        ///     Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n        /// </summary>\n        [YamlMember(Alias = \"mode\")]\n        [JsonProperty(\"mode\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Mode { get; set; }\n\n        /// <summary>\n        ///     Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\n        /// </summary>\n        [YamlMember(Alias = \"fieldRef\")]\n        [JsonProperty(\"fieldRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectFieldSelectorV1 FieldRef { get; set; }\n\n        /// <summary>\n        ///     Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\n        /// </summary>\n        [YamlMember(Alias = \"resourceFieldRef\")]\n        [JsonProperty(\"resourceFieldRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceFieldSelectorV1 ResourceFieldRef { get; set; }\n\n        /// <summary>\n        ///     Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/DownwardAPIVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    [KubeListItem(\"DownwardAPIVolumeFile\", \"v1\")]\n    public partial class DownwardAPIVolumeSourceV1\n    {\n        /// <summary>\n        ///     Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n        /// </summary>\n        [YamlMember(Alias = \"defaultMode\")]\n        [JsonProperty(\"defaultMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? DefaultMode { get; set; }\n\n        /// <summary>\n        ///     Items is a list of downward API volume file\n        /// </summary>\n        [YamlMember(Alias = \"items\")]\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DownwardAPIVolumeFileV1> Items { get; } = new List<DownwardAPIVolumeFileV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Items\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeItems() => Items.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EmptyDirVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class EmptyDirVolumeSourceV1\n    {\n        /// <summary>\n        ///     medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n        /// </summary>\n        [YamlMember(Alias = \"medium\")]\n        [JsonProperty(\"medium\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Medium { get; set; }\n\n        /// <summary>\n        ///     sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n        /// </summary>\n        [YamlMember(Alias = \"sizeLimit\")]\n        [JsonProperty(\"sizeLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SizeLimit { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointAddressV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EndpointAddress is a tuple that describes single IP address.\n    /// </summary>\n    public partial class EndpointAddressV1\n    {\n        /// <summary>\n        ///     The Hostname of this endpoint\n        /// </summary>\n        [YamlMember(Alias = \"hostname\")]\n        [JsonProperty(\"hostname\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Hostname { get; set; }\n\n        /// <summary>\n        ///     Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.\n        /// </summary>\n        [YamlMember(Alias = \"nodeName\")]\n        [JsonProperty(\"nodeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string NodeName { get; set; }\n\n        /// <summary>\n        ///     Reference to object providing the endpoint.\n        /// </summary>\n        [YamlMember(Alias = \"targetRef\")]\n        [JsonProperty(\"targetRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectReferenceV1 TargetRef { get; set; }\n\n        /// <summary>\n        ///     The IP of this endpoint. May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10), or link-local multicast (224.0.0.0/24 or ff02::/16).\n        /// </summary>\n        [YamlMember(Alias = \"ip\")]\n        [JsonProperty(\"ip\", NullValueHandling = NullValueHandling.Include)]\n        public string Ip { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointConditionsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EndpointConditions represents the current condition of an endpoint.\n    /// </summary>\n    public partial class EndpointConditionsV1\n    {\n        /// <summary>\n        ///     serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition.\n        /// </summary>\n        [YamlMember(Alias = \"serving\")]\n        [JsonProperty(\"serving\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Serving { get; set; }\n\n        /// <summary>\n        ///     terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating.\n        /// </summary>\n        [YamlMember(Alias = \"terminating\")]\n        [JsonProperty(\"terminating\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Terminating { get; set; }\n\n        /// <summary>\n        ///     ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be \"true\" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag.\n        /// </summary>\n        [YamlMember(Alias = \"ready\")]\n        [JsonProperty(\"ready\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Ready { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointHintsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EndpointHints provides hints describing how an endpoint should be consumed.\n    /// </summary>\n    public partial class EndpointHintsV1\n    {\n        /// <summary>\n        ///     forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.\n        /// </summary>\n        [YamlMember(Alias = \"forZones\")]\n        [JsonProperty(\"forZones\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ForZoneV1> ForZones { get; } = new List<ForZoneV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ForZones\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeForZones() => ForZones.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointPortV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EndpointPort represents a Port used by an EndpointSlice\n    /// </summary>\n    public partial class EndpointPortV1\n    {\n        /// <summary>\n        ///     name represents the name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is derived from a Kubernetes service, this corresponds to the Service.ports[].name. Name must either be an empty string or pass DNS_LABEL validation: * must be no more than 63 characters long. * must consist of lower case alphanumeric characters or '-'. * must start and end with an alphanumeric character. Default is empty string.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either:\n        ///     \n        ///     * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names).\n        ///     \n        ///     * Kubernetes-defined prefixed names:\n        ///       * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\n        ///       * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\n        ///       * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\n        ///     \n        ///     * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.\n        /// </summary>\n        [YamlMember(Alias = \"appProtocol\")]\n        [JsonProperty(\"appProtocol\", NullValueHandling = NullValueHandling.Ignore)]\n        public string AppProtocol { get; set; }\n\n        /// <summary>\n        ///     protocol represents the IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\n        /// </summary>\n        [YamlMember(Alias = \"protocol\")]\n        [JsonProperty(\"protocol\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Protocol { get; set; }\n\n        /// <summary>\n        ///     port represents the port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointSliceListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EndpointSliceList represents a list of endpoint slices\n    /// </summary>\n    [KubeListItem(\"EndpointSlice\", \"discovery.k8s.io/v1\")]\n    [KubeObject(\"EndpointSliceList\", \"discovery.k8s.io/v1\")]\n    public partial class EndpointSliceListV1 : KubeResourceListV1<EndpointSliceV1>\n    {\n        /// <summary>\n        ///     items is the list of endpoint slices\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<EndpointSliceV1> Items { get; } = new List<EndpointSliceV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointSliceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EndpointSlice represents a subset of the endpoints that implement a service. For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints.\n    /// </summary>\n    [KubeObject(\"EndpointSlice\", \"discovery.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/discovery.k8s.io/v1/endpointslices\")]\n    [KubeApi(KubeAction.WatchList, \"apis/discovery.k8s.io/v1/watch/endpointslices\")]\n    [KubeApi(KubeAction.List, \"apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices\")]\n    [KubeApi(KubeAction.Create, \"apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices\")]\n    [KubeApi(KubeAction.Get, \"apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/discovery.k8s.io/v1/watch/namespaces/{namespace}/endpointslices\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices\")]\n    [KubeApi(KubeAction.Watch, \"apis/discovery.k8s.io/v1/watch/namespaces/{namespace}/endpointslices/{name}\")]\n    public partial class EndpointSliceV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name.\n        /// </summary>\n        [YamlMember(Alias = \"addressType\")]\n        [JsonProperty(\"addressType\", NullValueHandling = NullValueHandling.Include)]\n        public string AddressType { get; set; }\n\n        /// <summary>\n        ///     endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints.\n        /// </summary>\n        [YamlMember(Alias = \"endpoints\")]\n        [JsonProperty(\"endpoints\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EndpointV1> Endpoints { get; } = new List<EndpointV1>();\n\n        /// <summary>\n        ///     ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates \"all ports\". Each slice may include a maximum of 100 ports.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EndpointPortV1> Ports { get; } = new List<EndpointPortV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointSubsetV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n    ///     \n    ///     \t{\n    ///     \t  Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n    ///     \t  Ports:     [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n    ///     \t}\n    ///     \n    ///     The resulting set of endpoints can be viewed as:\n    ///     \n    ///     \ta: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n    ///     \tb: [ 10.10.1.1:309, 10.10.2.2:309 ]\n    /// </summary>\n    public partial class EndpointSubsetV1\n    {\n        /// <summary>\n        ///     IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.\n        /// </summary>\n        [YamlMember(Alias = \"addresses\")]\n        [JsonProperty(\"addresses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EndpointAddressV1> Addresses { get; } = new List<EndpointAddressV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Addresses\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAddresses() => Addresses.Count > 0;\n\n        /// <summary>\n        ///     IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.\n        /// </summary>\n        [YamlMember(Alias = \"notReadyAddresses\")]\n        [JsonProperty(\"notReadyAddresses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EndpointAddressV1> NotReadyAddresses { get; } = new List<EndpointAddressV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NotReadyAddresses\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNotReadyAddresses() => NotReadyAddresses.Count > 0;\n\n        /// <summary>\n        ///     Port numbers available on the related IP addresses.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EndpointPortV1> Ports { get; } = new List<EndpointPortV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Endpoint represents a single logical \"backend\" implementing a service.\n    /// </summary>\n    public partial class EndpointV1\n    {\n        /// <summary>\n        ///     hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation.\n        /// </summary>\n        [YamlMember(Alias = \"hostname\")]\n        [JsonProperty(\"hostname\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Hostname { get; set; }\n\n        /// <summary>\n        ///     nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node.\n        /// </summary>\n        [YamlMember(Alias = \"nodeName\")]\n        [JsonProperty(\"nodeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string NodeName { get; set; }\n\n        /// <summary>\n        ///     zone is the name of the Zone this endpoint exists in.\n        /// </summary>\n        [YamlMember(Alias = \"zone\")]\n        [JsonProperty(\"zone\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Zone { get; set; }\n\n        /// <summary>\n        ///     targetRef is a reference to a Kubernetes object that represents this endpoint.\n        /// </summary>\n        [YamlMember(Alias = \"targetRef\")]\n        [JsonProperty(\"targetRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectReferenceV1 TargetRef { get; set; }\n\n        /// <summary>\n        ///     addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267\n        /// </summary>\n        [YamlMember(Alias = \"addresses\")]\n        [JsonProperty(\"addresses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Addresses { get; } = new List<string>();\n\n        /// <summary>\n        ///     conditions contains information about the current status of the endpoint.\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", NullValueHandling = NullValueHandling.Ignore)]\n        public EndpointConditionsV1 Conditions { get; set; }\n\n        /// <summary>\n        ///     hints contains information associated with how an endpoint should be consumed.\n        /// </summary>\n        [YamlMember(Alias = \"hints\")]\n        [JsonProperty(\"hints\", NullValueHandling = NullValueHandling.Ignore)]\n        public EndpointHintsV1 Hints { get; set; }\n\n        /// <summary>\n        ///     deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24).  While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead.\n        /// </summary>\n        [YamlMember(Alias = \"deprecatedTopology\")]\n        [JsonProperty(\"deprecatedTopology\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> DeprecatedTopology { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"DeprecatedTopology\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDeprecatedTopology() => DeprecatedTopology.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointsListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EndpointsList is a list of endpoints.\n    /// </summary>\n    [KubeListItem(\"Endpoints\", \"v1\")]\n    [KubeObject(\"EndpointsList\", \"v1\")]\n    public partial class EndpointsListV1 : KubeResourceListV1<EndpointsV1>\n    {\n        /// <summary>\n        ///     List of endpoints.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<EndpointsV1> Items { get; } = new List<EndpointsV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EndpointsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Endpoints is a collection of endpoints that implement the actual service. Example:\n    ///     \n    ///     \t Name: \"mysvc\",\n    ///     \t Subsets: [\n    ///     \t   {\n    ///     \t     Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n    ///     \t     Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n    ///     \t   },\n    ///     \t   {\n    ///     \t     Addresses: [{\"ip\": \"10.10.3.3\"}],\n    ///     \t     Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n    ///     \t   },\n    ///     \t]\n    /// </summary>\n    [KubeObject(\"Endpoints\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/endpoints\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/endpoints\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/endpoints\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/endpoints\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/endpoints/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/endpoints/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/endpoints/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/endpoints/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/endpoints\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/endpoints\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/endpoints/{name}\")]\n    public partial class EndpointsV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.\n        /// </summary>\n        [YamlMember(Alias = \"subsets\")]\n        [JsonProperty(\"subsets\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EndpointSubsetV1> Subsets { get; } = new List<EndpointSubsetV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Subsets\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSubsets() => Subsets.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EnvFromSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EnvFromSource represents the source of a set of ConfigMaps\n    /// </summary>\n    public partial class EnvFromSourceV1\n    {\n        /// <summary>\n        ///     The ConfigMap to select from\n        /// </summary>\n        [YamlMember(Alias = \"configMapRef\")]\n        [JsonProperty(\"configMapRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ConfigMapEnvSourceV1 ConfigMapRef { get; set; }\n\n        /// <summary>\n        ///     The Secret to select from\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretEnvSourceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\n        /// </summary>\n        [YamlMember(Alias = \"prefix\")]\n        [JsonProperty(\"prefix\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Prefix { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EnvVarSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EnvVarSource represents a source for the value of an EnvVar.\n    /// </summary>\n    public partial class EnvVarSourceV1\n    {\n        /// <summary>\n        ///     Selects a key of a ConfigMap.\n        /// </summary>\n        [YamlMember(Alias = \"configMapKeyRef\")]\n        [JsonProperty(\"configMapKeyRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ConfigMapKeySelectorV1 ConfigMapKeyRef { get; set; }\n\n        /// <summary>\n        ///     Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['&lt;KEY&gt;']`, `metadata.annotations['&lt;KEY&gt;']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\n        /// </summary>\n        [YamlMember(Alias = \"fieldRef\")]\n        [JsonProperty(\"fieldRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectFieldSelectorV1 FieldRef { get; set; }\n\n        /// <summary>\n        ///     Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\n        /// </summary>\n        [YamlMember(Alias = \"resourceFieldRef\")]\n        [JsonProperty(\"resourceFieldRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceFieldSelectorV1 ResourceFieldRef { get; set; }\n\n        /// <summary>\n        ///     Selects a key of a secret in the pod's namespace\n        /// </summary>\n        [YamlMember(Alias = \"secretKeyRef\")]\n        [JsonProperty(\"secretKeyRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretKeySelectorV1 SecretKeyRef { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EnvVarV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EnvVar represents an environment variable present in a Container.\n    /// </summary>\n    public partial class EnvVarV1\n    {\n        /// <summary>\n        ///     Name of the environment variable. Must be a C_IDENTIFIER.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Value { get; set; }\n\n        /// <summary>\n        ///     Source for the environment variable's value. Cannot be used if value is not empty.\n        /// </summary>\n        [YamlMember(Alias = \"valueFrom\")]\n        [JsonProperty(\"valueFrom\", NullValueHandling = NullValueHandling.Ignore)]\n        public EnvVarSourceV1 ValueFrom { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EphemeralContainerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation.\n    ///     \n    ///     To add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted.\n    /// </summary>\n    public partial class EphemeralContainerV1\n    {\n        /// <summary>\n        ///     Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n        /// </summary>\n        [YamlMember(Alias = \"command\")]\n        [JsonProperty(\"command\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Command { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Command\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCommand() => Command.Count > 0;\n\n        /// <summary>\n        ///     Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\n        /// </summary>\n        [YamlMember(Alias = \"image\")]\n        [JsonProperty(\"image\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Image { get; set; }\n\n        /// <summary>\n        ///     Lifecycle is not allowed for ephemeral containers.\n        /// </summary>\n        [YamlMember(Alias = \"lifecycle\")]\n        [JsonProperty(\"lifecycle\", NullValueHandling = NullValueHandling.Ignore)]\n        public LifecycleV1 Lifecycle { get; set; }\n\n        /// <summary>\n        ///     Probes are not allowed for ephemeral containers.\n        /// </summary>\n        [YamlMember(Alias = \"livenessProbe\")]\n        [JsonProperty(\"livenessProbe\", NullValueHandling = NullValueHandling.Ignore)]\n        public ProbeV1 LivenessProbe { get; set; }\n\n        /// <summary>\n        ///     Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Probes are not allowed for ephemeral containers.\n        /// </summary>\n        [YamlMember(Alias = \"readinessProbe\")]\n        [JsonProperty(\"readinessProbe\", NullValueHandling = NullValueHandling.Ignore)]\n        public ProbeV1 ReadinessProbe { get; set; }\n\n        /// <summary>\n        ///     Probes are not allowed for ephemeral containers.\n        /// </summary>\n        [YamlMember(Alias = \"startupProbe\")]\n        [JsonProperty(\"startupProbe\", NullValueHandling = NullValueHandling.Ignore)]\n        public ProbeV1 StartupProbe { get; set; }\n\n        /// <summary>\n        ///     Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\n        /// </summary>\n        [YamlMember(Alias = \"stdinOnce\")]\n        [JsonProperty(\"stdinOnce\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? StdinOnce { get; set; }\n\n        /// <summary>\n        ///     If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec.\n        ///     \n        ///     The container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined.\n        /// </summary>\n        [YamlMember(Alias = \"targetContainerName\")]\n        [JsonProperty(\"targetContainerName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TargetContainerName { get; set; }\n\n        /// <summary>\n        ///     Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"terminationMessagePath\")]\n        [JsonProperty(\"terminationMessagePath\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TerminationMessagePath { get; set; }\n\n        /// <summary>\n        ///     List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"envFrom\")]\n        [JsonProperty(\"envFrom\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EnvFromSourceV1> EnvFrom { get; } = new List<EnvFromSourceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"EnvFrom\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEnvFrom() => EnvFrom.Count > 0;\n\n        /// <summary>\n        ///     Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\n        /// </summary>\n        [YamlMember(Alias = \"stdin\")]\n        [JsonProperty(\"stdin\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Stdin { get; set; }\n\n        /// <summary>\n        ///     Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"workingDir\")]\n        [JsonProperty(\"workingDir\", NullValueHandling = NullValueHandling.Ignore)]\n        public string WorkingDir { get; set; }\n\n        /// <summary>\n        ///     Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n        /// </summary>\n        [YamlMember(Alias = \"args\")]\n        [JsonProperty(\"args\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Args { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Args\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeArgs() => Args.Count > 0;\n\n        /// <summary>\n        ///     Ports are not allowed for ephemeral containers.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [MergeStrategy(Key = \"containerPort\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerPortV1> Ports { get; } = new List<ContainerPortV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n\n        /// <summary>\n        ///     Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceRequirementsV1 Resources { get; set; }\n\n        /// <summary>\n        ///     volumeDevices is the list of block devices to be used by the container.\n        /// </summary>\n        [MergeStrategy(Key = \"devicePath\")]\n        [YamlMember(Alias = \"volumeDevices\")]\n        [JsonProperty(\"volumeDevices\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeDeviceV1> VolumeDevices { get; } = new List<VolumeDeviceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeDevices\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeDevices() => VolumeDevices.Count > 0;\n\n        /// <summary>\n        ///     Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.\n        /// </summary>\n        [MergeStrategy(Key = \"mountPath\")]\n        [YamlMember(Alias = \"volumeMounts\")]\n        [JsonProperty(\"volumeMounts\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeMountV1> VolumeMounts { get; } = new List<VolumeMountV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeMounts\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeMounts() => VolumeMounts.Count > 0;\n\n        /// <summary>\n        ///     Optional: SecurityContext defines the security options the ephemeral container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\n        /// </summary>\n        [YamlMember(Alias = \"securityContext\")]\n        [JsonProperty(\"securityContext\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecurityContextV1 SecurityContext { get; set; }\n\n        /// <summary>\n        ///     List of environment variables to set in the container. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"env\")]\n        [MergeStrategy(Key = \"name\")]\n        [JsonProperty(\"env\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EnvVarV1> Env { get; } = new List<EnvVarV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Env\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEnv() => Env.Count > 0;\n\n        /// <summary>\n        ///     Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n        /// </summary>\n        [YamlMember(Alias = \"imagePullPolicy\")]\n        [JsonProperty(\"imagePullPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ImagePullPolicy { get; set; }\n\n        /// <summary>\n        ///     Resources resize policy for the container.\n        /// </summary>\n        [YamlMember(Alias = \"resizePolicy\")]\n        [JsonProperty(\"resizePolicy\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerResizePolicyV1> ResizePolicy { get; } = new List<ContainerResizePolicyV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResizePolicy\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResizePolicy() => ResizePolicy.Count > 0;\n\n        /// <summary>\n        ///     Restart policy for the container to manage the restart behavior of each container within a pod. This may only be set for init containers. You cannot set this field on ephemeral containers.\n        /// </summary>\n        [YamlMember(Alias = \"restartPolicy\")]\n        [JsonProperty(\"restartPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RestartPolicy { get; set; }\n\n        /// <summary>\n        ///     Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n        /// </summary>\n        [YamlMember(Alias = \"terminationMessagePolicy\")]\n        [JsonProperty(\"terminationMessagePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TerminationMessagePolicy { get; set; }\n\n        /// <summary>\n        ///     Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\n        /// </summary>\n        [YamlMember(Alias = \"tty\")]\n        [JsonProperty(\"tty\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Tty { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EphemeralVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents an ephemeral volume that is handled by a normal storage driver.\n    /// </summary>\n    public partial class EphemeralVolumeSourceV1\n    {\n        /// <summary>\n        ///     Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `&lt;pod name&gt;-&lt;volume name&gt;` where `&lt;volume name&gt;` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).\n        ///     \n        ///     An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster.\n        ///     \n        ///     This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created.\n        ///     \n        ///     Required, must not be nil.\n        /// </summary>\n        [YamlMember(Alias = \"volumeClaimTemplate\")]\n        [JsonProperty(\"volumeClaimTemplate\", NullValueHandling = NullValueHandling.Ignore)]\n        public PersistentVolumeClaimTemplateV1 VolumeClaimTemplate { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EventListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EventList is a list of events.\n    /// </summary>\n    [KubeListItem(\"Event\", \"v1\")]\n    [KubeObject(\"EventList\", \"v1\")]\n    public partial class EventListV1 : KubeResourceListV1<EventV1>\n    {\n        /// <summary>\n        ///     List of events\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<EventV1> Items { get; } = new List<EventV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EventListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EventList is a list of Event objects.\n    /// </summary>\n    [KubeListItem(\"Event\", \"events.k8s.io/v1beta1\")]\n    [KubeObject(\"EventList\", \"events.k8s.io/v1beta1\")]\n    public partial class EventListV1Beta1 : KubeResourceListV1<EventV1Beta1>\n    {\n        /// <summary>\n        ///     Items is a list of schema objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<EventV1Beta1> Items { get; } = new List<EventV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EventSeriesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time. How often to update the EventSeries is up to the event reporters. The default event reporter in \"k8s.io/client-go/tools/events/event_broadcaster.go\" shows how this struct is updated on heartbeats and can guide customized reporter implementations.\n    /// </summary>\n    public partial class EventSeriesV1\n    {\n        /// <summary>\n        ///     lastObservedTime is the time when last Event from the series was seen before last heartbeat.\n        /// </summary>\n        [YamlMember(Alias = \"lastObservedTime\")]\n        [JsonProperty(\"lastObservedTime\", NullValueHandling = NullValueHandling.Include)]\n        public DateTime? LastObservedTime { get; set; }\n\n        /// <summary>\n        ///     count is the number of occurrences in this series up to the last heartbeat time.\n        /// </summary>\n        [YamlMember(Alias = \"count\")]\n        [JsonProperty(\"count\", NullValueHandling = NullValueHandling.Include)]\n        public int Count { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EventSeriesV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.\n    /// </summary>\n    public partial class EventSeriesV1Beta1\n    {\n        /// <summary>\n        ///     Time when last Event from the series was seen before last heartbeat.\n        /// </summary>\n        [YamlMember(Alias = \"lastObservedTime\")]\n        [JsonProperty(\"lastObservedTime\", NullValueHandling = NullValueHandling.Include)]\n        public MicroTimeV1? LastObservedTime { get; set; }\n\n        /// <summary>\n        ///     Information whether this series is ongoing or finished.\n        /// </summary>\n        [YamlMember(Alias = \"state\")]\n        [JsonProperty(\"state\", NullValueHandling = NullValueHandling.Include)]\n        public string State { get; set; }\n\n        /// <summary>\n        ///     Number of occurrences in this series up to the last heartbeat time\n        /// </summary>\n        [YamlMember(Alias = \"count\")]\n        [JsonProperty(\"count\", NullValueHandling = NullValueHandling.Include)]\n        public int Count { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EventSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     EventSource contains information for an event.\n    /// </summary>\n    public partial class EventSourceV1\n    {\n        /// <summary>\n        ///     Component from which the event is generated.\n        /// </summary>\n        [YamlMember(Alias = \"component\")]\n        [JsonProperty(\"component\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Component { get; set; }\n\n        /// <summary>\n        ///     Node name on which the event is generated.\n        /// </summary>\n        [YamlMember(Alias = \"host\")]\n        [JsonProperty(\"host\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Host { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EventV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Event is a report of an event somewhere in the cluster.  Events have a limited retention time and triggers and messages may evolve with time.  Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason.  Events should be treated as informative, best-effort, supplemental data.\n    /// </summary>\n    [KubeObject(\"Event\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/events\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/events\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/events\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/events\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/events/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/events/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/events/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/events/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/events\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/events\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/events/{name}\")]\n    public partial class EventV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Optional secondary object for more complex actions.\n        /// </summary>\n        [YamlMember(Alias = \"related\")]\n        [JsonProperty(\"related\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectReferenceV1 Related { get; set; }\n\n        /// <summary>\n        ///     Time when this Event was first observed.\n        /// </summary>\n        [YamlMember(Alias = \"eventTime\")]\n        [JsonProperty(\"eventTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? EventTime { get; set; }\n\n        /// <summary>\n        ///     A human-readable description of the status of this operation.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     ID of the controller instance, e.g. `kubelet-xyzf`.\n        /// </summary>\n        [YamlMember(Alias = \"reportingInstance\")]\n        [JsonProperty(\"reportingInstance\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ReportingInstance { get; set; }\n\n        /// <summary>\n        ///     The component reporting this event. Should be a short machine understandable string.\n        /// </summary>\n        [YamlMember(Alias = \"source\")]\n        [JsonProperty(\"source\", NullValueHandling = NullValueHandling.Ignore)]\n        public EventSourceV1 Source { get; set; }\n\n        /// <summary>\n        ///     Type of this event (Normal, Warning), new types could be added in the future\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     What action was taken/failed regarding to the Regarding object.\n        /// </summary>\n        [YamlMember(Alias = \"action\")]\n        [JsonProperty(\"action\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Action { get; set; }\n\n        /// <summary>\n        ///     This should be a short, machine understandable string that gives the reason for the transition into the object's current status.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)\n        /// </summary>\n        [YamlMember(Alias = \"firstTimestamp\")]\n        [JsonProperty(\"firstTimestamp\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? FirstTimestamp { get; set; }\n\n        /// <summary>\n        ///     The time at which the most recent occurrence of this event was recorded.\n        /// </summary>\n        [YamlMember(Alias = \"lastTimestamp\")]\n        [JsonProperty(\"lastTimestamp\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTimestamp { get; set; }\n\n        /// <summary>\n        ///     Data about the Event series this event represents or nil if it's a singleton Event.\n        /// </summary>\n        [YamlMember(Alias = \"series\")]\n        [JsonProperty(\"series\", NullValueHandling = NullValueHandling.Ignore)]\n        public EventSeriesV1 Series { get; set; }\n\n        /// <summary>\n        ///     The number of times this event has occurred.\n        /// </summary>\n        [YamlMember(Alias = \"count\")]\n        [JsonProperty(\"count\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Count { get; set; }\n\n        /// <summary>\n        ///     The object that this event is about.\n        /// </summary>\n        [YamlMember(Alias = \"involvedObject\")]\n        [JsonProperty(\"involvedObject\", NullValueHandling = NullValueHandling.Include)]\n        public ObjectReferenceV1 InvolvedObject { get; set; }\n\n        /// <summary>\n        ///     Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.\n        /// </summary>\n        [YamlMember(Alias = \"reportingComponent\")]\n        [JsonProperty(\"reportingComponent\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ReportingComponent { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EventV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Event is a report of an event somewhere in the cluster. It generally denotes some state change in the system.\n    /// </summary>\n    [KubeObject(\"Event\", \"events.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/events.k8s.io/v1beta1/events\")]\n    [KubeApi(KubeAction.WatchList, \"apis/events.k8s.io/v1beta1/watch/events\")]\n    [KubeApi(KubeAction.List, \"apis/events.k8s.io/v1beta1/namespaces/{namespace}/events\")]\n    [KubeApi(KubeAction.Create, \"apis/events.k8s.io/v1beta1/namespaces/{namespace}/events\")]\n    [KubeApi(KubeAction.Get, \"apis/events.k8s.io/v1beta1/namespaces/{namespace}/events/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/events.k8s.io/v1beta1/namespaces/{namespace}/events/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/events.k8s.io/v1beta1/namespaces/{namespace}/events/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/events.k8s.io/v1beta1/namespaces/{namespace}/events/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/events.k8s.io/v1beta1/watch/namespaces/{namespace}/events\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/events.k8s.io/v1beta1/namespaces/{namespace}/events\")]\n    [KubeApi(KubeAction.Watch, \"apis/events.k8s.io/v1beta1/watch/namespaces/{namespace}/events/{name}\")]\n    public partial class EventV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Optional secondary object for more complex actions. E.g. when regarding object triggers a creation or deletion of related object.\n        /// </summary>\n        [YamlMember(Alias = \"related\")]\n        [JsonProperty(\"related\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectReferenceV1 Related { get; set; }\n\n        /// <summary>\n        ///     Deprecated field assuring backward compatibility with core.v1 Event type\n        /// </summary>\n        [YamlMember(Alias = \"deprecatedSource\")]\n        [JsonProperty(\"deprecatedSource\", NullValueHandling = NullValueHandling.Ignore)]\n        public EventSourceV1 DeprecatedSource { get; set; }\n\n        /// <summary>\n        ///     Required. Time when this Event was first observed.\n        /// </summary>\n        [YamlMember(Alias = \"eventTime\")]\n        [JsonProperty(\"eventTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public MicroTimeV1? EventTime { get; set; }\n\n        /// <summary>\n        ///     Optional. A human-readable description of the status of this operation. Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB.\n        /// </summary>\n        [YamlMember(Alias = \"note\")]\n        [JsonProperty(\"note\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Note { get; set; }\n\n        /// <summary>\n        ///     ID of the controller instance, e.g. `kubelet-xyzf`.\n        /// </summary>\n        [YamlMember(Alias = \"reportingInstance\")]\n        [JsonProperty(\"reportingInstance\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ReportingInstance { get; set; }\n\n        /// <summary>\n        ///     Type of this event (Normal, Warning), new types could be added in the future.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The object this Event is about. In most cases it's an Object reporting controller implements. E.g. ReplicaSetController implements ReplicaSets and this event is emitted because it acts on some changes in a ReplicaSet object.\n        /// </summary>\n        [YamlMember(Alias = \"regarding\")]\n        [JsonProperty(\"regarding\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectReferenceV1 Regarding { get; set; }\n\n        /// <summary>\n        ///     What action was taken/failed regarding to the regarding object.\n        /// </summary>\n        [YamlMember(Alias = \"action\")]\n        [JsonProperty(\"action\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Action { get; set; }\n\n        /// <summary>\n        ///     Why the action was taken.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Deprecated field assuring backward compatibility with core.v1 Event type\n        /// </summary>\n        [YamlMember(Alias = \"deprecatedFirstTimestamp\")]\n        [JsonProperty(\"deprecatedFirstTimestamp\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? DeprecatedFirstTimestamp { get; set; }\n\n        /// <summary>\n        ///     Deprecated field assuring backward compatibility with core.v1 Event type\n        /// </summary>\n        [YamlMember(Alias = \"deprecatedLastTimestamp\")]\n        [JsonProperty(\"deprecatedLastTimestamp\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? DeprecatedLastTimestamp { get; set; }\n\n        /// <summary>\n        ///     Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.\n        /// </summary>\n        [YamlMember(Alias = \"reportingController\")]\n        [JsonProperty(\"reportingController\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ReportingController { get; set; }\n\n        /// <summary>\n        ///     Data about the Event series this event represents or nil if it's a singleton Event.\n        /// </summary>\n        [YamlMember(Alias = \"series\")]\n        [JsonProperty(\"series\", NullValueHandling = NullValueHandling.Ignore)]\n        public EventSeriesV1Beta1 Series { get; set; }\n\n        /// <summary>\n        ///     Deprecated field assuring backward compatibility with core.v1 Event type\n        /// </summary>\n        [YamlMember(Alias = \"deprecatedCount\")]\n        [JsonProperty(\"deprecatedCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? DeprecatedCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EvictionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod.  A request to cause such an eviction is created by POSTing to .../pods/&lt;pod name&gt;/evictions.\n    /// </summary>\n    [KubeObject(\"Eviction\", \"policy/v1\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/pods/{name}/eviction\")]\n    public partial class EvictionV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     DeleteOptions may be provided\n        /// </summary>\n        [YamlMember(Alias = \"deleteOptions\")]\n        [JsonProperty(\"deleteOptions\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeleteOptionsV1 DeleteOptions { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/EvictionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod.  A request to cause such an eviction is created by POSTing to .../pods/&lt;pod name&gt;/evictions.\n    /// </summary>\n    [KubeObject(\"Eviction\", \"policy/v1beta1\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/pods/{name}/eviction\")]\n    public partial class EvictionV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     DeleteOptions may be provided\n        /// </summary>\n        [YamlMember(Alias = \"deleteOptions\")]\n        [JsonProperty(\"deleteOptions\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeleteOptionsV1 DeleteOptions { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExecActionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExecAction describes a \"run in container\" action.\n    /// </summary>\n    public partial class ExecActionV1\n    {\n        /// <summary>\n        ///     Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\n        /// </summary>\n        [YamlMember(Alias = \"command\")]\n        [JsonProperty(\"command\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Command { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Command\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCommand() => Command.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExemptPriorityLevelConfigurationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`.\n    /// </summary>\n    public partial class ExemptPriorityLevelConfigurationV1\n    {\n        /// <summary>\n        ///     `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values:\n        ///     \n        ///     NominalCL(i)  = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)\n        ///     \n        ///     Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero.\n        /// </summary>\n        [YamlMember(Alias = \"nominalConcurrencyShares\")]\n        [JsonProperty(\"nominalConcurrencyShares\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NominalConcurrencyShares { get; set; }\n\n        /// <summary>\n        ///     `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels.  This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows.\n        ///     \n        ///     LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )\n        /// </summary>\n        [YamlMember(Alias = \"lendablePercent\")]\n        [JsonProperty(\"lendablePercent\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? LendablePercent { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExemptPriorityLevelConfigurationV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`.\n    /// </summary>\n    public partial class ExemptPriorityLevelConfigurationV1Beta3\n    {\n        /// <summary>\n        ///     `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values:\n        ///     \n        ///     NominalCL(i)  = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)\n        ///     \n        ///     Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero.\n        /// </summary>\n        [YamlMember(Alias = \"nominalConcurrencyShares\")]\n        [JsonProperty(\"nominalConcurrencyShares\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NominalConcurrencyShares { get; set; }\n\n        /// <summary>\n        ///     `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels.  This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows.\n        ///     \n        ///     LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )\n        /// </summary>\n        [YamlMember(Alias = \"lendablePercent\")]\n        [JsonProperty(\"lendablePercent\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? LendablePercent { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExpressionWarningV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExpressionWarning is a warning information that targets a specific expression.\n    /// </summary>\n    public partial class ExpressionWarningV1\n    {\n        /// <summary>\n        ///     The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \"spec.validations[0].expression\"\n        /// </summary>\n        [YamlMember(Alias = \"fieldRef\")]\n        [JsonProperty(\"fieldRef\", NullValueHandling = NullValueHandling.Include)]\n        public string FieldRef { get; set; }\n\n        /// <summary>\n        ///     The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler.\n        /// </summary>\n        [YamlMember(Alias = \"warning\")]\n        [JsonProperty(\"warning\", NullValueHandling = NullValueHandling.Include)]\n        public string Warning { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExpressionWarningV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExpressionWarning is a warning information that targets a specific expression.\n    /// </summary>\n    public partial class ExpressionWarningV1Alpha1\n    {\n        /// <summary>\n        ///     The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \"spec.validations[0].expression\"\n        /// </summary>\n        [YamlMember(Alias = \"fieldRef\")]\n        [JsonProperty(\"fieldRef\", NullValueHandling = NullValueHandling.Include)]\n        public string FieldRef { get; set; }\n\n        /// <summary>\n        ///     The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler.\n        /// </summary>\n        [YamlMember(Alias = \"warning\")]\n        [JsonProperty(\"warning\", NullValueHandling = NullValueHandling.Include)]\n        public string Warning { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExpressionWarningV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExpressionWarning is a warning information that targets a specific expression.\n    /// </summary>\n    public partial class ExpressionWarningV1Beta1\n    {\n        /// <summary>\n        ///     The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \"spec.validations[0].expression\"\n        /// </summary>\n        [YamlMember(Alias = \"fieldRef\")]\n        [JsonProperty(\"fieldRef\", NullValueHandling = NullValueHandling.Include)]\n        public string FieldRef { get; set; }\n\n        /// <summary>\n        ///     The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler.\n        /// </summary>\n        [YamlMember(Alias = \"warning\")]\n        [JsonProperty(\"warning\", NullValueHandling = NullValueHandling.Include)]\n        public string Warning { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExternalDocumentationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExternalDocumentation allows referencing an external resource for extended documentation.\n    /// </summary>\n    public partial class ExternalDocumentationV1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"url\")]\n        [JsonProperty(\"url\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Url { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExternalDocumentationV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExternalDocumentation allows referencing an external resource for extended documentation.\n    /// </summary>\n    public partial class ExternalDocumentationV1Beta1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"url\")]\n        [JsonProperty(\"url\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Url { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExternalMetricSourceV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).\n    /// </summary>\n    public partial class ExternalMetricSourceV2\n    {\n        /// <summary>\n        ///     metric identifies the target metric by name and selector\n        /// </summary>\n        [YamlMember(Alias = \"metric\")]\n        [JsonProperty(\"metric\", NullValueHandling = NullValueHandling.Include)]\n        public MetricIdentifierV2 Metric { get; set; }\n\n        /// <summary>\n        ///     target specifies the target value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"target\")]\n        [JsonProperty(\"target\", NullValueHandling = NullValueHandling.Include)]\n        public MetricTargetV2 Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExternalMetricSourceV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). Exactly one \"target\" type should be set.\n    /// </summary>\n    public partial class ExternalMetricSourceV2Beta1\n    {\n        /// <summary>\n        ///     metricName is the name of the metric in question.\n        /// </summary>\n        [YamlMember(Alias = \"metricName\")]\n        [JsonProperty(\"metricName\", NullValueHandling = NullValueHandling.Include)]\n        public string MetricName { get; set; }\n\n        /// <summary>\n        ///     targetAverageValue is the target per-pod value of global metric (as a quantity). Mutually exclusive with TargetValue.\n        /// </summary>\n        [YamlMember(Alias = \"targetAverageValue\")]\n        [JsonProperty(\"targetAverageValue\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TargetAverageValue { get; set; }\n\n        /// <summary>\n        ///     targetValue is the target value of the metric (as a quantity). Mutually exclusive with TargetAverageValue.\n        /// </summary>\n        [YamlMember(Alias = \"targetValue\")]\n        [JsonProperty(\"targetValue\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TargetValue { get; set; }\n\n        /// <summary>\n        ///     metricSelector is used to identify a specific time series within a given metric.\n        /// </summary>\n        [YamlMember(Alias = \"metricSelector\")]\n        [JsonProperty(\"metricSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 MetricSelector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExternalMetricStatusV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.\n    /// </summary>\n    public partial class ExternalMetricStatusV2\n    {\n        /// <summary>\n        ///     metric identifies the target metric by name and selector\n        /// </summary>\n        [YamlMember(Alias = \"metric\")]\n        [JsonProperty(\"metric\", NullValueHandling = NullValueHandling.Include)]\n        public MetricIdentifierV2 Metric { get; set; }\n\n        /// <summary>\n        ///     current contains the current value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"current\")]\n        [JsonProperty(\"current\", NullValueHandling = NullValueHandling.Include)]\n        public MetricValueStatusV2 Current { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ExternalMetricStatusV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.\n    /// </summary>\n    public partial class ExternalMetricStatusV2Beta1\n    {\n        /// <summary>\n        ///     currentAverageValue is the current value of metric averaged over autoscaled pods.\n        /// </summary>\n        [YamlMember(Alias = \"currentAverageValue\")]\n        [JsonProperty(\"currentAverageValue\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CurrentAverageValue { get; set; }\n\n        /// <summary>\n        ///     currentValue is the current value of the metric (as a quantity)\n        /// </summary>\n        [YamlMember(Alias = \"currentValue\")]\n        [JsonProperty(\"currentValue\", NullValueHandling = NullValueHandling.Include)]\n        public string CurrentValue { get; set; }\n\n        /// <summary>\n        ///     metricName is the name of a metric used for autoscaling in metric system.\n        /// </summary>\n        [YamlMember(Alias = \"metricName\")]\n        [JsonProperty(\"metricName\", NullValueHandling = NullValueHandling.Include)]\n        public string MetricName { get; set; }\n\n        /// <summary>\n        ///     metricSelector is used to identify a specific time series within a given metric.\n        /// </summary>\n        [YamlMember(Alias = \"metricSelector\")]\n        [JsonProperty(\"metricSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 MetricSelector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FCVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class FCVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     lun is Optional: FC target lun number\n        /// </summary>\n        [YamlMember(Alias = \"lun\")]\n        [JsonProperty(\"lun\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Lun { get; set; }\n\n        /// <summary>\n        ///     targetWWNs is Optional: FC target worldwide names (WWNs)\n        /// </summary>\n        [YamlMember(Alias = \"targetWWNs\")]\n        [JsonProperty(\"targetWWNs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> TargetWWNs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"TargetWWNs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTargetWWNs() => TargetWWNs.Count > 0;\n\n        /// <summary>\n        ///     wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n        /// </summary>\n        [YamlMember(Alias = \"wwids\")]\n        [JsonProperty(\"wwids\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Wwids { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Wwids\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeWwids() => Wwids.Count > 0;\n\n        /// <summary>\n        ///     readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FSGroupStrategyOptionsV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FSGroupStrategyOptions defines the strategy type and options used to create the strategy. Deprecated: use FSGroupStrategyOptions from policy API Group instead.\n    /// </summary>\n    public partial class FSGroupStrategyOptionsV1Beta1\n    {\n        /// <summary>\n        ///     rule is the strategy that will dictate what FSGroup is used in the SecurityContext.\n        /// </summary>\n        [YamlMember(Alias = \"rule\")]\n        [JsonProperty(\"rule\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Rule { get; set; }\n\n        /// <summary>\n        ///     ranges are the allowed ranges of fs groups.  If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.\n        /// </summary>\n        [YamlMember(Alias = \"ranges\")]\n        [JsonProperty(\"ranges\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IDRangeV1Beta1> Ranges { get; } = new List<IDRangeV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ranges\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRanges() => Ranges.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FieldSelectorAttributesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FieldSelectorAttributes indicates a field limited access. Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid.\n    /// </summary>\n    public partial class FieldSelectorAttributesV1\n    {\n        /// <summary>\n        ///     rawSelector is the serialization of a field selector that would be included in a query parameter. Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.\n        /// </summary>\n        [YamlMember(Alias = \"rawSelector\")]\n        [JsonProperty(\"rawSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RawSelector { get; set; }\n\n        /// <summary>\n        ///     requirements is the parsed interpretation of a field selector. All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood.\n        /// </summary>\n        [YamlMember(Alias = \"requirements\")]\n        [JsonProperty(\"requirements\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<FieldSelectorRequirementV1> Requirements { get; } = new List<FieldSelectorRequirementV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Requirements\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequirements() => Requirements.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FieldSelectorRequirementV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FieldSelectorRequirement is a selector that contains values, a key, and an operator that relates the key and values.\n    /// </summary>\n    public partial class FieldSelectorRequirementV1\n    {\n        /// <summary>\n        ///     operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. The list of operators may grow in the future.\n        /// </summary>\n        [YamlMember(Alias = \"operator\")]\n        [JsonProperty(\"operator\", NullValueHandling = NullValueHandling.Include)]\n        public string Operator { get; set; }\n\n        /// <summary>\n        ///     values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty.\n        /// </summary>\n        [YamlMember(Alias = \"values\")]\n        [JsonProperty(\"values\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Values { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Values\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValues() => Values.Count > 0;\n\n        /// <summary>\n        ///     key is the field selector key that the requirement applies to.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FieldsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n    ///     \n    ///     Each key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:&lt;name&gt;', where &lt;name&gt; is the name of a field in a struct, or key in a map 'v:&lt;value&gt;', where &lt;value&gt; is the exact json formatted value of a list item 'i:&lt;index&gt;', where &lt;index&gt; is position of a item in a list 'k:&lt;keys&gt;', where &lt;keys&gt; is a map of  a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n    ///     \n    ///     The exact format is defined in sigs.k8s.io/structured-merge-diff\n    /// </summary>\n    public partial class FieldsV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlexPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.\n    /// </summary>\n    public partial class FlexPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     secretRef is Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     driver is the name of the driver to use for this volume.\n        /// </summary>\n        [YamlMember(Alias = \"driver\")]\n        [JsonProperty(\"driver\", NullValueHandling = NullValueHandling.Include)]\n        public string Driver { get; set; }\n\n        /// <summary>\n        ///     options is Optional: this field holds extra command options if any.\n        /// </summary>\n        [YamlMember(Alias = \"options\")]\n        [JsonProperty(\"options\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Options { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Options\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOptions() => Options.Count > 0;\n\n        /// <summary>\n        ///     readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlexVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\n    /// </summary>\n    public partial class FlexVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public LocalObjectReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     driver is the name of the driver to use for this volume.\n        /// </summary>\n        [YamlMember(Alias = \"driver\")]\n        [JsonProperty(\"driver\", NullValueHandling = NullValueHandling.Include)]\n        public string Driver { get; set; }\n\n        /// <summary>\n        ///     options is Optional: this field holds extra command options if any.\n        /// </summary>\n        [YamlMember(Alias = \"options\")]\n        [JsonProperty(\"options\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Options { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Options\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOptions() => Options.Count > 0;\n\n        /// <summary>\n        ///     readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlockerVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.\n    /// </summary>\n    public partial class FlockerVolumeSourceV1\n    {\n        /// <summary>\n        ///     datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n        /// </summary>\n        [YamlMember(Alias = \"datasetUUID\")]\n        [JsonProperty(\"datasetUUID\", NullValueHandling = NullValueHandling.Ignore)]\n        public string DatasetUUID { get; set; }\n\n        /// <summary>\n        ///     datasetName is Name of the dataset stored as metadata -&gt; name on the dataset for Flocker should be considered as deprecated\n        /// </summary>\n        [YamlMember(Alias = \"datasetName\")]\n        [JsonProperty(\"datasetName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string DatasetName { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowDistinguisherMethodV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowDistinguisherMethod specifies the method of a flow distinguisher.\n    /// </summary>\n    public partial class FlowDistinguisherMethodV1\n    {\n        /// <summary>\n        ///     `type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowDistinguisherMethodV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowDistinguisherMethod specifies the method of a flow distinguisher.\n    /// </summary>\n    public partial class FlowDistinguisherMethodV1Beta3\n    {\n        /// <summary>\n        ///     `type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchemaCondition describes conditions for a FlowSchema.\n    /// </summary>\n    public partial class FlowSchemaConditionV1\n    {\n        /// <summary>\n        ///     `lastTransitionTime` is the last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     `message` is a human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     `type` is the type of the condition. Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     `reason` is a unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     `status` is the status of the condition. Can be True, False, Unknown. Required.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaConditionV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchemaCondition describes conditions for a FlowSchema.\n    /// </summary>\n    public partial class FlowSchemaConditionV1Beta3\n    {\n        /// <summary>\n        ///     `lastTransitionTime` is the last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     `message` is a human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     `type` is the type of the condition. Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     `reason` is a unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     `status` is the status of the condition. Can be True, False, Unknown. Required.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchemaList is a list of FlowSchema objects.\n    /// </summary>\n    [KubeListItem(\"FlowSchema\", \"flowcontrol.apiserver.k8s.io/v1\")]\n    [KubeObject(\"FlowSchemaList\", \"flowcontrol.apiserver.k8s.io/v1\")]\n    public partial class FlowSchemaListV1 : KubeResourceListV1<FlowSchemaV1>\n    {\n        /// <summary>\n        ///     `items` is a list of FlowSchemas.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<FlowSchemaV1> Items { get; } = new List<FlowSchemaV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaListV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchemaList is a list of FlowSchema objects.\n    /// </summary>\n    [KubeListItem(\"FlowSchema\", \"flowcontrol.apiserver.k8s.io/v1beta3\")]\n    [KubeObject(\"FlowSchemaList\", \"flowcontrol.apiserver.k8s.io/v1beta3\")]\n    public partial class FlowSchemaListV1Beta3 : KubeResourceListV1<FlowSchemaV1Beta3>\n    {\n        /// <summary>\n        ///     `items` is a list of FlowSchemas.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<FlowSchemaV1Beta3> Items { get; } = new List<FlowSchemaV1Beta3>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchemaSpec describes how the FlowSchema's specification looks like.\n    /// </summary>\n    public partial class FlowSchemaSpecV1\n    {\n        /// <summary>\n        ///     `distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. `nil` specifies that the distinguisher is disabled and thus will always be the empty string.\n        /// </summary>\n        [YamlMember(Alias = \"distinguisherMethod\")]\n        [JsonProperty(\"distinguisherMethod\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlowDistinguisherMethodV1 DistinguisherMethod { get; set; }\n\n        /// <summary>\n        ///     `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence.  Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default.\n        /// </summary>\n        [YamlMember(Alias = \"matchingPrecedence\")]\n        [JsonProperty(\"matchingPrecedence\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MatchingPrecedence { get; set; }\n\n        /// <summary>\n        ///     `priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required.\n        /// </summary>\n        [YamlMember(Alias = \"priorityLevelConfiguration\")]\n        [JsonProperty(\"priorityLevelConfiguration\", NullValueHandling = NullValueHandling.Include)]\n        public PriorityLevelConfigurationReferenceV1 PriorityLevelConfiguration { get; set; }\n\n        /// <summary>\n        ///     `rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PolicyRulesWithSubjectsV1> Rules { get; } = new List<PolicyRulesWithSubjectsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaSpecV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchemaSpec describes how the FlowSchema's specification looks like.\n    /// </summary>\n    public partial class FlowSchemaSpecV1Beta3\n    {\n        /// <summary>\n        ///     `distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. `nil` specifies that the distinguisher is disabled and thus will always be the empty string.\n        /// </summary>\n        [YamlMember(Alias = \"distinguisherMethod\")]\n        [JsonProperty(\"distinguisherMethod\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlowDistinguisherMethodV1Beta3 DistinguisherMethod { get; set; }\n\n        /// <summary>\n        ///     `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence.  Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default.\n        /// </summary>\n        [YamlMember(Alias = \"matchingPrecedence\")]\n        [JsonProperty(\"matchingPrecedence\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MatchingPrecedence { get; set; }\n\n        /// <summary>\n        ///     `priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required.\n        /// </summary>\n        [YamlMember(Alias = \"priorityLevelConfiguration\")]\n        [JsonProperty(\"priorityLevelConfiguration\", NullValueHandling = NullValueHandling.Include)]\n        public PriorityLevelConfigurationReferenceV1Beta3 PriorityLevelConfiguration { get; set; }\n\n        /// <summary>\n        ///     `rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PolicyRulesWithSubjectsV1Beta3> Rules { get; } = new List<PolicyRulesWithSubjectsV1Beta3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchemaStatus represents the current state of a FlowSchema.\n    /// </summary>\n    public partial class FlowSchemaStatusV1\n    {\n        /// <summary>\n        ///     `conditions` is a list of the current states of FlowSchema.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<FlowSchemaConditionV1> Conditions { get; } = new List<FlowSchemaConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaStatusV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchemaStatus represents the current state of a FlowSchema.\n    /// </summary>\n    public partial class FlowSchemaStatusV1Beta3\n    {\n        /// <summary>\n        ///     `conditions` is a list of the current states of FlowSchema.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<FlowSchemaConditionV1Beta3> Conditions { get; } = new List<FlowSchemaConditionV1Beta3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchema defines the schema of a group of flows. Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a \"flow distinguisher\".\n    /// </summary>\n    [KubeObject(\"FlowSchema\", \"flowcontrol.apiserver.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas\")]\n    [KubeApi(KubeAction.Create, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas\")]\n    [KubeApi(KubeAction.Get, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/flowcontrol.apiserver.k8s.io/v1/watch/flowschemas\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas\")]\n    [KubeApi(KubeAction.Get, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/flowcontrol.apiserver.k8s.io/v1/watch/flowschemas/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status\")]\n    public partial class FlowSchemaV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     `spec` is the specification of the desired behavior of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlowSchemaSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     `status` is the current status of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlowSchemaStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/FlowSchemaV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     FlowSchema defines the schema of a group of flows. Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a \"flow distinguisher\".\n    /// </summary>\n    [KubeObject(\"FlowSchema\", \"flowcontrol.apiserver.k8s.io/v1beta3\")]\n    [KubeApi(KubeAction.List, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas\")]\n    [KubeApi(KubeAction.Create, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas\")]\n    [KubeApi(KubeAction.Get, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/flowschemas\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas\")]\n    [KubeApi(KubeAction.Get, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/flowschemas/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}/status\")]\n    public partial class FlowSchemaV1Beta3 : KubeResourceV1\n    {\n        /// <summary>\n        ///     `spec` is the specification of the desired behavior of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlowSchemaSpecV1Beta3 Spec { get; set; }\n\n        /// <summary>\n        ///     `status` is the current status of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlowSchemaStatusV1Beta3 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ForZoneV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ForZone provides information about which zones should consume this endpoint.\n    /// </summary>\n    public partial class ForZoneV1\n    {\n        /// <summary>\n        ///     name represents the name of the zone.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GCEPersistentDiskVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Persistent Disk resource in Google Compute Engine.\n    ///     \n    ///     A GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class GCEPersistentDiskVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n        /// </summary>\n        [YamlMember(Alias = \"pdName\")]\n        [JsonProperty(\"pdName\", NullValueHandling = NullValueHandling.Include)]\n        public string PdName { get; set; }\n\n        /// <summary>\n        ///     partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n        /// </summary>\n        [YamlMember(Alias = \"partition\")]\n        [JsonProperty(\"partition\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Partition { get; set; }\n\n        /// <summary>\n        ///     readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GRPCActionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class GRPCActionV1\n    {\n        /// <summary>\n        ///     Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n        ///     \n        ///     If this is not specified, the default behavior is defined by gRPC.\n        /// </summary>\n        [YamlMember(Alias = \"service\")]\n        [JsonProperty(\"service\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Service { get; set; }\n\n        /// <summary>\n        ///     Port number of the gRPC service. Number must be in the range 1 to 65535.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Include)]\n        public int Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GitRepoVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.\n    ///     \n    ///     DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.\n    /// </summary>\n    public partial class GitRepoVolumeSourceV1\n    {\n        /// <summary>\n        ///     revision is the commit hash for the specified revision.\n        /// </summary>\n        [YamlMember(Alias = \"revision\")]\n        [JsonProperty(\"revision\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Revision { get; set; }\n\n        /// <summary>\n        ///     directory is the target directory name. Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the git repository.  Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.\n        /// </summary>\n        [YamlMember(Alias = \"directory\")]\n        [JsonProperty(\"directory\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Directory { get; set; }\n\n        /// <summary>\n        ///     repository is the URL\n        /// </summary>\n        [YamlMember(Alias = \"repository\")]\n        [JsonProperty(\"repository\", NullValueHandling = NullValueHandling.Include)]\n        public string Repository { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GlusterfsPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.\n    /// </summary>\n    public partial class GlusterfsPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     endpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n        /// </summary>\n        [YamlMember(Alias = \"endpointsNamespace\")]\n        [JsonProperty(\"endpointsNamespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string EndpointsNamespace { get; set; }\n\n        /// <summary>\n        ///     path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n        /// </summary>\n        [YamlMember(Alias = \"endpoints\")]\n        [JsonProperty(\"endpoints\", NullValueHandling = NullValueHandling.Include)]\n        public string Endpoints { get; set; }\n\n        /// <summary>\n        ///     readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GlusterfsVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.\n    /// </summary>\n    public partial class GlusterfsVolumeSourceV1\n    {\n        /// <summary>\n        ///     path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n        /// </summary>\n        [YamlMember(Alias = \"endpoints\")]\n        [JsonProperty(\"endpoints\", NullValueHandling = NullValueHandling.Include)]\n        public string Endpoints { get; set; }\n\n        /// <summary>\n        ///     readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GroupSubjectV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     GroupSubject holds detailed information for group-kind subject.\n    /// </summary>\n    public partial class GroupSubjectV1\n    {\n        /// <summary>\n        ///     name is the user group that matches, or \"*\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GroupSubjectV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     GroupSubject holds detailed information for group-kind subject.\n    /// </summary>\n    public partial class GroupSubjectV1Beta3\n    {\n        /// <summary>\n        ///     name is the user group that matches, or \"*\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GroupVersionForDiscoveryV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensibility.\n    /// </summary>\n    public partial class GroupVersionForDiscoveryV1\n    {\n        /// <summary>\n        ///     groupVersion specifies the API group and version in the form \"group/version\"\n        /// </summary>\n        [YamlMember(Alias = \"groupVersion\")]\n        [JsonProperty(\"groupVersion\", NullValueHandling = NullValueHandling.Include)]\n        public string GroupVersion { get; set; }\n\n        /// <summary>\n        ///     version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion.\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Include)]\n        public string Version { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/GroupVersionResourceV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The names of the group, the version, and the resource.\n    /// </summary>\n    public partial class GroupVersionResourceV1Alpha1\n    {\n        /// <summary>\n        ///     The name of the resource.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Resource { get; set; }\n\n        /// <summary>\n        ///     The name of the version.\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Version { get; set; }\n\n        /// <summary>\n        ///     The name of the group.\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HPAScalingPolicyV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HPAScalingPolicy is a single policy which must hold true for a specified past interval.\n    /// </summary>\n    public partial class HPAScalingPolicyV2\n    {\n        /// <summary>\n        ///     type is used to specify the scaling policy.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     value contains the amount of change which is permitted by the policy. It must be greater than zero\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Include)]\n        public int Value { get; set; }\n\n        /// <summary>\n        ///     periodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min).\n        /// </summary>\n        [YamlMember(Alias = \"periodSeconds\")]\n        [JsonProperty(\"periodSeconds\", NullValueHandling = NullValueHandling.Include)]\n        public int PeriodSeconds { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HPAScalingRulesV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.\n    /// </summary>\n    public partial class HPAScalingRulesV2\n    {\n        /// <summary>\n        ///     policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\n        /// </summary>\n        [YamlMember(Alias = \"policies\")]\n        [JsonProperty(\"policies\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HPAScalingPolicyV2> Policies { get; } = new List<HPAScalingPolicyV2>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Policies\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePolicies() => Policies.Count > 0;\n\n        /// <summary>\n        ///     stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).\n        /// </summary>\n        [YamlMember(Alias = \"stabilizationWindowSeconds\")]\n        [JsonProperty(\"stabilizationWindowSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? StabilizationWindowSeconds { get; set; }\n\n        /// <summary>\n        ///     selectPolicy is used to specify which policy should be used. If not set, the default value Max is used.\n        /// </summary>\n        [YamlMember(Alias = \"selectPolicy\")]\n        [JsonProperty(\"selectPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SelectPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HTTPGetActionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HTTPGetAction describes an action based on HTTP Get requests.\n    /// </summary>\n    public partial class HTTPGetActionV1\n    {\n        /// <summary>\n        ///     Scheme to use for connecting to the host. Defaults to HTTP.\n        /// </summary>\n        [YamlMember(Alias = \"scheme\")]\n        [JsonProperty(\"scheme\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Scheme { get; set; }\n\n        /// <summary>\n        ///     Path to access on the HTTP server.\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     Custom headers to set in the request. HTTP allows repeated headers.\n        /// </summary>\n        [YamlMember(Alias = \"httpHeaders\")]\n        [JsonProperty(\"httpHeaders\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HTTPHeaderV1> HttpHeaders { get; } = new List<HTTPHeaderV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"HttpHeaders\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHttpHeaders() => HttpHeaders.Count > 0;\n\n        /// <summary>\n        ///     Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.\n        /// </summary>\n        [YamlMember(Alias = \"host\")]\n        [JsonProperty(\"host\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Host { get; set; }\n\n        /// <summary>\n        ///     Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Include)]\n        public Int32OrStringV1 Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HTTPHeaderV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HTTPHeader describes a custom header to be used in HTTP probes\n    /// </summary>\n    public partial class HTTPHeaderV1\n    {\n        /// <summary>\n        ///     The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The header field value\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Include)]\n        public string Value { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HTTPIngressPathV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HTTPIngressPath associates a path with a backend. Incoming urls matching the path are forwarded to the backend.\n    /// </summary>\n    public partial class HTTPIngressPathV1\n    {\n        /// <summary>\n        ///     backend defines the referenced service endpoint to which the traffic will be forwarded to.\n        /// </summary>\n        [YamlMember(Alias = \"backend\")]\n        [JsonProperty(\"backend\", NullValueHandling = NullValueHandling.Include)]\n        public IngressBackendV1 Backend { get; set; }\n\n        /// <summary>\n        ///     pathType determines the interpretation of the path matching. PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is\n        ///       done on a path element by element basis. A path element refers is the\n        ///       list of labels in the path split by the '/' separator. A request is a\n        ///       match for path p if every p is an element-wise prefix of p of the\n        ///       request path. Note that if the last element of the path is a substring\n        ///       of the last element in request path, it is not a match (e.g. /foo/bar\n        ///       matches /foo/bar/baz, but does not match /foo/barbaz).\n        ///     * ImplementationSpecific: Interpretation of the Path matching is up to\n        ///       the IngressClass. Implementations can treat this as a separate PathType\n        ///       or treat it identically to Prefix or Exact path types.\n        ///     Implementations are required to support all path types.\n        /// </summary>\n        [YamlMember(Alias = \"pathType\")]\n        [JsonProperty(\"pathType\", NullValueHandling = NullValueHandling.Include)]\n        public string PathType { get; set; }\n\n        /// <summary>\n        ///     path is matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/' and must be present when using PathType with value \"Exact\" or \"Prefix\".\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Path { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HTTPIngressPathV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.\n    /// </summary>\n    public partial class HTTPIngressPathV1Beta1\n    {\n        /// <summary>\n        ///     Backend defines the referenced service endpoint to which the traffic will be forwarded to.\n        /// </summary>\n        [YamlMember(Alias = \"backend\")]\n        [JsonProperty(\"backend\", NullValueHandling = NullValueHandling.Include)]\n        public IngressBackendV1Beta1 Backend { get; set; }\n\n        /// <summary>\n        ///     Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend.\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Path { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HTTPIngressRuleValueV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://&lt;host&gt;/&lt;path&gt;?&lt;searchpart&gt; -&gt; backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.\n    /// </summary>\n    public partial class HTTPIngressRuleValueV1\n    {\n        /// <summary>\n        ///     paths is a collection of paths that map requests to backends.\n        /// </summary>\n        [YamlMember(Alias = \"paths\")]\n        [JsonProperty(\"paths\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HTTPIngressPathV1> Paths { get; } = new List<HTTPIngressPathV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HTTPIngressRuleValueV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://&lt;host&gt;/&lt;path&gt;?&lt;searchpart&gt; -&gt; backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.\n    /// </summary>\n    public partial class HTTPIngressRuleValueV1Beta1\n    {\n        /// <summary>\n        ///     A collection of paths that map requests to backends.\n        /// </summary>\n        [YamlMember(Alias = \"paths\")]\n        [JsonProperty(\"paths\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HTTPIngressPathV1Beta1> Paths { get; } = new List<HTTPIngressPathV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HandlerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Handler defines a specific action that should be taken\n    /// </summary>\n    public partial class HandlerV1\n    {\n        /// <summary>\n        ///     One and only one of the following should be specified. Exec specifies the action to take.\n        /// </summary>\n        [YamlMember(Alias = \"exec\")]\n        [JsonProperty(\"exec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExecActionV1 Exec { get; set; }\n\n        /// <summary>\n        ///     HTTPGet specifies the http request to perform.\n        /// </summary>\n        [YamlMember(Alias = \"httpGet\")]\n        [JsonProperty(\"httpGet\", NullValueHandling = NullValueHandling.Ignore)]\n        public HTTPGetActionV1 HttpGet { get; set; }\n\n        /// <summary>\n        ///     TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported\n        /// </summary>\n        [YamlMember(Alias = \"tcpSocket\")]\n        [JsonProperty(\"tcpSocket\", NullValueHandling = NullValueHandling.Ignore)]\n        public TCPSocketActionV1 TcpSocket { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerBehaviorV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively).\n    /// </summary>\n    public partial class HorizontalPodAutoscalerBehaviorV2\n    {\n        /// <summary>\n        ///     scaleDown is scaling policy for scaling Down. If not set, the default value is to allow to scale down to minReplicas pods, with a 300 second stabilization window (i.e., the highest recommendation for the last 300sec is used).\n        /// </summary>\n        [YamlMember(Alias = \"scaleDown\")]\n        [JsonProperty(\"scaleDown\", NullValueHandling = NullValueHandling.Ignore)]\n        public HPAScalingRulesV2 ScaleDown { get; set; }\n\n        /// <summary>\n        ///     scaleUp is scaling policy for scaling Up. If not set, the default value is the higher of:\n        ///       * increase no more than 4 pods per 60 seconds\n        ///       * double the number of pods per 60 seconds\n        ///     No stabilization is used.\n        /// </summary>\n        [YamlMember(Alias = \"scaleUp\")]\n        [JsonProperty(\"scaleUp\", NullValueHandling = NullValueHandling.Ignore)]\n        public HPAScalingRulesV2 ScaleUp { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerConditionV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.\n    /// </summary>\n    public partial class HorizontalPodAutoscalerConditionV2\n    {\n        /// <summary>\n        ///     lastTransitionTime is the last time the condition transitioned from one status to another\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     message is a human-readable explanation containing details about the transition\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     type describes the current condition\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     reason is the reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     status is the status of the condition (True, False, Unknown)\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerConditionV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.\n    /// </summary>\n    public partial class HorizontalPodAutoscalerConditionV2Beta1\n    {\n        /// <summary>\n        ///     lastTransitionTime is the last time the condition transitioned from one status to another\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     message is a human-readable explanation containing details about the transition\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     type describes the current condition\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     reason is the reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     status is the status of the condition (True, False, Unknown)\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     list of horizontal pod autoscaler objects.\n    /// </summary>\n    [KubeListItem(\"HorizontalPodAutoscaler\", \"autoscaling/v1\")]\n    [KubeObject(\"HorizontalPodAutoscalerList\", \"autoscaling/v1\")]\n    public partial class HorizontalPodAutoscalerListV1 : KubeResourceListV1<HorizontalPodAutoscalerV1>\n    {\n        /// <summary>\n        ///     items is the list of horizontal pod autoscaler objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<HorizontalPodAutoscalerV1> Items { get; } = new List<HorizontalPodAutoscalerV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerListV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects.\n    /// </summary>\n    [KubeListItem(\"HorizontalPodAutoscaler\", \"autoscaling/v2\")]\n    [KubeObject(\"HorizontalPodAutoscalerList\", \"autoscaling/v2\")]\n    public partial class HorizontalPodAutoscalerListV2 : KubeResourceListV1<HorizontalPodAutoscalerV2>\n    {\n        /// <summary>\n        ///     items is the list of horizontal pod autoscaler objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<HorizontalPodAutoscalerV2> Items { get; } = new List<HorizontalPodAutoscalerV2>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerListV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects.\n    /// </summary>\n    [KubeListItem(\"HorizontalPodAutoscaler\", \"autoscaling/v2beta1\")]\n    [KubeObject(\"HorizontalPodAutoscalerList\", \"autoscaling/v2beta1\")]\n    public partial class HorizontalPodAutoscalerListV2Beta1 : KubeResourceListV1<HorizontalPodAutoscalerV2Beta1>\n    {\n        /// <summary>\n        ///     items is the list of horizontal pod autoscaler objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<HorizontalPodAutoscalerV2Beta1> Items { get; } = new List<HorizontalPodAutoscalerV2Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     specification of a horizontal pod autoscaler.\n    /// </summary>\n    public partial class HorizontalPodAutoscalerSpecV1\n    {\n        /// <summary>\n        ///     targetCPUUtilizationPercentage is the target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.\n        /// </summary>\n        [YamlMember(Alias = \"targetCPUUtilizationPercentage\")]\n        [JsonProperty(\"targetCPUUtilizationPercentage\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? TargetCPUUtilizationPercentage { get; set; }\n\n        /// <summary>\n        ///     reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption and will set the desired number of pods by using its Scale subresource.\n        /// </summary>\n        [YamlMember(Alias = \"scaleTargetRef\")]\n        [JsonProperty(\"scaleTargetRef\", NullValueHandling = NullValueHandling.Include)]\n        public CrossVersionObjectReferenceV1 ScaleTargetRef { get; set; }\n\n        /// <summary>\n        ///     maxReplicas is the upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.\n        /// </summary>\n        [YamlMember(Alias = \"maxReplicas\")]\n        [JsonProperty(\"maxReplicas\", NullValueHandling = NullValueHandling.Include)]\n        public int MaxReplicas { get; set; }\n\n        /// <summary>\n        ///     minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down.  It defaults to 1 pod.  minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured.  Scaling is active as long as at least one metric value is available.\n        /// </summary>\n        [YamlMember(Alias = \"minReplicas\")]\n        [JsonProperty(\"minReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReplicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerSpecV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.\n    /// </summary>\n    public partial class HorizontalPodAutoscalerSpecV2\n    {\n        /// <summary>\n        ///     scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics should be collected, as well as to actually change the replica count.\n        /// </summary>\n        [YamlMember(Alias = \"scaleTargetRef\")]\n        [JsonProperty(\"scaleTargetRef\", NullValueHandling = NullValueHandling.Include)]\n        public CrossVersionObjectReferenceV2 ScaleTargetRef { get; set; }\n\n        /// <summary>\n        ///     behavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). If not set, the default HPAScalingRules for scale up and scale down are used.\n        /// </summary>\n        [YamlMember(Alias = \"behavior\")]\n        [JsonProperty(\"behavior\", NullValueHandling = NullValueHandling.Ignore)]\n        public HorizontalPodAutoscalerBehaviorV2 Behavior { get; set; }\n\n        /// <summary>\n        ///     maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.\n        /// </summary>\n        [YamlMember(Alias = \"maxReplicas\")]\n        [JsonProperty(\"maxReplicas\", NullValueHandling = NullValueHandling.Include)]\n        public int MaxReplicas { get; set; }\n\n        /// <summary>\n        ///     metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used).  The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods.  Ergo, metrics used must decrease as the pod count is increased, and vice-versa.  See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.\n        /// </summary>\n        [YamlMember(Alias = \"metrics\")]\n        [JsonProperty(\"metrics\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MetricSpecV2> Metrics { get; } = new List<MetricSpecV2>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Metrics\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMetrics() => Metrics.Count > 0;\n\n        /// <summary>\n        ///     minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down.  It defaults to 1 pod.  minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured.  Scaling is active as long as at least one metric value is available.\n        /// </summary>\n        [YamlMember(Alias = \"minReplicas\")]\n        [JsonProperty(\"minReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReplicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerSpecV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.\n    /// </summary>\n    public partial class HorizontalPodAutoscalerSpecV2Beta1\n    {\n        /// <summary>\n        ///     scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics should be collected, as well as to actually change the replica count.\n        /// </summary>\n        [YamlMember(Alias = \"scaleTargetRef\")]\n        [JsonProperty(\"scaleTargetRef\", NullValueHandling = NullValueHandling.Include)]\n        public CrossVersionObjectReferenceV2Beta1 ScaleTargetRef { get; set; }\n\n        /// <summary>\n        ///     maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.\n        /// </summary>\n        [YamlMember(Alias = \"maxReplicas\")]\n        [JsonProperty(\"maxReplicas\", NullValueHandling = NullValueHandling.Include)]\n        public int MaxReplicas { get; set; }\n\n        /// <summary>\n        ///     metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used).  The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods.  Ergo, metrics used must decrease as the pod count is increased, and vice-versa.  See the individual metric source types for more information about how each type of metric must respond.\n        /// </summary>\n        [YamlMember(Alias = \"metrics\")]\n        [JsonProperty(\"metrics\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MetricSpecV2Beta1> Metrics { get; } = new List<MetricSpecV2Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Metrics\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMetrics() => Metrics.Count > 0;\n\n        /// <summary>\n        ///     minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod.\n        /// </summary>\n        [YamlMember(Alias = \"minReplicas\")]\n        [JsonProperty(\"minReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReplicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     current status of a horizontal pod autoscaler\n    /// </summary>\n    public partial class HorizontalPodAutoscalerStatusV1\n    {\n        /// <summary>\n        ///     currentCPUUtilizationPercentage is the current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.\n        /// </summary>\n        [YamlMember(Alias = \"currentCPUUtilizationPercentage\")]\n        [JsonProperty(\"currentCPUUtilizationPercentage\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CurrentCPUUtilizationPercentage { get; set; }\n\n        /// <summary>\n        ///     lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed.\n        /// </summary>\n        [YamlMember(Alias = \"lastScaleTime\")]\n        [JsonProperty(\"lastScaleTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastScaleTime { get; set; }\n\n        /// <summary>\n        ///     observedGeneration is the most recent generation observed by this autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     currentReplicas is the current number of replicas of pods managed by this autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"currentReplicas\")]\n        [JsonProperty(\"currentReplicas\", NullValueHandling = NullValueHandling.Include)]\n        public int CurrentReplicas { get; set; }\n\n        /// <summary>\n        ///     desiredReplicas is the  desired number of replicas of pods managed by this autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"desiredReplicas\")]\n        [JsonProperty(\"desiredReplicas\", NullValueHandling = NullValueHandling.Include)]\n        public int DesiredReplicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerStatusV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.\n    /// </summary>\n    public partial class HorizontalPodAutoscalerStatusV2\n    {\n        /// <summary>\n        ///     lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, used by the autoscaler to control how often the number of pods is changed.\n        /// </summary>\n        [YamlMember(Alias = \"lastScaleTime\")]\n        [JsonProperty(\"lastScaleTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastScaleTime { get; set; }\n\n        /// <summary>\n        ///     observedGeneration is the most recent generation observed by this autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HorizontalPodAutoscalerConditionV2> Conditions { get; } = new List<HorizontalPodAutoscalerConditionV2>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     currentMetrics is the last read state of the metrics used by this autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"currentMetrics\")]\n        [JsonProperty(\"currentMetrics\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MetricStatusV2> CurrentMetrics { get; } = new List<MetricStatusV2>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"CurrentMetrics\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCurrentMetrics() => CurrentMetrics.Count > 0;\n\n        /// <summary>\n        ///     currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"currentReplicas\")]\n        [JsonProperty(\"currentReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CurrentReplicas { get; set; }\n\n        /// <summary>\n        ///     desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"desiredReplicas\")]\n        [JsonProperty(\"desiredReplicas\", NullValueHandling = NullValueHandling.Include)]\n        public int DesiredReplicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerStatusV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.\n    /// </summary>\n    public partial class HorizontalPodAutoscalerStatusV2Beta1\n    {\n        /// <summary>\n        ///     lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, used by the autoscaler to control how often the number of pods is changed.\n        /// </summary>\n        [YamlMember(Alias = \"lastScaleTime\")]\n        [JsonProperty(\"lastScaleTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastScaleTime { get; set; }\n\n        /// <summary>\n        ///     observedGeneration is the most recent generation observed by this autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HorizontalPodAutoscalerConditionV2Beta1> Conditions { get; } = new List<HorizontalPodAutoscalerConditionV2Beta1>();\n\n        /// <summary>\n        ///     currentMetrics is the last read state of the metrics used by this autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"currentMetrics\")]\n        [JsonProperty(\"currentMetrics\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MetricStatusV2Beta1> CurrentMetrics { get; } = new List<MetricStatusV2Beta1>();\n\n        /// <summary>\n        ///     currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"currentReplicas\")]\n        [JsonProperty(\"currentReplicas\", NullValueHandling = NullValueHandling.Include)]\n        public int CurrentReplicas { get; set; }\n\n        /// <summary>\n        ///     desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"desiredReplicas\")]\n        [JsonProperty(\"desiredReplicas\", NullValueHandling = NullValueHandling.Include)]\n        public int DesiredReplicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     configuration of a horizontal pod autoscaler.\n    /// </summary>\n    [KubeObject(\"HorizontalPodAutoscaler\", \"autoscaling/v1\")]\n    [KubeApi(KubeAction.List, \"apis/autoscaling/v1/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.WatchList, \"apis/autoscaling/v1/watch/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.List, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Create, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Get, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Get, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    public partial class HorizontalPodAutoscalerV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec defines the behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public HorizontalPodAutoscalerSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     status is the current information about the autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public HorizontalPodAutoscalerStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.\n    /// </summary>\n    [KubeObject(\"HorizontalPodAutoscaler\", \"autoscaling/v2\")]\n    [KubeApi(KubeAction.List, \"apis/autoscaling/v2/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.WatchList, \"apis/autoscaling/v2/watch/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.List, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Create, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Get, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/autoscaling/v2/watch/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Get, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/autoscaling/v2/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    public partial class HorizontalPodAutoscalerV2 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec is the specification for the behaviour of the autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public HorizontalPodAutoscalerSpecV2 Spec { get; set; }\n\n        /// <summary>\n        ///     status is the current information about the autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public HorizontalPodAutoscalerStatusV2 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HorizontalPodAutoscalerV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.\n    /// </summary>\n    [KubeObject(\"HorizontalPodAutoscaler\", \"autoscaling/v2beta1\")]\n    [KubeApi(KubeAction.List, \"apis/autoscaling/v2beta1/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.WatchList, \"apis/autoscaling/v2beta1/watch/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.List, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Create, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Get, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/autoscaling/v2beta1/watch/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers\")]\n    [KubeApi(KubeAction.Get, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/autoscaling/v2beta1/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\")]\n    public partial class HorizontalPodAutoscalerV2Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec is the specification for the behaviour of the autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public HorizontalPodAutoscalerSpecV2Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     status is the current information about the autoscaler.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public HorizontalPodAutoscalerStatusV2Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HostAliasV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\n    /// </summary>\n    public partial class HostAliasV1\n    {\n        /// <summary>\n        ///     IP address of the host file entry.\n        /// </summary>\n        [YamlMember(Alias = \"ip\")]\n        [JsonProperty(\"ip\", NullValueHandling = NullValueHandling.Include)]\n        public string Ip { get; set; }\n\n        /// <summary>\n        ///     Hostnames for the above IP address.\n        /// </summary>\n        [YamlMember(Alias = \"hostnames\")]\n        [JsonProperty(\"hostnames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Hostnames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Hostnames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHostnames() => Hostnames.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HostIPV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HostIP represents a single IP address allocated to the host.\n    /// </summary>\n    public partial class HostIPV1\n    {\n        /// <summary>\n        ///     IP is the IP address assigned to the host\n        /// </summary>\n        [YamlMember(Alias = \"ip\")]\n        [JsonProperty(\"ip\", NullValueHandling = NullValueHandling.Include)]\n        public string Ip { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HostPathVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.\n    /// </summary>\n    public partial class HostPathVolumeSourceV1\n    {\n        /// <summary>\n        ///     type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/HostPortRangeV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     HostPortRange defines a range of host ports that will be enabled by a policy for pods to use.  It requires both the start and end to be defined. Deprecated: use HostPortRange from policy API Group instead.\n    /// </summary>\n    public partial class HostPortRangeV1Beta1\n    {\n        /// <summary>\n        ///     min is the start of the range, inclusive.\n        /// </summary>\n        [YamlMember(Alias = \"min\")]\n        [JsonProperty(\"min\", NullValueHandling = NullValueHandling.Include)]\n        public int Min { get; set; }\n\n        /// <summary>\n        ///     max is the end of the range, inclusive.\n        /// </summary>\n        [YamlMember(Alias = \"max\")]\n        [JsonProperty(\"max\", NullValueHandling = NullValueHandling.Include)]\n        public int Max { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IDRangeV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IDRange provides a min/max of an allowed range of IDs. Deprecated: use IDRange from policy API Group instead.\n    /// </summary>\n    public partial class IDRangeV1Beta1\n    {\n        /// <summary>\n        ///     min is the start of the range, inclusive.\n        /// </summary>\n        [YamlMember(Alias = \"min\")]\n        [JsonProperty(\"min\", NullValueHandling = NullValueHandling.Include)]\n        public long Min { get; set; }\n\n        /// <summary>\n        ///     max is the end of the range, inclusive.\n        /// </summary>\n        [YamlMember(Alias = \"max\")]\n        [JsonProperty(\"max\", NullValueHandling = NullValueHandling.Include)]\n        public long Max { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IPAddressListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IPAddressList contains a list of IPAddress.\n    /// </summary>\n    [KubeListItem(\"IPAddress\", \"networking.k8s.io/v1beta1\")]\n    [KubeObject(\"IPAddressList\", \"networking.k8s.io/v1beta1\")]\n    public partial class IPAddressListV1Beta1 : KubeResourceListV1<IPAddressV1Beta1>\n    {\n        /// <summary>\n        ///     items is the list of IPAddresses.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<IPAddressV1Beta1> Items { get; } = new List<IPAddressV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IPAddressSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IPAddressSpec describe the attributes in an IP Address.\n    /// </summary>\n    public partial class IPAddressSpecV1Beta1\n    {\n        /// <summary>\n        ///     ParentRef references the resource that an IPAddress is attached to. An IPAddress must reference a parent object.\n        /// </summary>\n        [YamlMember(Alias = \"parentRef\")]\n        [JsonProperty(\"parentRef\", NullValueHandling = NullValueHandling.Include)]\n        public ParentReferenceV1Beta1 ParentRef { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IPAddressV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1\n    /// </summary>\n    [KubeObject(\"IPAddress\", \"networking.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/networking.k8s.io/v1beta1/ipaddresses\")]\n    [KubeApi(KubeAction.Create, \"apis/networking.k8s.io/v1beta1/ipaddresses\")]\n    [KubeApi(KubeAction.Get, \"apis/networking.k8s.io/v1beta1/ipaddresses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/networking.k8s.io/v1beta1/ipaddresses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/networking.k8s.io/v1beta1/ipaddresses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/networking.k8s.io/v1beta1/ipaddresses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/networking.k8s.io/v1beta1/watch/ipaddresses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/networking.k8s.io/v1beta1/ipaddresses\")]\n    [KubeApi(KubeAction.Watch, \"apis/networking.k8s.io/v1beta1/watch/ipaddresses/{name}\")]\n    public partial class IPAddressV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public IPAddressSpecV1Beta1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IPBlockV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IPBlock describes a particular CIDR (Ex. \"192.168.1.0/24\",\"2001:db8::/64\") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule.\n    /// </summary>\n    public partial class IPBlockV1\n    {\n        /// <summary>\n        ///     cidr is a string representing the IPBlock Valid examples are \"192.168.1.0/24\" or \"2001:db8::/64\"\n        /// </summary>\n        [YamlMember(Alias = \"cidr\")]\n        [JsonProperty(\"cidr\", NullValueHandling = NullValueHandling.Include)]\n        public string Cidr { get; set; }\n\n        /// <summary>\n        ///     except is a slice of CIDRs that should not be included within an IPBlock Valid examples are \"192.168.1.0/24\" or \"2001:db8::/64\" Except values will be rejected if they are outside the cidr range\n        /// </summary>\n        [YamlMember(Alias = \"except\")]\n        [JsonProperty(\"except\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Except { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Except\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExcept() => Except.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IPBlockV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED 1.9 - This group version of IPBlock is deprecated by networking/v1/IPBlock. IPBlock describes a particular CIDR (Ex. \"192.168.1.1/24\") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule.\n    /// </summary>\n    public partial class IPBlockV1Beta1\n    {\n        /// <summary>\n        ///     CIDR is a string representing the IP Block Valid examples are \"192.168.1.1/24\"\n        /// </summary>\n        [YamlMember(Alias = \"cidr\")]\n        [JsonProperty(\"cidr\", NullValueHandling = NullValueHandling.Include)]\n        public string Cidr { get; set; }\n\n        /// <summary>\n        ///     Except is a slice of CIDRs that should not be included within an IP Block Valid examples are \"192.168.1.1/24\" Except values will be rejected if they are outside the CIDR range\n        /// </summary>\n        [YamlMember(Alias = \"except\")]\n        [JsonProperty(\"except\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Except { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Except\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExcept() => Except.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ISCSIPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class ISCSIPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.\n        /// </summary>\n        [YamlMember(Alias = \"initiatorName\")]\n        [JsonProperty(\"initiatorName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string InitiatorName { get; set; }\n\n        /// <summary>\n        ///     iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\n        /// </summary>\n        [YamlMember(Alias = \"iscsiInterface\")]\n        [JsonProperty(\"iscsiInterface\", NullValueHandling = NullValueHandling.Ignore)]\n        public string IscsiInterface { get; set; }\n\n        /// <summary>\n        ///     secretRef is the CHAP Secret for iSCSI target and initiator authentication\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n        /// </summary>\n        [YamlMember(Alias = \"targetPortal\")]\n        [JsonProperty(\"targetPortal\", NullValueHandling = NullValueHandling.Include)]\n        public string TargetPortal { get; set; }\n\n        /// <summary>\n        ///     chapAuthSession defines whether support iSCSI Session CHAP authentication\n        /// </summary>\n        [YamlMember(Alias = \"chapAuthSession\")]\n        [JsonProperty(\"chapAuthSession\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ChapAuthSession { get; set; }\n\n        /// <summary>\n        ///     iqn is Target iSCSI Qualified Name.\n        /// </summary>\n        [YamlMember(Alias = \"iqn\")]\n        [JsonProperty(\"iqn\", NullValueHandling = NullValueHandling.Include)]\n        public string Iqn { get; set; }\n\n        /// <summary>\n        ///     lun is iSCSI Target Lun number.\n        /// </summary>\n        [YamlMember(Alias = \"lun\")]\n        [JsonProperty(\"lun\", NullValueHandling = NullValueHandling.Include)]\n        public int Lun { get; set; }\n\n        /// <summary>\n        ///     portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n        /// </summary>\n        [YamlMember(Alias = \"portals\")]\n        [JsonProperty(\"portals\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Portals { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Portals\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePortals() => Portals.Count > 0;\n\n        /// <summary>\n        ///     chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n        /// </summary>\n        [YamlMember(Alias = \"chapAuthDiscovery\")]\n        [JsonProperty(\"chapAuthDiscovery\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ChapAuthDiscovery { get; set; }\n\n        /// <summary>\n        ///     readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ISCSIVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class ISCSIVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface &lt;target portal&gt;:&lt;volume name&gt; will be created for the connection.\n        /// </summary>\n        [YamlMember(Alias = \"initiatorName\")]\n        [JsonProperty(\"initiatorName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string InitiatorName { get; set; }\n\n        /// <summary>\n        ///     iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\n        /// </summary>\n        [YamlMember(Alias = \"iscsiInterface\")]\n        [JsonProperty(\"iscsiInterface\", NullValueHandling = NullValueHandling.Ignore)]\n        public string IscsiInterface { get; set; }\n\n        /// <summary>\n        ///     secretRef is the CHAP Secret for iSCSI target and initiator authentication\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public LocalObjectReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n        /// </summary>\n        [YamlMember(Alias = \"targetPortal\")]\n        [JsonProperty(\"targetPortal\", NullValueHandling = NullValueHandling.Include)]\n        public string TargetPortal { get; set; }\n\n        /// <summary>\n        ///     chapAuthSession defines whether support iSCSI Session CHAP authentication\n        /// </summary>\n        [YamlMember(Alias = \"chapAuthSession\")]\n        [JsonProperty(\"chapAuthSession\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ChapAuthSession { get; set; }\n\n        /// <summary>\n        ///     iqn is the target iSCSI Qualified Name.\n        /// </summary>\n        [YamlMember(Alias = \"iqn\")]\n        [JsonProperty(\"iqn\", NullValueHandling = NullValueHandling.Include)]\n        public string Iqn { get; set; }\n\n        /// <summary>\n        ///     lun represents iSCSI Target Lun number.\n        /// </summary>\n        [YamlMember(Alias = \"lun\")]\n        [JsonProperty(\"lun\", NullValueHandling = NullValueHandling.Include)]\n        public int Lun { get; set; }\n\n        /// <summary>\n        ///     portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\n        /// </summary>\n        [YamlMember(Alias = \"portals\")]\n        [JsonProperty(\"portals\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Portals { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Portals\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePortals() => Portals.Count > 0;\n\n        /// <summary>\n        ///     chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n        /// </summary>\n        [YamlMember(Alias = \"chapAuthDiscovery\")]\n        [JsonProperty(\"chapAuthDiscovery\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ChapAuthDiscovery { get; set; }\n\n        /// <summary>\n        ///     readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ImageVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ImageVolumeSource represents a image volume resource.\n    /// </summary>\n    public partial class ImageVolumeSourceV1\n    {\n        /// <summary>\n        ///     Required: Image or artifact reference to be used. Behaves in the same way as pod.spec.containers[*].image. Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.\n        /// </summary>\n        [YamlMember(Alias = \"reference\")]\n        [JsonProperty(\"reference\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reference { get; set; }\n\n        /// <summary>\n        ///     Policy for pulling OCI objects. Possible values are: Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\n        /// </summary>\n        [YamlMember(Alias = \"pullPolicy\")]\n        [JsonProperty(\"pullPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PullPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/InfoVersion.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Info contains versioning information. how we'll want to distribute that information.\n    /// </summary>\n    public partial class InfoVersion\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"buildDate\")]\n        [JsonProperty(\"buildDate\", NullValueHandling = NullValueHandling.Include)]\n        public string BuildDate { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"gitTreeState\")]\n        [JsonProperty(\"gitTreeState\", NullValueHandling = NullValueHandling.Include)]\n        public string GitTreeState { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"platform\")]\n        [JsonProperty(\"platform\", NullValueHandling = NullValueHandling.Include)]\n        public string Platform { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"gitVersion\")]\n        [JsonProperty(\"gitVersion\", NullValueHandling = NullValueHandling.Include)]\n        public string GitVersion { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"goVersion\")]\n        [JsonProperty(\"goVersion\", NullValueHandling = NullValueHandling.Include)]\n        public string GoVersion { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"compiler\")]\n        [JsonProperty(\"compiler\", NullValueHandling = NullValueHandling.Include)]\n        public string Compiler { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"major\")]\n        [JsonProperty(\"major\", NullValueHandling = NullValueHandling.Include)]\n        public string Major { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minor\")]\n        [JsonProperty(\"minor\", NullValueHandling = NullValueHandling.Include)]\n        public string Minor { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"gitCommit\")]\n        [JsonProperty(\"gitCommit\", NullValueHandling = NullValueHandling.Include)]\n        public string GitCommit { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressBackendV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressBackend describes all endpoints for a given service and port.\n    /// </summary>\n    public partial class IngressBackendV1\n    {\n        /// <summary>\n        ///     resource is an ObjectRef to another Kubernetes resource in the namespace of the Ingress object. If resource is specified, a service.Name and service.Port must not be specified. This is a mutually exclusive setting with \"Service\".\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public TypedLocalObjectReferenceV1 Resource { get; set; }\n\n        /// <summary>\n        ///     service references a service as a backend. This is a mutually exclusive setting with \"Resource\".\n        /// </summary>\n        [YamlMember(Alias = \"service\")]\n        [JsonProperty(\"service\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressServiceBackendV1 Service { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressBackendV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressBackend describes all endpoints for a given service and port.\n    /// </summary>\n    public partial class IngressBackendV1Beta1\n    {\n        /// <summary>\n        ///     Specifies the name of the referenced service.\n        /// </summary>\n        [YamlMember(Alias = \"serviceName\")]\n        [JsonProperty(\"serviceName\", NullValueHandling = NullValueHandling.Include)]\n        public string ServiceName { get; set; }\n\n        /// <summary>\n        ///     Specifies the port of the referenced service.\n        /// </summary>\n        [YamlMember(Alias = \"servicePort\")]\n        [JsonProperty(\"servicePort\", NullValueHandling = NullValueHandling.Include)]\n        public Int32OrStringV1 ServicePort { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressClassListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressClassList is a collection of IngressClasses.\n    /// </summary>\n    [KubeListItem(\"IngressClass\", \"networking.k8s.io/v1\")]\n    [KubeObject(\"IngressClassList\", \"networking.k8s.io/v1\")]\n    public partial class IngressClassListV1 : KubeResourceListV1<IngressClassV1>\n    {\n        /// <summary>\n        ///     items is the list of IngressClasses.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<IngressClassV1> Items { get; } = new List<IngressClassV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressClassParametersReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.\n    /// </summary>\n    public partial class IngressClassParametersReferenceV1\n    {\n        /// <summary>\n        ///     kind is the type of resource being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     name is the name of resource being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     namespace is the namespace of the resource being referenced. This field is required when scope is set to \"Namespace\" and must be unset when scope is set to \"Cluster\".\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     scope represents if this refers to a cluster or namespace scoped resource. This may be set to \"Cluster\" (default) or \"Namespace\".\n        /// </summary>\n        [YamlMember(Alias = \"scope\")]\n        [JsonProperty(\"scope\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Scope { get; set; }\n\n        /// <summary>\n        ///     apiGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressClassSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressClassSpec provides information about the class of an Ingress.\n    /// </summary>\n    public partial class IngressClassSpecV1\n    {\n        /// <summary>\n        ///     controller refers to the name of the controller that should handle this class. This allows for different \"flavors\" that are controlled by the same controller. For example, you may have different parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. \"acme.io/ingress-controller\". This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"controller\")]\n        [JsonProperty(\"controller\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Controller { get; set; }\n\n        /// <summary>\n        ///     parameters is a link to a custom resource containing additional configuration for the controller. This is optional if the controller does not require extra parameters.\n        /// </summary>\n        [YamlMember(Alias = \"parameters\")]\n        [JsonProperty(\"parameters\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressClassParametersReferenceV1 Parameters { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressClassV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressClass represents the class of the Ingress, referenced by the Ingress Spec. The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class.\n    /// </summary>\n    [KubeObject(\"IngressClass\", \"networking.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/networking.k8s.io/v1/ingressclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/networking.k8s.io/v1/ingressclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/networking.k8s.io/v1/ingressclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/networking.k8s.io/v1/ingressclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/networking.k8s.io/v1/ingressclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/networking.k8s.io/v1/ingressclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/networking.k8s.io/v1/watch/ingressclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/networking.k8s.io/v1/ingressclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/networking.k8s.io/v1/watch/ingressclasses/{name}\")]\n    public partial class IngressClassV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec is the desired state of the IngressClass. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressClassSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressList is a collection of Ingress.\n    /// </summary>\n    [KubeListItem(\"Ingress\", \"networking.k8s.io/v1\")]\n    [KubeObject(\"IngressList\", \"networking.k8s.io/v1\")]\n    public partial class IngressListV1 : KubeResourceListV1<IngressV1>\n    {\n        /// <summary>\n        ///     items is the list of Ingress.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<IngressV1> Items { get; } = new List<IngressV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressList is a collection of Ingress.\n    /// </summary>\n    [KubeListItem(\"Ingress\", \"extensions/v1beta1\")]\n    [KubeObject(\"IngressList\", \"extensions/v1beta1\")]\n    public partial class IngressListV1Beta1 : KubeResourceListV1<IngressV1Beta1>\n    {\n        /// <summary>\n        ///     Items is the list of Ingress.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<IngressV1Beta1> Items { get; } = new List<IngressV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressLoadBalancerIngressV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressLoadBalancerIngress represents the status of a load-balancer ingress point.\n    /// </summary>\n    public partial class IngressLoadBalancerIngressV1\n    {\n        /// <summary>\n        ///     hostname is set for load-balancer ingress points that are DNS based.\n        /// </summary>\n        [YamlMember(Alias = \"hostname\")]\n        [JsonProperty(\"hostname\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Hostname { get; set; }\n\n        /// <summary>\n        ///     ip is set for load-balancer ingress points that are IP based.\n        /// </summary>\n        [YamlMember(Alias = \"ip\")]\n        [JsonProperty(\"ip\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Ip { get; set; }\n\n        /// <summary>\n        ///     ports provides information about the ports exposed by this LoadBalancer.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IngressPortStatusV1> Ports { get; } = new List<IngressPortStatusV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressLoadBalancerStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressLoadBalancerStatus represents the status of a load-balancer.\n    /// </summary>\n    public partial class IngressLoadBalancerStatusV1\n    {\n        /// <summary>\n        ///     ingress is a list containing ingress points for the load-balancer.\n        /// </summary>\n        [YamlMember(Alias = \"ingress\")]\n        [JsonProperty(\"ingress\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IngressLoadBalancerIngressV1> Ingress { get; } = new List<IngressLoadBalancerIngressV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ingress\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeIngress() => Ingress.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressPortStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressPortStatus represents the error condition of a service port\n    /// </summary>\n    public partial class IngressPortStatusV1\n    {\n        /// <summary>\n        ///     protocol is the protocol of the ingress port. The supported values are: \"TCP\", \"UDP\", \"SCTP\"\n        /// </summary>\n        [YamlMember(Alias = \"protocol\")]\n        [JsonProperty(\"protocol\", NullValueHandling = NullValueHandling.Include)]\n        public string Protocol { get; set; }\n\n        /// <summary>\n        ///     error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use\n        ///       CamelCase names\n        ///     - cloud provider specific error values must have names that comply with the\n        ///       format foo.example.com/CamelCase.\n        /// </summary>\n        [YamlMember(Alias = \"error\")]\n        [JsonProperty(\"error\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Error { get; set; }\n\n        /// <summary>\n        ///     port is the port number of the ingress port.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Include)]\n        public int Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.\n    /// </summary>\n    public partial class IngressRuleV1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"http\")]\n        [JsonProperty(\"http\", NullValueHandling = NullValueHandling.Ignore)]\n        public HTTPIngressRuleValueV1 Http { get; set; }\n\n        /// <summary>\n        ///     host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to\n        ///        the IP in the Spec of the parent Ingress.\n        ///     2. The `:` delimiter is not respected because ports are not allowed.\n        ///     \t  Currently the port of an Ingress is implicitly :80 for http and\n        ///     \t  :443 for https.\n        ///     Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.\n        ///     \n        ///     host can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. \"foo.bar.com\") or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. \"*.foo.com\"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == \"*\"). Requests will be matched against the Host field in the following way: 1. If host is precise, the request matches this rule if the http host header is equal to Host. 2. If host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule.\n        /// </summary>\n        [YamlMember(Alias = \"host\")]\n        [JsonProperty(\"host\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Host { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressRuleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.\n    /// </summary>\n    public partial class IngressRuleV1Beta1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"http\")]\n        [JsonProperty(\"http\", NullValueHandling = NullValueHandling.Ignore)]\n        public HTTPIngressRuleValueV1Beta1 Http { get; set; }\n\n        /// <summary>\n        ///     Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the\n        ///     \t  IP in the Spec of the parent Ingress.\n        ///     2. The `:` delimiter is not respected because ports are not allowed.\n        ///     \t  Currently the port of an Ingress is implicitly :80 for http and\n        ///     \t  :443 for https.\n        ///     Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.\n        /// </summary>\n        [YamlMember(Alias = \"host\")]\n        [JsonProperty(\"host\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Host { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressServiceBackendV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressServiceBackend references a Kubernetes Service as a Backend.\n    /// </summary>\n    public partial class IngressServiceBackendV1\n    {\n        /// <summary>\n        ///     name is the referenced service. The service must exist in the same namespace as the Ingress object.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     port of the referenced service. A port name or port number is required for a IngressServiceBackend.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceBackendPortV1 Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressSpec describes the Ingress the user wishes to exist.\n    /// </summary>\n    public partial class IngressSpecV1\n    {\n        /// <summary>\n        ///     defaultBackend is the backend that should handle requests that don't match any rule. If Rules are not specified, DefaultBackend must be specified. If DefaultBackend is not set, the handling of requests that do not match any of the rules will be up to the Ingress controller.\n        /// </summary>\n        [YamlMember(Alias = \"defaultBackend\")]\n        [JsonProperty(\"defaultBackend\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressBackendV1 DefaultBackend { get; set; }\n\n        /// <summary>\n        ///     ingressClassName is the name of an IngressClass cluster resource. Ingress controller implementations use this field to know whether they should be serving this Ingress resource, by a transitive connection (controller -&gt; IngressClass -&gt; Ingress resource). Although the `kubernetes.io/ingress.class` annotation (simple constant name) was never formally defined, it was widely supported by Ingress controllers to create a direct binding between Ingress controller and Ingress resources. Newly created Ingress resources should prefer using the field. However, even though the annotation is officially deprecated, for backwards compatibility reasons, ingress controllers should still honor that annotation if present.\n        /// </summary>\n        [YamlMember(Alias = \"ingressClassName\")]\n        [JsonProperty(\"ingressClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string IngressClassName { get; set; }\n\n        /// <summary>\n        ///     rules is a list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IngressRuleV1> Rules { get; } = new List<IngressRuleV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n\n        /// <summary>\n        ///     tls represents the TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n        /// </summary>\n        [YamlMember(Alias = \"tls\")]\n        [JsonProperty(\"tls\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IngressTLSV1> Tls { get; } = new List<IngressTLSV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Tls\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTls() => Tls.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressSpec describes the Ingress the user wishes to exist.\n    /// </summary>\n    public partial class IngressSpecV1Beta1\n    {\n        /// <summary>\n        ///     A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default.\n        /// </summary>\n        [YamlMember(Alias = \"backend\")]\n        [JsonProperty(\"backend\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressBackendV1Beta1 Backend { get; set; }\n\n        /// <summary>\n        ///     A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IngressRuleV1Beta1> Rules { get; } = new List<IngressRuleV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n\n        /// <summary>\n        ///     TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\n        /// </summary>\n        [YamlMember(Alias = \"tls\")]\n        [JsonProperty(\"tls\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IngressTLSV1Beta1> Tls { get; } = new List<IngressTLSV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Tls\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTls() => Tls.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressStatus describe the current state of the Ingress.\n    /// </summary>\n    public partial class IngressStatusV1\n    {\n        /// <summary>\n        ///     loadBalancer contains the current status of the load-balancer.\n        /// </summary>\n        [YamlMember(Alias = \"loadBalancer\")]\n        [JsonProperty(\"loadBalancer\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressLoadBalancerStatusV1 LoadBalancer { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressStatus describe the current state of the Ingress.\n    /// </summary>\n    public partial class IngressStatusV1Beta1\n    {\n        /// <summary>\n        ///     LoadBalancer contains the current status of the load-balancer.\n        /// </summary>\n        [YamlMember(Alias = \"loadBalancer\")]\n        [JsonProperty(\"loadBalancer\", NullValueHandling = NullValueHandling.Ignore)]\n        public LoadBalancerStatusV1 LoadBalancer { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressTLSV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressTLS describes the transport layer security associated with an ingress.\n    /// </summary>\n    public partial class IngressTLSV1\n    {\n        /// <summary>\n        ///     secretName is the name of the secret used to terminate TLS traffic on port 443. Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the \"Host\" header is used for routing.\n        /// </summary>\n        [YamlMember(Alias = \"secretName\")]\n        [JsonProperty(\"secretName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SecretName { get; set; }\n\n        /// <summary>\n        ///     hosts is a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"hosts\")]\n        [JsonProperty(\"hosts\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Hosts { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Hosts\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHosts() => Hosts.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressTLSV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     IngressTLS describes the transport layer security associated with an Ingress.\n    /// </summary>\n    public partial class IngressTLSV1Beta1\n    {\n        /// <summary>\n        ///     SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.\n        /// </summary>\n        [YamlMember(Alias = \"secretName\")]\n        [JsonProperty(\"secretName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SecretName { get; set; }\n\n        /// <summary>\n        ///     Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"hosts\")]\n        [JsonProperty(\"hosts\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Hosts { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Hosts\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHosts() => Hosts.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.\n    /// </summary>\n    [KubeObject(\"Ingress\", \"networking.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/networking.k8s.io/v1/ingresses\")]\n    [KubeApi(KubeAction.WatchList, \"apis/networking.k8s.io/v1/watch/ingresses\")]\n    [KubeApi(KubeAction.List, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses\")]\n    [KubeApi(KubeAction.Create, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses\")]\n    [KubeApi(KubeAction.Get, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/networking.k8s.io/v1/watch/namespaces/{namespace}/ingresses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses\")]\n    [KubeApi(KubeAction.Get, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/networking.k8s.io/v1/watch/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status\")]\n    public partial class IngressV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/IngressV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.\n    /// </summary>\n    [KubeObject(\"Ingress\", \"extensions/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/extensions/v1beta1/ingresses\")]\n    [KubeApi(KubeAction.WatchList, \"apis/extensions/v1beta1/watch/ingresses\")]\n    [KubeApi(KubeAction.List, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses\")]\n    [KubeApi(KubeAction.Create, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses\")]\n    [KubeApi(KubeAction.Get, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses\")]\n    [KubeApi(KubeAction.Get, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status\")]\n    public partial class IngressV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public IngressStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/InitializerConfigurationListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     InitializerConfigurationList is a list of InitializerConfiguration.\n    /// </summary>\n    [KubeListItem(\"InitializerConfiguration\", \"admissionregistration.k8s.io/v1alpha1\")]\n    [KubeObject(\"InitializerConfigurationList\", \"admissionregistration.k8s.io/v1alpha1\")]\n    public partial class InitializerConfigurationListV1Alpha1 : KubeResourceListV1<InitializerConfigurationV1Alpha1>\n    {\n        /// <summary>\n        ///     List of InitializerConfiguration.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<InitializerConfigurationV1Alpha1> Items { get; } = new List<InitializerConfigurationV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/InitializerConfigurationV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     InitializerConfiguration describes the configuration of initializers.\n    /// </summary>\n    [KubeObject(\"InitializerConfiguration\", \"admissionregistration.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1alpha1/watch/initializerconfigurations\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1alpha1/watch/initializerconfigurations/{name}\")]\n    public partial class InitializerConfigurationV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Initializers is a list of resources and their default initializers Order-sensitive. When merging multiple InitializerConfigurations, we sort the initializers from different InitializerConfigurations by the name of the InitializerConfigurations; the order of the initializers from the same InitializerConfiguration is preserved.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"initializers\")]\n        [JsonProperty(\"initializers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<InitializerV1Alpha1> Initializers { get; } = new List<InitializerV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Initializers\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeInitializers() => Initializers.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/InitializerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Initializer is information about an initializer that has not yet completed.\n    /// </summary>\n    public partial class InitializerV1\n    {\n        /// <summary>\n        ///     name of the process that is responsible for initializing this object.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/InitializerV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Initializer describes the name and the failure policy of an initializer, and what resources it applies to.\n    /// </summary>\n    public partial class InitializerV1Alpha1\n    {\n        /// <summary>\n        ///     Name is the identifier of the initializer. It will be added to the object that needs to be initialized. Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where \"alwayspullimages\" is the name of the webhook, and kubernetes.io is the name of the organization. Required\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Rules describes what resources/subresources the initializer cares about. The initializer cares about an operation if it matches _any_ Rule. Rule.Resources must not include subresources.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<RuleV1Alpha1> Rules { get; } = new List<RuleV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/InitializersV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Initializers tracks the progress of initialization.\n    /// </summary>\n    public partial class InitializersV1\n    {\n        /// <summary>\n        ///     Pending is a list of initializers that must execute in order before this object is visible. When the last pending initializer is removed, and no failing result is set, the initializers struct will be set to nil and the object is considered as initialized and visible to all clients.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"pending\")]\n        [JsonProperty(\"pending\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<InitializerV1> Pending { get; } = new List<InitializerV1>();\n\n        /// <summary>\n        ///     If result is set with the Failure field, the object will be persisted to storage and then deleted, ensuring that other clients can observe the deletion.\n        /// </summary>\n        [YamlMember(Alias = \"result\")]\n        [JsonProperty(\"result\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatusV1 Result { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JSONSchemaPropsOrArrayV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes.\n    /// </summary>\n    public partial class JSONSchemaPropsOrArrayV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JSONSchemaPropsOrBoolV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property.\n    /// </summary>\n    public partial class JSONSchemaPropsOrBoolV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JSONSchemaPropsOrBoolV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property.\n    /// </summary>\n    public partial class JSONSchemaPropsOrBoolV1Beta1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Schema\")]\n        [JsonProperty(\"Schema\", NullValueHandling = NullValueHandling.Include)]\n        public JSONSchemaPropsV1Beta1 Schema { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Allows\")]\n        [JsonProperty(\"Allows\", NullValueHandling = NullValueHandling.Include)]\n        public bool Allows { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JSONSchemaPropsOrStringArrayV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.\n    /// </summary>\n    public partial class JSONSchemaPropsOrStringArrayV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JSONSchemaPropsOrStringArrayV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.\n    /// </summary>\n    public partial class JSONSchemaPropsOrStringArrayV1Beta1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Schema\")]\n        [JsonProperty(\"Schema\", NullValueHandling = NullValueHandling.Include)]\n        public JSONSchemaPropsV1Beta1 Schema { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Property\")]\n        [JsonProperty(\"Property\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Property { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JSONSchemaPropsV1.cs",
    "content": "using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).\n    /// </summary>\n    public partial class JSONSchemaPropsV1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"$schema\")]\n        [JsonProperty(\"$schema\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Schema { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"id\")]\n        [JsonProperty(\"id\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Id { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"required\")]\n        [JsonProperty(\"required\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Required { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Required\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequired() => Required.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"example\")]\n        [JsonProperty(\"example\", NullValueHandling = NullValueHandling.Ignore)]\n        public object Example { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"nullable\")]\n        [JsonProperty(\"nullable\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Nullable { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"title\")]\n        [JsonProperty(\"title\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Title { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata).\n        /// </summary>\n        [YamlMember(Alias = \"x-kubernetes-embedded-resource\")]\n        [JsonProperty(\"x-kubernetes-embedded-resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? KubernetesEmbeddedResource { get; set; }\n\n        /// <summary>\n        ///     x-kubernetes-list-type annotates an array to further describe its topology. This extension must only be used on lists and may have 3 possible values:\n        ///     \n        ///     1) `atomic`: the list is treated as a single entity, like a scalar.\n        ///          Atomic lists will be entirely replaced when updated. This extension\n        ///          may be used on any type of list (struct, scalar, ...).\n        ///     2) `set`:\n        ///          Sets are lists that must not have multiple items with the same value. Each\n        ///          value must be a scalar, an object with x-kubernetes-map-type `atomic` or an\n        ///          array with x-kubernetes-list-type `atomic`.\n        ///     3) `map`:\n        ///          These lists are like maps in that their elements have a non-index key\n        ///          used to identify them. Order is preserved upon merge. The map tag\n        ///          must only be used on a list with elements of type object.\n        ///     Defaults to atomic for arrays.\n        /// </summary>\n        [YamlMember(Alias = \"x-kubernetes-list-type\")]\n        [JsonProperty(\"x-kubernetes-list-type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string KubernetesListType { get; set; }\n\n        /// <summary>\n        ///     x-kubernetes-map-type annotates an object to further describe its topology. This extension must only be used when type is object and may have 2 possible values:\n        ///     \n        ///     1) `granular`:\n        ///          These maps are actual maps (key-value pairs) and each fields are independent\n        ///          from each other (they can each be manipulated by separate actors). This is\n        ///          the default behaviour for all maps.\n        ///     2) `atomic`: the list is treated as a single entity, like a scalar.\n        ///          Atomic maps will be entirely replaced when updated.\n        /// </summary>\n        [YamlMember(Alias = \"x-kubernetes-map-type\")]\n        [JsonProperty(\"x-kubernetes-map-type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string KubernetesMapType { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"$ref\")]\n        [JsonProperty(\"$ref\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Ref { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"allOf\")]\n        [JsonProperty(\"allOf\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<JSONSchemaPropsV1> AllOf { get; } = new List<JSONSchemaPropsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllOf\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllOf() => AllOf.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"anyOf\")]\n        [JsonProperty(\"anyOf\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<JSONSchemaPropsV1> AnyOf { get; } = new List<JSONSchemaPropsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AnyOf\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAnyOf() => AnyOf.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"multipleOf\")]\n        [JsonProperty(\"multipleOf\", NullValueHandling = NullValueHandling.Ignore)]\n        public double? MultipleOf { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"oneOf\")]\n        [JsonProperty(\"oneOf\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<JSONSchemaPropsV1> OneOf { get; } = new List<JSONSchemaPropsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"OneOf\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOneOf() => OneOf.Count > 0;\n\n        /// <summary>\n        ///     x-kubernetes-int-or-string specifies that this value is either an integer or a string. If this is true, an empty type is allowed and type as child of anyOf is permitted if following one of the following patterns:\n        ///     \n        ///     1) anyOf:\n        ///        - type: integer\n        ///        - type: string\n        ///     2) allOf:\n        ///        - anyOf:\n        ///          - type: integer\n        ///          - type: string\n        ///        - ... zero or more\n        /// </summary>\n        [YamlMember(Alias = \"x-kubernetes-int-or-string\")]\n        [JsonProperty(\"x-kubernetes-int-or-string\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? KubernetesIntOrString { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"maxLength\")]\n        [JsonProperty(\"maxLength\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MaxLength { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minLength\")]\n        [JsonProperty(\"minLength\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MinLength { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"enum\")]\n        [JsonProperty(\"enum\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<object> Enum { get; } = new List<object>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Enum\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEnum() => Enum.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"exclusiveMaximum\")]\n        [JsonProperty(\"exclusiveMaximum\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ExclusiveMaximum { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"exclusiveMinimum\")]\n        [JsonProperty(\"exclusiveMinimum\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ExclusiveMinimum { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"maximum\")]\n        [JsonProperty(\"maximum\", NullValueHandling = NullValueHandling.Ignore)]\n        public double? Maximum { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minimum\")]\n        [JsonProperty(\"minimum\", NullValueHandling = NullValueHandling.Ignore)]\n        public double? Minimum { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"pattern\")]\n        [JsonProperty(\"pattern\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Pattern { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"additionalItems\")]\n        [JsonProperty(\"additionalItems\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsOrBoolV1 AdditionalItems { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"additionalProperties\")]\n        [JsonProperty(\"additionalProperties\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsOrBoolV1 AdditionalProperties { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"definitions\")]\n        [JsonProperty(\"definitions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, JSONSchemaPropsV1> Definitions { get; } = new Dictionary<string, JSONSchemaPropsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Definitions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDefinitions() => Definitions.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"dependencies\")]\n        [JsonProperty(\"dependencies\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, JSONSchemaPropsOrStringArrayV1> Dependencies { get; } = new Dictionary<string, JSONSchemaPropsOrStringArrayV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Dependencies\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDependencies() => Dependencies.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"externalDocs\")]\n        [JsonProperty(\"externalDocs\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExternalDocumentationV1 ExternalDocs { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"items\")]\n        [JsonProperty(\"items\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsV1 Items { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"maxItems\")]\n        [JsonProperty(\"maxItems\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MaxItems { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"maxProperties\")]\n        [JsonProperty(\"maxProperties\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MaxProperties { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minItems\")]\n        [JsonProperty(\"minItems\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MinItems { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minProperties\")]\n        [JsonProperty(\"minProperties\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MinProperties { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"patternProperties\")]\n        [JsonProperty(\"patternProperties\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, JSONSchemaPropsV1> PatternProperties { get; } = new Dictionary<string, JSONSchemaPropsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PatternProperties\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePatternProperties() => PatternProperties.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"properties\")]\n        [JsonProperty(\"properties\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, JSONSchemaPropsV1> Properties { get; } = new Dictionary<string, JSONSchemaPropsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Properties\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeProperties() => Properties.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"uniqueItems\")]\n        [JsonProperty(\"uniqueItems\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? UniqueItems { get; set; }\n\n        /// <summary>\n        ///     x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used as the index of the map.\n        ///     \n        ///     This tag MUST only be used on lists that have the \"x-kubernetes-list-type\" extension set to \"map\". Also, the values specified for this attribute must be a scalar typed field of the child structure (no nesting is supported).\n        ///     \n        ///     The properties specified must either be required or have a default value, to ensure those properties are present for all list items.\n        /// </summary>\n        [YamlMember(Alias = \"x-kubernetes-list-map-keys\")]\n        [JsonProperty(\"x-kubernetes-list-map-keys\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> KubernetesListMapKeys { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"KubernetesListMapKeys\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeKubernetesListMapKeys() => KubernetesListMapKeys.Count > 0;\n\n        /// <summary>\n        ///     x-kubernetes-preserve-unknown-fields stops the API server decoding step from pruning fields which are not specified in the validation schema. This affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden.\n        /// </summary>\n        [YamlMember(Alias = \"x-kubernetes-preserve-unknown-fields\")]\n        [JsonProperty(\"x-kubernetes-preserve-unknown-fields\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? KubernetesPreserveUnknownFields { get; set; }\n\n        /// <summary>\n        ///     x-kubernetes-validations describes a list of validation rules written in the CEL expression language.\n        /// </summary>\n        [MergeStrategy(Key = \"rule\")]\n        [YamlMember(Alias = \"x-kubernetes-validations\")]\n        [JsonProperty(\"x-kubernetes-validations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ValidationRuleV1> KubernetesValidations { get; } = new List<ValidationRuleV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"KubernetesValidations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeKubernetesValidations() => KubernetesValidations.Count > 0;\n\n        /// <summary>\n        ///     default is a default value for undefined object fields. Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false.\n        /// </summary>\n        [YamlMember(Alias = \"default\")]\n        [JsonProperty(\"default\", NullValueHandling = NullValueHandling.Ignore)]\n        public object Default { get; set; }\n\n        /// <summary>\n        ///     format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:\n        ///     \n        ///     - bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like \"0321751043\" or \"978-0321751041\" - isbn10: an ISBN10 number string like \"0321751043\" - isbn13: an ISBN13 number string like \"978-0321751041\" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$ - hexcolor: an hexadecimal color code like \"#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like \"rgb(255,255,2559\" - byte: base64 encoded binary data - password: any kind of string - date: a date string like \"2006-01-02\" as defined by full-date in RFC3339 - duration: a duration string like \"22 ns\" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like \"2014-12-15T19:30:20.000Z\" as defined by date-time in RFC3339.\n        /// </summary>\n        [YamlMember(Alias = \"format\")]\n        [JsonProperty(\"format\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Format { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"not\")]\n        [JsonProperty(\"not\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsV1 Not { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JSONSchemaPropsV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).\n    /// </summary>\n    public partial class JSONSchemaPropsV1Beta1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"$schema\")]\n        [JsonProperty(\"$schema\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Schema { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"id\")]\n        [JsonProperty(\"id\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Id { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"required\")]\n        [JsonProperty(\"required\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Required { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Required\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequired() => Required.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"example\")]\n        [JsonProperty(\"example\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONV1Beta1 Example { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"title\")]\n        [JsonProperty(\"title\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Title { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"$ref\")]\n        [JsonProperty(\"$ref\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Ref { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"allOf\")]\n        [JsonProperty(\"allOf\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<JSONSchemaPropsV1Beta1> AllOf { get; } = new List<JSONSchemaPropsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllOf\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllOf() => AllOf.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"anyOf\")]\n        [JsonProperty(\"anyOf\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<JSONSchemaPropsV1Beta1> AnyOf { get; } = new List<JSONSchemaPropsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AnyOf\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAnyOf() => AnyOf.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"multipleOf\")]\n        [JsonProperty(\"multipleOf\", NullValueHandling = NullValueHandling.Ignore)]\n        public double? MultipleOf { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"oneOf\")]\n        [JsonProperty(\"oneOf\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<JSONSchemaPropsV1Beta1> OneOf { get; } = new List<JSONSchemaPropsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"OneOf\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOneOf() => OneOf.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"maxLength\")]\n        [JsonProperty(\"maxLength\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MaxLength { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minLength\")]\n        [JsonProperty(\"minLength\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MinLength { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"enum\")]\n        [JsonProperty(\"enum\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<JSONV1Beta1> Enum { get; } = new List<JSONV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Enum\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEnum() => Enum.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"exclusiveMaximum\")]\n        [JsonProperty(\"exclusiveMaximum\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ExclusiveMaximum { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"exclusiveMinimum\")]\n        [JsonProperty(\"exclusiveMinimum\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ExclusiveMinimum { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"maximum\")]\n        [JsonProperty(\"maximum\", NullValueHandling = NullValueHandling.Ignore)]\n        public double? Maximum { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minimum\")]\n        [JsonProperty(\"minimum\", NullValueHandling = NullValueHandling.Ignore)]\n        public double? Minimum { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"pattern\")]\n        [JsonProperty(\"pattern\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Pattern { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"additionalItems\")]\n        [JsonProperty(\"additionalItems\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsOrBoolV1Beta1 AdditionalItems { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"additionalProperties\")]\n        [JsonProperty(\"additionalProperties\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsOrBoolV1Beta1 AdditionalProperties { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"definitions\")]\n        [JsonProperty(\"definitions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, JSONSchemaPropsV1Beta1> Definitions { get; } = new Dictionary<string, JSONSchemaPropsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Definitions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDefinitions() => Definitions.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"dependencies\")]\n        [JsonProperty(\"dependencies\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, JSONSchemaPropsOrStringArrayV1Beta1> Dependencies { get; } = new Dictionary<string, JSONSchemaPropsOrStringArrayV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Dependencies\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDependencies() => Dependencies.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"externalDocs\")]\n        [JsonProperty(\"externalDocs\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExternalDocumentationV1Beta1 ExternalDocs { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"items\")]\n        [JsonProperty(\"items\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsV1Beta1 Items { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"maxItems\")]\n        [JsonProperty(\"maxItems\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MaxItems { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"maxProperties\")]\n        [JsonProperty(\"maxProperties\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MaxProperties { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minItems\")]\n        [JsonProperty(\"minItems\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MinItems { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"minProperties\")]\n        [JsonProperty(\"minProperties\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? MinProperties { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"patternProperties\")]\n        [JsonProperty(\"patternProperties\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, JSONSchemaPropsV1Beta1> PatternProperties { get; } = new Dictionary<string, JSONSchemaPropsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PatternProperties\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePatternProperties() => PatternProperties.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"properties\")]\n        [JsonProperty(\"properties\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, JSONSchemaPropsV1Beta1> Properties { get; } = new Dictionary<string, JSONSchemaPropsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Properties\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeProperties() => Properties.Count > 0;\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"uniqueItems\")]\n        [JsonProperty(\"uniqueItems\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? UniqueItems { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"default\")]\n        [JsonProperty(\"default\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONV1Beta1 Default { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"format\")]\n        [JsonProperty(\"format\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Format { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"not\")]\n        [JsonProperty(\"not\", NullValueHandling = NullValueHandling.Ignore)]\n        public JSONSchemaPropsV1Beta1 Not { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JSONV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.\n    /// </summary>\n    public partial class JSONV1Beta1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"Raw\")]\n        [JsonProperty(\"Raw\", NullValueHandling = NullValueHandling.Include)]\n        public string Raw { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JobConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JobCondition describes current state of a job.\n    /// </summary>\n    public partial class JobConditionV1\n    {\n        /// <summary>\n        ///     Last time the condition was checked.\n        /// </summary>\n        [YamlMember(Alias = \"lastProbeTime\")]\n        [JsonProperty(\"lastProbeTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastProbeTime { get; set; }\n\n        /// <summary>\n        ///     Last time the condition transit from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     Human readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of job condition, Complete or Failed.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     (brief) reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JobListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JobList is a collection of jobs.\n    /// </summary>\n    [KubeListItem(\"Job\", \"batch/v1\")]\n    [KubeObject(\"JobList\", \"batch/v1\")]\n    public partial class JobListV1 : KubeResourceListV1<JobV1>\n    {\n        /// <summary>\n        ///     items is the list of Jobs.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<JobV1> Items { get; } = new List<JobV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JobSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JobSpec describes how the job execution will look like.\n    /// </summary>\n    public partial class JobSpecV1\n    {\n        /// <summary>\n        ///     suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"suspend\")]\n        [JsonProperty(\"suspend\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Suspend { get; set; }\n\n        /// <summary>\n        ///     ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes.\n        /// </summary>\n        [YamlMember(Alias = \"ttlSecondsAfterFinished\")]\n        [JsonProperty(\"ttlSecondsAfterFinished\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? TtlSecondsAfterFinished { get; set; }\n\n        /// <summary>\n        ///     completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n        ///     \n        ///     `NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n        ///     \n        ///     `Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5. In addition, The Pod name takes the form `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form `$(job-name)-$(index)`.\n        ///     \n        ///     More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, which is possible during upgrades due to version skew, the controller skips updates for the Job.\n        /// </summary>\n        [YamlMember(Alias = \"completionMode\")]\n        [JsonProperty(\"completionMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CompletionMode { get; set; }\n\n        /// <summary>\n        ///     Describes the pod that will be created when executing a job. The only allowed template.spec.restartPolicy values are \"Never\" or \"OnFailure\". More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) &lt; .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\n        /// </summary>\n        [YamlMember(Alias = \"parallelism\")]\n        [JsonProperty(\"parallelism\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Parallelism { get; set; }\n\n        /// <summary>\n        ///     manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template.  When true, the user is responsible for picking unique labels and specifying the selector.  Failure to pick a unique label may cause this and other jobs to not function correctly.  However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector\n        /// </summary>\n        [YamlMember(Alias = \"manualSelector\")]\n        [JsonProperty(\"manualSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ManualSelector { get; set; }\n\n        /// <summary>\n        ///     A label query over pods that should match the pod count. Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.\n        /// </summary>\n        [YamlMember(Alias = \"activeDeadlineSeconds\")]\n        [JsonProperty(\"activeDeadlineSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ActiveDeadlineSeconds { get; set; }\n\n        /// <summary>\n        ///     Specifies the desired number of successfully finished pods the job should be run with.  Setting to null means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value.  Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\n        /// </summary>\n        [YamlMember(Alias = \"completions\")]\n        [JsonProperty(\"completions\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Completions { get; set; }\n\n        /// <summary>\n        ///     Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"maxFailedIndexes\")]\n        [JsonProperty(\"maxFailedIndexes\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MaxFailedIndexes { get; set; }\n\n        /// <summary>\n        ///     Specifies the number of retries before marking this job failed. Defaults to 6\n        /// </summary>\n        [YamlMember(Alias = \"backoffLimit\")]\n        [JsonProperty(\"backoffLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? BackoffLimit { get; set; }\n\n        /// <summary>\n        ///     Specifies the limit for the number of retries within an index before marking this index as failed. When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"backoffLimitPerIndex\")]\n        [JsonProperty(\"backoffLimitPerIndex\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? BackoffLimitPerIndex { get; set; }\n\n        /// <summary>\n        ///     ManagedBy field indicates the controller that manages a Job. The k8s Job controller reconciles jobs which don't have this field at all or the field value is the reserved string `kubernetes.io/job-controller`, but skips reconciling Jobs with a custom value for this field. The value must be a valid domain-prefixed path (e.g. acme.io/foo) - all characters before the first \"/\" must be a valid subdomain as defined by RFC 1123. All characters trailing the first \"/\" must be valid HTTP Path characters as defined by RFC 3986. The value cannot exceed 63 characters. This field is immutable.\n        ///     \n        ///     This field is alpha-level. The job controller accepts setting the field when the feature gate JobManagedBy is enabled (disabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"managedBy\")]\n        [JsonProperty(\"managedBy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ManagedBy { get; set; }\n\n        /// <summary>\n        ///     Specifies the policy of handling failed pods. In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure.\n        /// </summary>\n        [YamlMember(Alias = \"podFailurePolicy\")]\n        [JsonProperty(\"podFailurePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodFailurePolicyV1 PodFailurePolicy { get; set; }\n\n        /// <summary>\n        ///     podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods\n        ///       when they are terminating (has a metadata.deletionTimestamp) or failed.\n        ///     - Failed means to wait until a previously created Pod is fully terminated (has phase\n        ///       Failed or Succeeded) before creating a replacement Pod.\n        ///     \n        ///     When using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default.\n        /// </summary>\n        [YamlMember(Alias = \"podReplacementPolicy\")]\n        [JsonProperty(\"podReplacementPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PodReplacementPolicy { get; set; }\n\n        /// <summary>\n        ///     successPolicy specifies the policy when the Job can be declared as succeeded. If empty, the default behavior applies - the Job is declared as succeeded only when the number of succeeded pods equals to the completions. When the field is specified, it must be immutable and works only for the Indexed Jobs. Once the Job meets the SuccessPolicy, the lingering pods are terminated.\n        ///     \n        ///     This field is beta-level. To use this field, you must enable the `JobSuccessPolicy` feature gate (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"successPolicy\")]\n        [JsonProperty(\"successPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public SuccessPolicyV1 SuccessPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JobStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JobStatus represents the current state of a Job.\n    /// </summary>\n    public partial class JobStatusV1\n    {\n        /// <summary>\n        ///     The number of pods which reached phase Failed. The value increases monotonically.\n        /// </summary>\n        [YamlMember(Alias = \"failed\")]\n        [JsonProperty(\"failed\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Failed { get; set; }\n\n        /// <summary>\n        ///     The number of pods which reached phase Succeeded. The value increases monotonically for a given spec. However, it may decrease in reaction to scale down of elastic indexed jobs.\n        /// </summary>\n        [YamlMember(Alias = \"succeeded\")]\n        [JsonProperty(\"succeeded\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Succeeded { get; set; }\n\n        /// <summary>\n        ///     The number of pending and running pods which are not terminating (without a deletionTimestamp). The value is zero for finished jobs.\n        /// </summary>\n        [YamlMember(Alias = \"active\")]\n        [JsonProperty(\"active\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Active { get; set; }\n\n        /// <summary>\n        ///     Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. The completion time is set when the job finishes successfully, and only then. The value cannot be updated or removed. The value indicates the same or later point in time as the startTime field.\n        /// </summary>\n        [YamlMember(Alias = \"completionTime\")]\n        [JsonProperty(\"completionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? CompletionTime { get; set; }\n\n        /// <summary>\n        ///     Represents time when the job controller started processing a job. When a Job is created in the suspended state, this field is not set until the first time it is resumed. This field is reset every time a Job is resumed from suspension. It is represented in RFC3339 form and is in UTC.\n        ///     \n        ///     Once set, the field can only be removed when the job is suspended. The field cannot be modified while the job is unsuspended or finished.\n        /// </summary>\n        [YamlMember(Alias = \"startTime\")]\n        [JsonProperty(\"startTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? StartTime { get; set; }\n\n        /// <summary>\n        ///     The number of pods which are terminating (in phase Pending or Running and have a deletionTimestamp).\n        ///     \n        ///     This field is beta-level. The job controller populates the field when the feature gate JobPodReplacementPolicy is enabled (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"terminating\")]\n        [JsonProperty(\"terminating\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Terminating { get; set; }\n\n        /// <summary>\n        ///     completedIndexes holds the completed indexes when .spec.completionMode = \"Indexed\" in a text format. The indexes are represented as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\".\n        /// </summary>\n        [YamlMember(Alias = \"completedIndexes\")]\n        [JsonProperty(\"completedIndexes\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CompletedIndexes { get; set; }\n\n        /// <summary>\n        ///     The latest available observations of an object's current state. When a Job fails, one of the conditions will have type \"Failed\" and status true. When a Job is suspended, one of the conditions will have type \"Suspended\" and status true; when the Job is resumed, the status of this condition will become false. When a Job is completed, one of the conditions will have type \"Complete\" and status true.\n        ///     \n        ///     A job is considered finished when it is in a terminal condition, either \"Complete\" or \"Failed\". A Job cannot have both the \"Complete\" and \"Failed\" conditions. Additionally, it cannot be in the \"Complete\" and \"FailureTarget\" conditions. The \"Complete\", \"Failed\" and \"FailureTarget\" conditions cannot be disabled.\n        ///     \n        ///     More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<JobConditionV1> Conditions { get; } = new List<JobConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     FailedIndexes holds the failed indexes when spec.backoffLimitPerIndex is set. The indexes are represented in the text format analogous as for the `completedIndexes` field, ie. they are kept as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the failed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". The set of failed indexes cannot overlap with the set of completed indexes.\n        ///     \n        ///     This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"failedIndexes\")]\n        [JsonProperty(\"failedIndexes\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FailedIndexes { get; set; }\n\n        /// <summary>\n        ///     uncountedTerminatedPods holds the UIDs of Pods that have terminated but the job controller hasn't yet accounted for in the status counters.\n        ///     \n        ///     The job controller creates pods with a finalizer. When a pod terminates (succeeded or failed), the controller does three steps to account for it in the job status:\n        ///     \n        ///     1. Add the pod UID to the arrays in this field. 2. Remove the pod finalizer. 3. Remove the pod UID from the arrays while increasing the corresponding\n        ///         counter.\n        ///     \n        ///     Old jobs might not be tracked using this field, in which case the field remains null. The structure is empty for finished jobs.\n        /// </summary>\n        [YamlMember(Alias = \"uncountedTerminatedPods\")]\n        [JsonProperty(\"uncountedTerminatedPods\", NullValueHandling = NullValueHandling.Ignore)]\n        public UncountedTerminatedPodsV1 UncountedTerminatedPods { get; set; }\n\n        /// <summary>\n        ///     The number of active pods which have a Ready condition and are not terminating (without a deletionTimestamp).\n        /// </summary>\n        [YamlMember(Alias = \"ready\")]\n        [JsonProperty(\"ready\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Ready { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JobTemplateSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JobTemplateSpec describes the data a Job should have when created from a template\n    /// </summary>\n    public partial class JobTemplateSpecV1\n    {\n        /// <summary>\n        ///     Standard object's metadata of the jobs created from this template. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n        /// </summary>\n        [YamlMember(Alias = \"metadata\")]\n        [JsonProperty(\"metadata\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetaV1 Metadata { get; set; }\n\n        /// <summary>\n        ///     Specification of the desired behavior of the job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public JobSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JobTemplateSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JobTemplateSpec describes the data a Job should have when created from a template\n    /// </summary>\n    public partial class JobTemplateSpecV1Beta1\n    {\n        /// <summary>\n        ///     Standard object's metadata of the jobs created from this template. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\n        /// </summary>\n        [YamlMember(Alias = \"metadata\")]\n        [JsonProperty(\"metadata\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetaV1 Metadata { get; set; }\n\n        /// <summary>\n        ///     Specification of the desired behavior of the job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public JobSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JobTemplateSpecV2Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     JobTemplateSpec describes the data a Job should have when created from a template\n    /// </summary>\n    public partial class JobTemplateSpecV2Alpha1\n    {\n        /// <summary>\n        ///     Standard object's metadata of the jobs created from this template. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata\n        /// </summary>\n        [YamlMember(Alias = \"metadata\")]\n        [JsonProperty(\"metadata\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetaV1 Metadata { get; set; }\n\n        /// <summary>\n        ///     Specification of the desired behavior of the job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public JobSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/JobV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Job represents the configuration of a single job.\n    /// </summary>\n    [KubeObject(\"Job\", \"batch/v1\")]\n    [KubeApi(KubeAction.List, \"apis/batch/v1/jobs\")]\n    [KubeApi(KubeAction.WatchList, \"apis/batch/v1/watch/jobs\")]\n    [KubeApi(KubeAction.List, \"apis/batch/v1/namespaces/{namespace}/jobs\")]\n    [KubeApi(KubeAction.Create, \"apis/batch/v1/namespaces/{namespace}/jobs\")]\n    [KubeApi(KubeAction.Get, \"apis/batch/v1/namespaces/{namespace}/jobs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/batch/v1/namespaces/{namespace}/jobs/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/batch/v1/namespaces/{namespace}/jobs/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/batch/v1/namespaces/{namespace}/jobs/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/batch/v1/watch/namespaces/{namespace}/jobs\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/batch/v1/namespaces/{namespace}/jobs\")]\n    [KubeApi(KubeAction.Get, \"apis/batch/v1/namespaces/{namespace}/jobs/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/batch/v1/watch/namespaces/{namespace}/jobs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/batch/v1/namespaces/{namespace}/jobs/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/batch/v1/namespaces/{namespace}/jobs/{name}/status\")]\n    public partial class JobV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public JobSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Current status of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public JobStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/KeyToPathV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Maps a string key to a path within a volume.\n    /// </summary>\n    public partial class KeyToPathV1\n    {\n        /// <summary>\n        ///     mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n        /// </summary>\n        [YamlMember(Alias = \"mode\")]\n        [JsonProperty(\"mode\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Mode { get; set; }\n\n        /// <summary>\n        ///     path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     key is the key to project.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LabelSelectorAttributesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LabelSelectorAttributes indicates a label limited access. Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid.\n    /// </summary>\n    public partial class LabelSelectorAttributesV1\n    {\n        /// <summary>\n        ///     rawSelector is the serialization of a field selector that would be included in a query parameter. Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.\n        /// </summary>\n        [YamlMember(Alias = \"rawSelector\")]\n        [JsonProperty(\"rawSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RawSelector { get; set; }\n\n        /// <summary>\n        ///     requirements is the parsed interpretation of a label selector. All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood.\n        /// </summary>\n        [YamlMember(Alias = \"requirements\")]\n        [JsonProperty(\"requirements\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LabelSelectorRequirementV1> Requirements { get; } = new List<LabelSelectorRequirementV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Requirements\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequirements() => Requirements.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LabelSelectorRequirementV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n    /// </summary>\n    public partial class LabelSelectorRequirementV1\n    {\n        /// <summary>\n        ///     operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\n        /// </summary>\n        [YamlMember(Alias = \"operator\")]\n        [JsonProperty(\"operator\", NullValueHandling = NullValueHandling.Include)]\n        public string Operator { get; set; }\n\n        /// <summary>\n        ///     values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n        /// </summary>\n        [YamlMember(Alias = \"values\")]\n        [JsonProperty(\"values\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Values { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Values\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValues() => Values.Count > 0;\n\n        /// <summary>\n        ///     key is the label key that the selector applies to.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LabelSelectorV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.\n    /// </summary>\n    public partial class LabelSelectorV1\n    {\n        /// <summary>\n        ///     matchExpressions is a list of label selector requirements. The requirements are ANDed.\n        /// </summary>\n        [YamlMember(Alias = \"matchExpressions\")]\n        [JsonProperty(\"matchExpressions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LabelSelectorRequirementV1> MatchExpressions { get; } = new List<LabelSelectorRequirementV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchExpressions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchExpressions() => MatchExpressions.Count > 0;\n\n        /// <summary>\n        ///     matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.\n        /// </summary>\n        [YamlMember(Alias = \"matchLabels\")]\n        [JsonProperty(\"matchLabels\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> MatchLabels { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchLabels\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchLabels() => MatchLabels.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LeaseCandidateListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LeaseCandidateList is a list of Lease objects.\n    /// </summary>\n    [KubeListItem(\"LeaseCandidate\", \"coordination.k8s.io/v1alpha1\")]\n    [KubeObject(\"LeaseCandidateList\", \"coordination.k8s.io/v1alpha1\")]\n    public partial class LeaseCandidateListV1Alpha1 : KubeResourceListV1<LeaseCandidateV1Alpha1>\n    {\n        /// <summary>\n        ///     items is a list of schema objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<LeaseCandidateV1Alpha1> Items { get; } = new List<LeaseCandidateV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LeaseCandidateSpecV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LeaseCandidateSpec is a specification of a Lease.\n    /// </summary>\n    public partial class LeaseCandidateSpecV1Alpha1\n    {\n        /// <summary>\n        ///     LeaseName is the name of the lease for which this candidate is contending. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"leaseName\")]\n        [JsonProperty(\"leaseName\", NullValueHandling = NullValueHandling.Include)]\n        public string LeaseName { get; set; }\n\n        /// <summary>\n        ///     PingTime is the last time that the server has requested the LeaseCandidate to renew. It is only done during leader election to check if any LeaseCandidates have become ineligible. When PingTime is updated, the LeaseCandidate will respond by updating RenewTime.\n        /// </summary>\n        [YamlMember(Alias = \"pingTime\")]\n        [JsonProperty(\"pingTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? PingTime { get; set; }\n\n        /// <summary>\n        ///     RenewTime is the time that the LeaseCandidate was last updated. Any time a Lease needs to do leader election, the PingTime field is updated to signal to the LeaseCandidate that they should update the RenewTime. Old LeaseCandidate objects are also garbage collected if it has been hours since the last renew. The PingTime field is updated regularly to prevent garbage collection for still active LeaseCandidates.\n        /// </summary>\n        [YamlMember(Alias = \"renewTime\")]\n        [JsonProperty(\"renewTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? RenewTime { get; set; }\n\n        /// <summary>\n        ///     BinaryVersion is the binary version. It must be in a semver format without leading `v`. This field is required when strategy is \"OldestEmulationVersion\"\n        /// </summary>\n        [YamlMember(Alias = \"binaryVersion\")]\n        [JsonProperty(\"binaryVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string BinaryVersion { get; set; }\n\n        /// <summary>\n        ///     EmulationVersion is the emulation version. It must be in a semver format without leading `v`. EmulationVersion must be less than or equal to BinaryVersion. This field is required when strategy is \"OldestEmulationVersion\"\n        /// </summary>\n        [YamlMember(Alias = \"emulationVersion\")]\n        [JsonProperty(\"emulationVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string EmulationVersion { get; set; }\n\n        /// <summary>\n        ///     PreferredStrategies indicates the list of strategies for picking the leader for coordinated leader election. The list is ordered, and the first strategy supersedes all other strategies. The list is used by coordinated leader election to make a decision about the final election strategy. This follows as - If all clients have strategy X as the first element in this list, strategy X will be used. - If a candidate has strategy [X] and another candidate has strategy [Y, X], Y supersedes X and strategy Y\n        ///       will be used.\n        ///     - If a candidate has strategy [X, Y] and another candidate has strategy [Y, X], this is a user error and leader\n        ///       election will not operate the Lease until resolved.\n        ///     (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.\n        /// </summary>\n        [YamlMember(Alias = \"preferredStrategies\")]\n        [JsonProperty(\"preferredStrategies\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> PreferredStrategies { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LeaseCandidateV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LeaseCandidate defines a candidate for a Lease object. Candidates are created such that coordinated leader election will pick the best leader from the list of candidates.\n    /// </summary>\n    [KubeObject(\"LeaseCandidate\", \"coordination.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/coordination.k8s.io/v1alpha1/leasecandidates\")]\n    [KubeApi(KubeAction.WatchList, \"apis/coordination.k8s.io/v1alpha1/watch/leasecandidates\")]\n    [KubeApi(KubeAction.List, \"apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates\")]\n    [KubeApi(KubeAction.Create, \"apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates\")]\n    [KubeApi(KubeAction.Get, \"apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/coordination.k8s.io/v1alpha1/watch/namespaces/{namespace}/leasecandidates\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates\")]\n    [KubeApi(KubeAction.Watch, \"apis/coordination.k8s.io/v1alpha1/watch/namespaces/{namespace}/leasecandidates/{name}\")]\n    public partial class LeaseCandidateV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec contains the specification of the Lease. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public LeaseCandidateSpecV1Alpha1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LeaseListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LeaseList is a list of Lease objects.\n    /// </summary>\n    [KubeListItem(\"Lease\", \"coordination.k8s.io/v1\")]\n    [KubeObject(\"LeaseList\", \"coordination.k8s.io/v1\")]\n    public partial class LeaseListV1 : KubeResourceListV1<LeaseV1>\n    {\n        /// <summary>\n        ///     items is a list of schema objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<LeaseV1> Items { get; } = new List<LeaseV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LeaseSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LeaseSpec is a specification of a Lease.\n    /// </summary>\n    public partial class LeaseSpecV1\n    {\n        /// <summary>\n        ///     acquireTime is a time when the current lease was acquired.\n        /// </summary>\n        [YamlMember(Alias = \"acquireTime\")]\n        [JsonProperty(\"acquireTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? AcquireTime { get; set; }\n\n        /// <summary>\n        ///     renewTime is a time when the current holder of a lease has last updated the lease.\n        /// </summary>\n        [YamlMember(Alias = \"renewTime\")]\n        [JsonProperty(\"renewTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? RenewTime { get; set; }\n\n        /// <summary>\n        ///     PreferredHolder signals to a lease holder that the lease has a more optimal holder and should be given up. This field can only be set if Strategy is also set.\n        /// </summary>\n        [YamlMember(Alias = \"preferredHolder\")]\n        [JsonProperty(\"preferredHolder\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PreferredHolder { get; set; }\n\n        /// <summary>\n        ///     leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measured against the time of last observed renewTime.\n        /// </summary>\n        [YamlMember(Alias = \"leaseDurationSeconds\")]\n        [JsonProperty(\"leaseDurationSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? LeaseDurationSeconds { get; set; }\n\n        /// <summary>\n        ///     leaseTransitions is the number of transitions of a lease between holders.\n        /// </summary>\n        [YamlMember(Alias = \"leaseTransitions\")]\n        [JsonProperty(\"leaseTransitions\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? LeaseTransitions { get; set; }\n\n        /// <summary>\n        ///     holderIdentity contains the identity of the holder of a current lease. If Coordinated Leader Election is used, the holder identity must be equal to the elected LeaseCandidate.metadata.name field.\n        /// </summary>\n        [YamlMember(Alias = \"holderIdentity\")]\n        [JsonProperty(\"holderIdentity\", NullValueHandling = NullValueHandling.Ignore)]\n        public string HolderIdentity { get; set; }\n\n        /// <summary>\n        ///     Strategy indicates the strategy for picking the leader for coordinated leader election. If the field is not specified, there is no active coordination for this lease. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.\n        /// </summary>\n        [YamlMember(Alias = \"strategy\")]\n        [JsonProperty(\"strategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Strategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LeaseV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Lease defines a lease concept.\n    /// </summary>\n    [KubeObject(\"Lease\", \"coordination.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/coordination.k8s.io/v1/leases\")]\n    [KubeApi(KubeAction.WatchList, \"apis/coordination.k8s.io/v1/watch/leases\")]\n    [KubeApi(KubeAction.List, \"apis/coordination.k8s.io/v1/namespaces/{namespace}/leases\")]\n    [KubeApi(KubeAction.Create, \"apis/coordination.k8s.io/v1/namespaces/{namespace}/leases\")]\n    [KubeApi(KubeAction.Get, \"apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/coordination.k8s.io/v1/watch/namespaces/{namespace}/leases\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/coordination.k8s.io/v1/namespaces/{namespace}/leases\")]\n    [KubeApi(KubeAction.Watch, \"apis/coordination.k8s.io/v1/watch/namespaces/{namespace}/leases/{name}\")]\n    public partial class LeaseV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec contains the specification of the Lease. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public LeaseSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LifecycleHandlerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.\n    /// </summary>\n    public partial class LifecycleHandlerV1\n    {\n        /// <summary>\n        ///     Exec specifies the action to take.\n        /// </summary>\n        [YamlMember(Alias = \"exec\")]\n        [JsonProperty(\"exec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExecActionV1 Exec { get; set; }\n\n        /// <summary>\n        ///     Sleep represents the duration that the container should sleep before being terminated.\n        /// </summary>\n        [YamlMember(Alias = \"sleep\")]\n        [JsonProperty(\"sleep\", NullValueHandling = NullValueHandling.Ignore)]\n        public SleepActionV1 Sleep { get; set; }\n\n        /// <summary>\n        ///     HTTPGet specifies the http request to perform.\n        /// </summary>\n        [YamlMember(Alias = \"httpGet\")]\n        [JsonProperty(\"httpGet\", NullValueHandling = NullValueHandling.Ignore)]\n        public HTTPGetActionV1 HttpGet { get; set; }\n\n        /// <summary>\n        ///     Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\n        /// </summary>\n        [YamlMember(Alias = \"tcpSocket\")]\n        [JsonProperty(\"tcpSocket\", NullValueHandling = NullValueHandling.Ignore)]\n        public TCPSocketActionV1 TcpSocket { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LifecycleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.\n    /// </summary>\n    public partial class LifecycleV1\n    {\n        /// <summary>\n        ///     PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n        /// </summary>\n        [YamlMember(Alias = \"preStop\")]\n        [JsonProperty(\"preStop\", NullValueHandling = NullValueHandling.Ignore)]\n        public LifecycleHandlerV1 PreStop { get; set; }\n\n        /// <summary>\n        ///     PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n        /// </summary>\n        [YamlMember(Alias = \"postStart\")]\n        [JsonProperty(\"postStart\", NullValueHandling = NullValueHandling.Ignore)]\n        public LifecycleHandlerV1 PostStart { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LimitRangeItemV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LimitRangeItem defines a min/max usage limit for any resource that matches on kind.\n    /// </summary>\n    public partial class LimitRangeItemV1\n    {\n        /// <summary>\n        ///     Type of resource that this limit applies to.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Min usage constraints on this kind by resource name.\n        /// </summary>\n        [YamlMember(Alias = \"min\")]\n        [JsonProperty(\"min\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Min { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Min\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMin() => Min.Count > 0;\n\n        /// <summary>\n        ///     MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.\n        /// </summary>\n        [YamlMember(Alias = \"maxLimitRequestRatio\")]\n        [JsonProperty(\"maxLimitRequestRatio\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> MaxLimitRequestRatio { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MaxLimitRequestRatio\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMaxLimitRequestRatio() => MaxLimitRequestRatio.Count > 0;\n\n        /// <summary>\n        ///     Default resource requirement limit value by resource name if resource limit is omitted.\n        /// </summary>\n        [YamlMember(Alias = \"default\")]\n        [JsonProperty(\"default\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Default { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Default\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDefault() => Default.Count > 0;\n\n        /// <summary>\n        ///     DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.\n        /// </summary>\n        [YamlMember(Alias = \"defaultRequest\")]\n        [JsonProperty(\"defaultRequest\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> DefaultRequest { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"DefaultRequest\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDefaultRequest() => DefaultRequest.Count > 0;\n\n        /// <summary>\n        ///     Max usage constraints on this kind by resource name.\n        /// </summary>\n        [YamlMember(Alias = \"max\")]\n        [JsonProperty(\"max\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Max { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Max\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMax() => Max.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LimitRangeListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LimitRangeList is a list of LimitRange items.\n    /// </summary>\n    [KubeListItem(\"LimitRange\", \"v1\")]\n    [KubeObject(\"LimitRangeList\", \"v1\")]\n    public partial class LimitRangeListV1 : KubeResourceListV1<LimitRangeV1>\n    {\n        /// <summary>\n        ///     Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<LimitRangeV1> Items { get; } = new List<LimitRangeV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LimitRangeSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LimitRangeSpec defines a min/max usage limit for resources that match on kind.\n    /// </summary>\n    public partial class LimitRangeSpecV1\n    {\n        /// <summary>\n        ///     Limits is the list of LimitRangeItem objects that are enforced.\n        /// </summary>\n        [YamlMember(Alias = \"limits\")]\n        [JsonProperty(\"limits\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LimitRangeItemV1> Limits { get; } = new List<LimitRangeItemV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LimitRangeV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LimitRange sets resource usage limits for each kind of resource in a Namespace.\n    /// </summary>\n    [KubeObject(\"LimitRange\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/limitranges\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/limitranges\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/limitranges\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/limitranges\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/limitranges/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/limitranges/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/limitranges/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/limitranges/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/limitranges\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/limitranges\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/limitranges/{name}\")]\n    public partial class LimitRangeV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public LimitRangeSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LimitResponseV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LimitResponse defines how to handle requests that can not be executed right now.\n    /// </summary>\n    public partial class LimitResponseV1\n    {\n        /// <summary>\n        ///     `type` is \"Queue\" or \"Reject\". \"Queue\" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. \"Reject\" means that requests that can not be executed upon arrival are rejected. Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     `queuing` holds the configuration parameters for queuing. This field may be non-empty only if `type` is `\"Queue\"`.\n        /// </summary>\n        [YamlMember(Alias = \"queuing\")]\n        [JsonProperty(\"queuing\", NullValueHandling = NullValueHandling.Ignore)]\n        public QueuingConfigurationV1 Queuing { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LimitResponseV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LimitResponse defines how to handle requests that can not be executed right now.\n    /// </summary>\n    public partial class LimitResponseV1Beta3\n    {\n        /// <summary>\n        ///     `type` is \"Queue\" or \"Reject\". \"Queue\" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. \"Reject\" means that requests that can not be executed upon arrival are rejected. Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     `queuing` holds the configuration parameters for queuing. This field may be non-empty only if `type` is `\"Queue\"`.\n        /// </summary>\n        [YamlMember(Alias = \"queuing\")]\n        [JsonProperty(\"queuing\", NullValueHandling = NullValueHandling.Ignore)]\n        public QueuingConfigurationV1Beta3 Queuing { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LimitedPriorityLevelConfigurationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n    ///       - How are requests for this priority level limited?\n    ///       - What should be done with requests that exceed the limit?\n    /// </summary>\n    public partial class LimitedPriorityLevelConfigurationV1\n    {\n        /// <summary>\n        ///     `limitResponse` indicates what to do with requests that can not be executed right now\n        /// </summary>\n        [YamlMember(Alias = \"limitResponse\")]\n        [JsonProperty(\"limitResponse\", NullValueHandling = NullValueHandling.Ignore)]\n        public LimitResponseV1 LimitResponse { get; set; }\n\n        /// <summary>\n        ///     `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values:\n        ///     \n        ///     NominalCL(i)  = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)\n        ///     \n        ///     Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level.\n        ///     \n        ///     If not specified, this field defaults to a value of 30.\n        ///     \n        ///     Setting this field to zero supports the construction of a \"jail\" for this priority level that is used to hold some request(s)\n        /// </summary>\n        [YamlMember(Alias = \"nominalConcurrencyShares\")]\n        [JsonProperty(\"nominalConcurrencyShares\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NominalConcurrencyShares { get; set; }\n\n        /// <summary>\n        ///     `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows.\n        ///     \n        ///     BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 )\n        ///     \n        ///     The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite.\n        /// </summary>\n        [YamlMember(Alias = \"borrowingLimitPercent\")]\n        [JsonProperty(\"borrowingLimitPercent\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? BorrowingLimitPercent { get; set; }\n\n        /// <summary>\n        ///     `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows.\n        ///     \n        ///     LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )\n        /// </summary>\n        [YamlMember(Alias = \"lendablePercent\")]\n        [JsonProperty(\"lendablePercent\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? LendablePercent { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LimitedPriorityLevelConfigurationV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n    ///       - How are requests for this priority level limited?\n    ///       - What should be done with requests that exceed the limit?\n    /// </summary>\n    public partial class LimitedPriorityLevelConfigurationV1Beta3\n    {\n        /// <summary>\n        ///     `limitResponse` indicates what to do with requests that can not be executed right now\n        /// </summary>\n        [YamlMember(Alias = \"limitResponse\")]\n        [JsonProperty(\"limitResponse\", NullValueHandling = NullValueHandling.Ignore)]\n        public LimitResponseV1Beta3 LimitResponse { get; set; }\n\n        /// <summary>\n        ///     `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values:\n        ///     \n        ///     NominalCL(i)  = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)\n        ///     \n        ///     Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of 30.\n        /// </summary>\n        [YamlMember(Alias = \"nominalConcurrencyShares\")]\n        [JsonProperty(\"nominalConcurrencyShares\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NominalConcurrencyShares { get; set; }\n\n        /// <summary>\n        ///     `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows.\n        ///     \n        ///     BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 )\n        ///     \n        ///     The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite.\n        /// </summary>\n        [YamlMember(Alias = \"borrowingLimitPercent\")]\n        [JsonProperty(\"borrowingLimitPercent\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? BorrowingLimitPercent { get; set; }\n\n        /// <summary>\n        ///     `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows.\n        ///     \n        ///     LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )\n        /// </summary>\n        [YamlMember(Alias = \"lendablePercent\")]\n        [JsonProperty(\"lendablePercent\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? LendablePercent { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LinuxContainerUserV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LinuxContainerUser represents user identity information in Linux containers\n    /// </summary>\n    public partial class LinuxContainerUserV1\n    {\n        /// <summary>\n        ///     GID is the primary gid initially attached to the first process in the container\n        /// </summary>\n        [YamlMember(Alias = \"gid\")]\n        [JsonProperty(\"gid\", NullValueHandling = NullValueHandling.Include)]\n        public long Gid { get; set; }\n\n        /// <summary>\n        ///     UID is the primary uid initially attached to the first process in the container\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Include)]\n        public long Uid { get; set; }\n\n        /// <summary>\n        ///     SupplementalGroups are the supplemental groups initially attached to the first process in the container\n        /// </summary>\n        [YamlMember(Alias = \"supplementalGroups\")]\n        [JsonProperty(\"supplementalGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<long> SupplementalGroups { get; } = new List<long>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"SupplementalGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSupplementalGroups() => SupplementalGroups.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ListMetaV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.\n    /// </summary>\n    public partial class ListMetaV1\n    {\n        /// <summary>\n        ///     continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.\n        /// </summary>\n        [YamlMember(Alias = \"continue\")]\n        [JsonProperty(\"continue\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Continue { get; set; }\n\n        /// <summary>\n        ///     Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.\n        /// </summary>\n        [YamlMember(Alias = \"selfLink\")]\n        [JsonProperty(\"selfLink\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SelfLink { get; set; }\n\n        /// <summary>\n        ///     String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\n        /// </summary>\n        [YamlMember(Alias = \"resourceVersion\")]\n        [JsonProperty(\"resourceVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceVersion { get; set; }\n\n        /// <summary>\n        ///     remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.\n        /// </summary>\n        [YamlMember(Alias = \"remainingItemCount\")]\n        [JsonProperty(\"remainingItemCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? RemainingItemCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LoadBalancerIngressV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.\n    /// </summary>\n    public partial class LoadBalancerIngressV1\n    {\n        /// <summary>\n        ///     Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)\n        /// </summary>\n        [YamlMember(Alias = \"hostname\")]\n        [JsonProperty(\"hostname\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Hostname { get; set; }\n\n        /// <summary>\n        ///     IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified. Setting this to \"VIP\" indicates that traffic is delivered to the node with the destination set to the load-balancer's IP and port. Setting this to \"Proxy\" indicates that traffic is delivered to the node or pod with the destination set to the node's IP and node port or the pod's IP and port. Service implementations may use this information to adjust traffic routing.\n        /// </summary>\n        [YamlMember(Alias = \"ipMode\")]\n        [JsonProperty(\"ipMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string IpMode { get; set; }\n\n        /// <summary>\n        ///     IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)\n        /// </summary>\n        [YamlMember(Alias = \"ip\")]\n        [JsonProperty(\"ip\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Ip { get; set; }\n\n        /// <summary>\n        ///     Ports is a list of records of service ports If used, every port defined in the service should have an entry in it\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PortStatusV1> Ports { get; } = new List<PortStatusV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LoadBalancerStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LoadBalancerStatus represents the status of a load-balancer.\n    /// </summary>\n    public partial class LoadBalancerStatusV1\n    {\n        /// <summary>\n        ///     Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\n        /// </summary>\n        [YamlMember(Alias = \"ingress\")]\n        [JsonProperty(\"ingress\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LoadBalancerIngressV1> Ingress { get; } = new List<LoadBalancerIngressV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ingress\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeIngress() => Ingress.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LocalObjectReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\n    /// </summary>\n    public partial class LocalObjectReferenceV1\n    {\n        /// <summary>\n        ///     Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LocalSubjectAccessReviewV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.\n    /// </summary>\n    [KubeObject(\"LocalSubjectAccessReview\", \"authorization.k8s.io/v1\")]\n    [KubeApi(KubeAction.Create, \"apis/authorization.k8s.io/v1/namespaces/{namespace}/localsubjectaccessreviews\")]\n    public partial class LocalSubjectAccessReviewV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated.  spec.namespace must be equal to the namespace you made the request against.  If empty, it is defaulted.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public SubjectAccessReviewSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates whether the request is allowed or not\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SubjectAccessReviewStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LocalSubjectAccessReviewV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.\n    /// </summary>\n    [KubeObject(\"LocalSubjectAccessReview\", \"authorization.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.Create, \"apis/authorization.k8s.io/v1beta1/namespaces/{namespace}/localsubjectaccessreviews\")]\n    public partial class LocalSubjectAccessReviewV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated.  spec.namespace must be equal to the namespace you made the request against.  If empty, it is defaulted.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public SubjectAccessReviewSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates whether the request is allowed or not\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SubjectAccessReviewStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/LocalVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Local represents directly-attached storage with node affinity (Beta feature)\n    /// </summary>\n    public partial class LocalVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default value is to auto-select a filesystem if unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ManagedFieldsEntryV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.\n    /// </summary>\n    public partial class ManagedFieldsEntryV1\n    {\n        /// <summary>\n        ///     FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.\n        /// </summary>\n        [YamlMember(Alias = \"fieldsV1\")]\n        [JsonProperty(\"fieldsV1\", NullValueHandling = NullValueHandling.Ignore)]\n        public FieldsV1 FieldsV1 { get; set; }\n\n        /// <summary>\n        ///     FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"\n        /// </summary>\n        [YamlMember(Alias = \"fieldsType\")]\n        [JsonProperty(\"fieldsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FieldsType { get; set; }\n\n        /// <summary>\n        ///     Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.\n        /// </summary>\n        [YamlMember(Alias = \"subresource\")]\n        [JsonProperty(\"subresource\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Subresource { get; set; }\n\n        /// <summary>\n        ///     Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.\n        /// </summary>\n        [YamlMember(Alias = \"time\")]\n        [JsonProperty(\"time\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? Time { get; set; }\n\n        /// <summary>\n        ///     APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.\n        /// </summary>\n        [YamlMember(Alias = \"apiVersion\")]\n        [JsonProperty(\"apiVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiVersion { get; set; }\n\n        /// <summary>\n        ///     Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.\n        /// </summary>\n        [YamlMember(Alias = \"operation\")]\n        [JsonProperty(\"operation\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Operation { get; set; }\n\n        /// <summary>\n        ///     Manager is an identifier of the workflow managing these fields.\n        /// </summary>\n        [YamlMember(Alias = \"manager\")]\n        [JsonProperty(\"manager\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Manager { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MatchConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MatchCondition represents a condition which must by fulfilled for a request to be sent to a webhook.\n    /// </summary>\n    public partial class MatchConditionV1\n    {\n        /// <summary>\n        ///     Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables:\n        ///     \n        ///     'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n        ///       See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n        ///     'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n        ///       request resource.\n        ///     Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MatchConditionV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class MatchConditionV1Alpha1\n    {\n        /// <summary>\n        ///     Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables:\n        ///     \n        ///     'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n        ///       See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n        ///     'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n        ///       request resource.\n        ///     Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MatchConditionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MatchCondition represents a condition which must be fulfilled for a request to be sent to a webhook.\n    /// </summary>\n    public partial class MatchConditionV1Beta1\n    {\n        /// <summary>\n        ///     Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables:\n        ///     \n        ///     'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n        ///       See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n        ///     'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n        ///       request resource.\n        ///     Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MatchResourcesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\n    /// </summary>\n    public partial class MatchResourcesV1\n    {\n        /// <summary>\n        ///     NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy.\n        ///     \n        ///     For example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\";  you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"runlevel\",\n        ///           \"operator\": \"NotIn\",\n        ///           \"values\": [\n        ///             \"0\",\n        ///             \"1\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     If instead you want to only run the policy on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"environment\",\n        ///           \"operator\": \"In\",\n        ///           \"values\": [\n        ///             \"prod\",\n        ///             \"staging\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n        ///     \n        ///     Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"objectSelector\")]\n        [JsonProperty(\"objectSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 ObjectSelector { get; set; }\n\n        /// <summary>\n        ///     ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\n        /// </summary>\n        [YamlMember(Alias = \"excludeResourceRules\")]\n        [JsonProperty(\"excludeResourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NamedRuleWithOperationsV1> ExcludeResourceRules { get; } = new List<NamedRuleWithOperationsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ExcludeResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExcludeResourceRules() => ExcludeResourceRules.Count > 0;\n\n        /// <summary>\n        ///     ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule.\n        /// </summary>\n        [YamlMember(Alias = \"resourceRules\")]\n        [JsonProperty(\"resourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NamedRuleWithOperationsV1> ResourceRules { get; } = new List<NamedRuleWithOperationsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceRules() => ResourceRules.Count > 0;\n\n        /// <summary>\n        ///     matchPolicy defines how the \"MatchResources\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\".\n        ///     \n        ///     - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.\n        ///     \n        ///     - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.\n        ///     \n        ///     Defaults to \"Equivalent\"\n        /// </summary>\n        [YamlMember(Alias = \"matchPolicy\")]\n        [JsonProperty(\"matchPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MatchPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MatchResourcesV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\n    /// </summary>\n    public partial class MatchResourcesV1Alpha1\n    {\n        /// <summary>\n        ///     NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy.\n        ///     \n        ///     For example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\";  you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"runlevel\",\n        ///           \"operator\": \"NotIn\",\n        ///           \"values\": [\n        ///             \"0\",\n        ///             \"1\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     If instead you want to only run the policy on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"environment\",\n        ///           \"operator\": \"In\",\n        ///           \"values\": [\n        ///             \"prod\",\n        ///             \"staging\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n        ///     \n        ///     Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"objectSelector\")]\n        [JsonProperty(\"objectSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 ObjectSelector { get; set; }\n\n        /// <summary>\n        ///     ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\n        /// </summary>\n        [YamlMember(Alias = \"excludeResourceRules\")]\n        [JsonProperty(\"excludeResourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NamedRuleWithOperationsV1Alpha1> ExcludeResourceRules { get; } = new List<NamedRuleWithOperationsV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ExcludeResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExcludeResourceRules() => ExcludeResourceRules.Count > 0;\n\n        /// <summary>\n        ///     ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule.\n        /// </summary>\n        [YamlMember(Alias = \"resourceRules\")]\n        [JsonProperty(\"resourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NamedRuleWithOperationsV1Alpha1> ResourceRules { get; } = new List<NamedRuleWithOperationsV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceRules() => ResourceRules.Count > 0;\n\n        /// <summary>\n        ///     matchPolicy defines how the \"MatchResources\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\".\n        ///     \n        ///     - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.\n        ///     \n        ///     - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.\n        ///     \n        ///     Defaults to \"Equivalent\"\n        /// </summary>\n        [YamlMember(Alias = \"matchPolicy\")]\n        [JsonProperty(\"matchPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MatchPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MatchResourcesV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\n    /// </summary>\n    public partial class MatchResourcesV1Beta1\n    {\n        /// <summary>\n        ///     NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy.\n        ///     \n        ///     For example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\";  you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"runlevel\",\n        ///           \"operator\": \"NotIn\",\n        ///           \"values\": [\n        ///             \"0\",\n        ///             \"1\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     If instead you want to only run the policy on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"environment\",\n        ///           \"operator\": \"In\",\n        ///           \"values\": [\n        ///             \"prod\",\n        ///             \"staging\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n        ///     \n        ///     Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"objectSelector\")]\n        [JsonProperty(\"objectSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 ObjectSelector { get; set; }\n\n        /// <summary>\n        ///     ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\n        /// </summary>\n        [YamlMember(Alias = \"excludeResourceRules\")]\n        [JsonProperty(\"excludeResourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NamedRuleWithOperationsV1Beta1> ExcludeResourceRules { get; } = new List<NamedRuleWithOperationsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ExcludeResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExcludeResourceRules() => ExcludeResourceRules.Count > 0;\n\n        /// <summary>\n        ///     ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule.\n        /// </summary>\n        [YamlMember(Alias = \"resourceRules\")]\n        [JsonProperty(\"resourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NamedRuleWithOperationsV1Beta1> ResourceRules { get; } = new List<NamedRuleWithOperationsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceRules() => ResourceRules.Count > 0;\n\n        /// <summary>\n        ///     matchPolicy defines how the \"MatchResources\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\".\n        ///     \n        ///     - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.\n        ///     \n        ///     - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.\n        ///     \n        ///     Defaults to \"Equivalent\"\n        /// </summary>\n        [YamlMember(Alias = \"matchPolicy\")]\n        [JsonProperty(\"matchPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MatchPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MetricIdentifierV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MetricIdentifier defines the name and optionally selector for a metric\n    /// </summary>\n    public partial class MetricIdentifierV2\n    {\n        /// <summary>\n        ///     name is the name of the given metric\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MetricSpecV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).\n    /// </summary>\n    public partial class MetricSpecV2\n    {\n        /// <summary>\n        ///     containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.\n        /// </summary>\n        [YamlMember(Alias = \"containerResource\")]\n        [JsonProperty(\"containerResource\", NullValueHandling = NullValueHandling.Ignore)]\n        public ContainerResourceMetricSourceV2 ContainerResource { get; set; }\n\n        /// <summary>\n        ///     resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceMetricSourceV2 Resource { get; set; }\n\n        /// <summary>\n        ///     type is the type of metric source.  It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).\n        /// </summary>\n        [YamlMember(Alias = \"external\")]\n        [JsonProperty(\"external\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExternalMetricSourceV2 External { get; set; }\n\n        /// <summary>\n        ///     pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.\n        /// </summary>\n        [YamlMember(Alias = \"pods\")]\n        [JsonProperty(\"pods\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodsMetricSourceV2 Pods { get; set; }\n\n        /// <summary>\n        ///     object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).\n        /// </summary>\n        [YamlMember(Alias = \"object\")]\n        [JsonProperty(\"object\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetricSourceV2 Object { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MetricSpecV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).\n    /// </summary>\n    public partial class MetricSpecV2Beta1\n    {\n        /// <summary>\n        ///     resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceMetricSourceV2Beta1 Resource { get; set; }\n\n        /// <summary>\n        ///     type is the type of metric source.  It should be one of \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).\n        /// </summary>\n        [YamlMember(Alias = \"external\")]\n        [JsonProperty(\"external\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExternalMetricSourceV2Beta1 External { get; set; }\n\n        /// <summary>\n        ///     pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.\n        /// </summary>\n        [YamlMember(Alias = \"pods\")]\n        [JsonProperty(\"pods\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodsMetricSourceV2Beta1 Pods { get; set; }\n\n        /// <summary>\n        ///     object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).\n        /// </summary>\n        [YamlMember(Alias = \"object\")]\n        [JsonProperty(\"object\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetricSourceV2Beta1 Object { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MetricStatusV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MetricStatus describes the last-read state of a single metric.\n    /// </summary>\n    public partial class MetricStatusV2\n    {\n        /// <summary>\n        ///     container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.\n        /// </summary>\n        [YamlMember(Alias = \"containerResource\")]\n        [JsonProperty(\"containerResource\", NullValueHandling = NullValueHandling.Ignore)]\n        public ContainerResourceMetricStatusV2 ContainerResource { get; set; }\n\n        /// <summary>\n        ///     resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceMetricStatusV2 Resource { get; set; }\n\n        /// <summary>\n        ///     type is the type of metric source.  It will be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).\n        /// </summary>\n        [YamlMember(Alias = \"external\")]\n        [JsonProperty(\"external\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExternalMetricStatusV2 External { get; set; }\n\n        /// <summary>\n        ///     pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.\n        /// </summary>\n        [YamlMember(Alias = \"pods\")]\n        [JsonProperty(\"pods\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodsMetricStatusV2 Pods { get; set; }\n\n        /// <summary>\n        ///     object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).\n        /// </summary>\n        [YamlMember(Alias = \"object\")]\n        [JsonProperty(\"object\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetricStatusV2 Object { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MetricStatusV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MetricStatus describes the last-read state of a single metric.\n    /// </summary>\n    public partial class MetricStatusV2Beta1\n    {\n        /// <summary>\n        ///     resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceMetricStatusV2Beta1 Resource { get; set; }\n\n        /// <summary>\n        ///     type is the type of metric source.  It will be one of \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).\n        /// </summary>\n        [YamlMember(Alias = \"external\")]\n        [JsonProperty(\"external\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExternalMetricStatusV2Beta1 External { get; set; }\n\n        /// <summary>\n        ///     pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.\n        /// </summary>\n        [YamlMember(Alias = \"pods\")]\n        [JsonProperty(\"pods\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodsMetricStatusV2Beta1 Pods { get; set; }\n\n        /// <summary>\n        ///     object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).\n        /// </summary>\n        [YamlMember(Alias = \"object\")]\n        [JsonProperty(\"object\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetricStatusV2Beta1 Object { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MetricTargetV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MetricTarget defines the target value, average value, or average utilization of a specific metric\n    /// </summary>\n    public partial class MetricTargetV2\n    {\n        /// <summary>\n        ///     averageValue is the target value of the average of the metric across all relevant pods (as a quantity)\n        /// </summary>\n        [YamlMember(Alias = \"averageValue\")]\n        [JsonProperty(\"averageValue\", NullValueHandling = NullValueHandling.Ignore)]\n        public string AverageValue { get; set; }\n\n        /// <summary>\n        ///     type represents whether the metric type is Utilization, Value, or AverageValue\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     value is the target value of the metric (as a quantity).\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Value { get; set; }\n\n        /// <summary>\n        ///     averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type\n        /// </summary>\n        [YamlMember(Alias = \"averageUtilization\")]\n        [JsonProperty(\"averageUtilization\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AverageUtilization { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MetricValueStatusV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MetricValueStatus holds the current value for a metric\n    /// </summary>\n    public partial class MetricValueStatusV2\n    {\n        /// <summary>\n        ///     averageValue is the current value of the average of the metric across all relevant pods (as a quantity)\n        /// </summary>\n        [YamlMember(Alias = \"averageValue\")]\n        [JsonProperty(\"averageValue\", NullValueHandling = NullValueHandling.Ignore)]\n        public string AverageValue { get; set; }\n\n        /// <summary>\n        ///     value is the current value of the metric (as a quantity).\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Value { get; set; }\n\n        /// <summary>\n        ///     currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.\n        /// </summary>\n        [YamlMember(Alias = \"averageUtilization\")]\n        [JsonProperty(\"averageUtilization\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AverageUtilization { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MigrationConditionV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Describes the state of a migration at a certain point.\n    /// </summary>\n    public partial class MigrationConditionV1Alpha1\n    {\n        /// <summary>\n        ///     The last time this condition was updated.\n        /// </summary>\n        [YamlMember(Alias = \"lastUpdateTime\")]\n        [JsonProperty(\"lastUpdateTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastUpdateTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of the condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ModifyVolumeStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ModifyVolumeStatus represents the status object of ControllerModifyVolume operation\n    /// </summary>\n    public partial class ModifyVolumeStatusV1\n    {\n        /// <summary>\n        ///     targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\n        /// </summary>\n        [YamlMember(Alias = \"targetVolumeAttributesClassName\")]\n        [JsonProperty(\"targetVolumeAttributesClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TargetVolumeAttributesClassName { get; set; }\n\n        /// <summary>\n        ///     status is the status of the ControllerModifyVolume operation. It can be in any of following states:\n        ///      - Pending\n        ///        Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\n        ///        the specified VolumeAttributesClass not existing.\n        ///      - InProgress\n        ///        InProgress indicates that the volume is being modified.\n        ///      - Infeasible\n        ///       Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\n        ///     \t  resolve the error, a valid VolumeAttributesClass needs to be specified.\n        ///     Note: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MutatingWebhookConfigurationListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.\n    /// </summary>\n    [KubeListItem(\"MutatingWebhookConfiguration\", \"admissionregistration.k8s.io/v1\")]\n    [KubeObject(\"MutatingWebhookConfigurationList\", \"admissionregistration.k8s.io/v1\")]\n    public partial class MutatingWebhookConfigurationListV1 : KubeResourceListV1<MutatingWebhookConfigurationV1>\n    {\n        /// <summary>\n        ///     List of MutatingWebhookConfiguration.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<MutatingWebhookConfigurationV1> Items { get; } = new List<MutatingWebhookConfigurationV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MutatingWebhookConfigurationListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.\n    /// </summary>\n    [KubeListItem(\"MutatingWebhookConfiguration\", \"admissionregistration.k8s.io/v1beta1\")]\n    [KubeObject(\"MutatingWebhookConfigurationList\", \"admissionregistration.k8s.io/v1beta1\")]\n    public partial class MutatingWebhookConfigurationListV1Beta1 : KubeResourceListV1<MutatingWebhookConfigurationV1Beta1>\n    {\n        /// <summary>\n        ///     List of MutatingWebhookConfiguration.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<MutatingWebhookConfigurationV1Beta1> Items { get; } = new List<MutatingWebhookConfigurationV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MutatingWebhookConfigurationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.\n    /// </summary>\n    [KubeObject(\"MutatingWebhookConfiguration\", \"admissionregistration.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations/{name}\")]\n    public partial class MutatingWebhookConfigurationV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Webhooks is a list of webhooks and the affected resources and operations.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"webhooks\")]\n        [JsonProperty(\"webhooks\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MutatingWebhookV1> Webhooks { get; } = new List<MutatingWebhookV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Webhooks\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeWebhooks() => Webhooks.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MutatingWebhookConfigurationV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.\n    /// </summary>\n    [KubeObject(\"MutatingWebhookConfiguration\", \"admissionregistration.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1beta1/watch/mutatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1beta1/watch/mutatingwebhookconfigurations/{name}\")]\n    public partial class MutatingWebhookConfigurationV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Webhooks is a list of webhooks and the affected resources and operations.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"webhooks\")]\n        [JsonProperty(\"webhooks\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<WebhookV1Beta1> Webhooks { get; } = new List<WebhookV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Webhooks\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeWebhooks() => Webhooks.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/MutatingWebhookV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     MutatingWebhook describes an admission webhook and the resources and operations it applies to.\n    /// </summary>\n    public partial class MutatingWebhookV1\n    {\n        /// <summary>\n        ///     The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     ClientConfig defines how to communicate with the hook. Required\n        /// </summary>\n        [YamlMember(Alias = \"clientConfig\")]\n        [JsonProperty(\"clientConfig\", NullValueHandling = NullValueHandling.Include)]\n        public WebhookClientConfigV1 ClientConfig { get; set; }\n\n        /// <summary>\n        ///     NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook.\n        ///     \n        ///     For example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\";  you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"runlevel\",\n        ///           \"operator\": \"NotIn\",\n        ///           \"values\": [\n        ///             \"0\",\n        ///             \"1\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     If instead you want to only run the webhook on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"environment\",\n        ///           \"operator\": \"In\",\n        ///           \"values\": [\n        ///             \"prod\",\n        ///             \"staging\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n        ///     \n        ///     Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     ObjectSelector decides whether to run the webhook based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the webhook, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"objectSelector\")]\n        [JsonProperty(\"objectSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 ObjectSelector { get; set; }\n\n        /// <summary>\n        ///     AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.\n        /// </summary>\n        [YamlMember(Alias = \"admissionReviewVersions\")]\n        [JsonProperty(\"admissionReviewVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> AdmissionReviewVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n        ///     \n        ///     The exact matching logic is (in order):\n        ///       1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n        ///       2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n        ///       3. If any matchCondition evaluates to an error (but none are FALSE):\n        ///          - If failurePolicy=Fail, reject the request\n        ///          - If failurePolicy=Ignore, the error is ignored and the webhook is skipped\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"matchConditions\")]\n        [JsonProperty(\"matchConditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MatchConditionV1> MatchConditions { get; } = new List<MatchConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchConditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchConditions() => MatchConditions.Count > 0;\n\n        /// <summary>\n        ///     Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<RuleWithOperationsV1> Rules { get; } = new List<RuleWithOperationsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n\n        /// <summary>\n        ///     SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some.\n        /// </summary>\n        [YamlMember(Alias = \"sideEffects\")]\n        [JsonProperty(\"sideEffects\", NullValueHandling = NullValueHandling.Include)]\n        public string SideEffects { get; set; }\n\n        /// <summary>\n        ///     TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds.\n        /// </summary>\n        [YamlMember(Alias = \"timeoutSeconds\")]\n        [JsonProperty(\"timeoutSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? TimeoutSeconds { get; set; }\n\n        /// <summary>\n        ///     FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail.\n        /// </summary>\n        [YamlMember(Alias = \"failurePolicy\")]\n        [JsonProperty(\"failurePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FailurePolicy { get; set; }\n\n        /// <summary>\n        ///     matchPolicy defines how the \"rules\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\".\n        ///     \n        ///     - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook.\n        ///     \n        ///     - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook.\n        ///     \n        ///     Defaults to \"Equivalent\"\n        /// </summary>\n        [YamlMember(Alias = \"matchPolicy\")]\n        [JsonProperty(\"matchPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MatchPolicy { get; set; }\n\n        /// <summary>\n        ///     reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. Allowed values are \"Never\" and \"IfNeeded\".\n        ///     \n        ///     Never: the webhook will not be called more than once in a single admission evaluation.\n        ///     \n        ///     IfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead.\n        ///     \n        ///     Defaults to \"Never\".\n        /// </summary>\n        [YamlMember(Alias = \"reinvocationPolicy\")]\n        [JsonProperty(\"reinvocationPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ReinvocationPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NFSVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.\n    /// </summary>\n    public partial class NFSVolumeSourceV1\n    {\n        /// <summary>\n        ///     path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n        /// </summary>\n        [YamlMember(Alias = \"server\")]\n        [JsonProperty(\"server\", NullValueHandling = NullValueHandling.Include)]\n        public string Server { get; set; }\n\n        /// <summary>\n        ///     readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NamedRuleWithOperationsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.\n    /// </summary>\n    public partial class NamedRuleWithOperationsV1\n    {\n        /// <summary>\n        ///     scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\".\n        /// </summary>\n        [YamlMember(Alias = \"scope\")]\n        [JsonProperty(\"scope\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Scope { get; set; }\n\n        /// <summary>\n        ///     APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiVersions\")]\n        [JsonProperty(\"apiVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiVersions() => ApiVersions.Count > 0;\n\n        /// <summary>\n        ///     Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"operations\")]\n        [JsonProperty(\"operations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Operations { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Operations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOperations() => Operations.Count > 0;\n\n        /// <summary>\n        ///     ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\n        /// </summary>\n        [YamlMember(Alias = \"resourceNames\")]\n        [JsonProperty(\"resourceNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ResourceNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceNames() => ResourceNames.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.\n        ///     \n        ///     For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n        ///     \n        ///     If wildcard is present, the validation rule will ensure resources do not overlap with each other.\n        ///     \n        ///     Depending on the enclosing object, subresources might not be allowed. Required.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NamedRuleWithOperationsV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.\n    /// </summary>\n    public partial class NamedRuleWithOperationsV1Alpha1\n    {\n        /// <summary>\n        ///     scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\".\n        /// </summary>\n        [YamlMember(Alias = \"scope\")]\n        [JsonProperty(\"scope\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Scope { get; set; }\n\n        /// <summary>\n        ///     APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiVersions\")]\n        [JsonProperty(\"apiVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiVersions() => ApiVersions.Count > 0;\n\n        /// <summary>\n        ///     Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"operations\")]\n        [JsonProperty(\"operations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Operations { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Operations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOperations() => Operations.Count > 0;\n\n        /// <summary>\n        ///     ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\n        /// </summary>\n        [YamlMember(Alias = \"resourceNames\")]\n        [JsonProperty(\"resourceNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ResourceNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceNames() => ResourceNames.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.\n        ///     \n        ///     For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n        ///     \n        ///     If wildcard is present, the validation rule will ensure resources do not overlap with each other.\n        ///     \n        ///     Depending on the enclosing object, subresources might not be allowed. Required.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NamedRuleWithOperationsV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.\n    /// </summary>\n    public partial class NamedRuleWithOperationsV1Beta1\n    {\n        /// <summary>\n        ///     scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\".\n        /// </summary>\n        [YamlMember(Alias = \"scope\")]\n        [JsonProperty(\"scope\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Scope { get; set; }\n\n        /// <summary>\n        ///     APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiVersions\")]\n        [JsonProperty(\"apiVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiVersions() => ApiVersions.Count > 0;\n\n        /// <summary>\n        ///     Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"operations\")]\n        [JsonProperty(\"operations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Operations { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Operations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOperations() => Operations.Count > 0;\n\n        /// <summary>\n        ///     ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\n        /// </summary>\n        [YamlMember(Alias = \"resourceNames\")]\n        [JsonProperty(\"resourceNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ResourceNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceNames() => ResourceNames.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.\n        ///     \n        ///     For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n        ///     \n        ///     If wildcard is present, the validation rule will ensure resources do not overlap with each other.\n        ///     \n        ///     Depending on the enclosing object, subresources might not be allowed. Required.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NamespaceConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NamespaceCondition contains details about state of namespace.\n    /// </summary>\n    public partial class NamespaceConditionV1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of namespace controller condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NamespaceListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NamespaceList is a list of Namespaces.\n    /// </summary>\n    [KubeListItem(\"Namespace\", \"v1\")]\n    [KubeObject(\"NamespaceList\", \"v1\")]\n    public partial class NamespaceListV1 : KubeResourceListV1<NamespaceV1>\n    {\n        /// <summary>\n        ///     Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<NamespaceV1> Items { get; } = new List<NamespaceV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NamespaceSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NamespaceSpec describes the attributes on a Namespace.\n    /// </summary>\n    public partial class NamespaceSpecV1\n    {\n        /// <summary>\n        ///     Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n        /// </summary>\n        [YamlMember(Alias = \"finalizers\")]\n        [JsonProperty(\"finalizers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Finalizers { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Finalizers\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeFinalizers() => Finalizers.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NamespaceStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NamespaceStatus is information about the current status of a Namespace.\n    /// </summary>\n    public partial class NamespaceStatusV1\n    {\n        /// <summary>\n        ///     Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n        /// </summary>\n        [YamlMember(Alias = \"phase\")]\n        [JsonProperty(\"phase\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Phase { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a namespace's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NamespaceConditionV1> Conditions { get; } = new List<NamespaceConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NamespaceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Namespace provides a scope for Names. Use of multiple namespaces is optional.\n    /// </summary>\n    [KubeObject(\"Namespace\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{name}/finalize\")]\n    public partial class NamespaceV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the behavior of the Namespace. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public NamespaceSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status describes the current status of a Namespace. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public NamespaceStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyEgressRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8\n    /// </summary>\n    public partial class NetworkPolicyEgressRuleV1\n    {\n        /// <summary>\n        ///     to is a list of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.\n        /// </summary>\n        [YamlMember(Alias = \"to\")]\n        [JsonProperty(\"to\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyPeerV1> To { get; } = new List<NetworkPolicyPeerV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"To\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTo() => To.Count > 0;\n\n        /// <summary>\n        ///     ports is a list of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyPortV1> Ports { get; } = new List<NetworkPolicyPortV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyEgressRuleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED 1.9 - This group version of NetworkPolicyEgressRule is deprecated by networking/v1/NetworkPolicyEgressRule. NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8\n    /// </summary>\n    public partial class NetworkPolicyEgressRuleV1Beta1\n    {\n        /// <summary>\n        ///     List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.\n        /// </summary>\n        [YamlMember(Alias = \"to\")]\n        [JsonProperty(\"to\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyPeerV1Beta1> To { get; } = new List<NetworkPolicyPeerV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"To\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTo() => To.Count > 0;\n\n        /// <summary>\n        ///     List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyPortV1Beta1> Ports { get; } = new List<NetworkPolicyPortV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyIngressRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from.\n    /// </summary>\n    public partial class NetworkPolicyIngressRuleV1\n    {\n        /// <summary>\n        ///     from is a list of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list.\n        /// </summary>\n        [YamlMember(Alias = \"from\")]\n        [JsonProperty(\"from\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyPeerV1> From { get; } = new List<NetworkPolicyPeerV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"From\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeFrom() => From.Count > 0;\n\n        /// <summary>\n        ///     ports is a list of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyPortV1> Ports { get; } = new List<NetworkPolicyPortV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyIngressRuleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED 1.9 - This group version of NetworkPolicyIngressRule is deprecated by networking/v1/NetworkPolicyIngressRule. This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from.\n    /// </summary>\n    public partial class NetworkPolicyIngressRuleV1Beta1\n    {\n        /// <summary>\n        ///     List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.\n        /// </summary>\n        [YamlMember(Alias = \"from\")]\n        [JsonProperty(\"from\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyPeerV1Beta1> From { get; } = new List<NetworkPolicyPeerV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"From\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeFrom() => From.Count > 0;\n\n        /// <summary>\n        ///     List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\n        /// </summary>\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyPortV1Beta1> Ports { get; } = new List<NetworkPolicyPortV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NetworkPolicyList is a list of NetworkPolicy objects.\n    /// </summary>\n    [KubeListItem(\"NetworkPolicy\", \"networking.k8s.io/v1\")]\n    [KubeObject(\"NetworkPolicyList\", \"networking.k8s.io/v1\")]\n    public partial class NetworkPolicyListV1 : KubeResourceListV1<NetworkPolicyV1>\n    {\n        /// <summary>\n        ///     items is a list of schema objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<NetworkPolicyV1> Items { get; } = new List<NetworkPolicyV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyPeerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NetworkPolicyPeer describes a peer to allow traffic to/from. Only certain combinations of fields are allowed\n    /// </summary>\n    public partial class NetworkPolicyPeerV1\n    {\n        /// <summary>\n        ///     ipBlock defines policy on a particular IPBlock. If this field is set then neither of the other fields can be.\n        /// </summary>\n        [YamlMember(Alias = \"ipBlock\")]\n        [JsonProperty(\"ipBlock\", NullValueHandling = NullValueHandling.Ignore)]\n        public IPBlockV1 IpBlock { get; set; }\n\n        /// <summary>\n        ///     namespaceSelector selects namespaces using cluster-scoped labels. This field follows standard label selector semantics; if present but empty, it selects all namespaces.\n        ///     \n        ///     If podSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the namespaces selected by namespaceSelector. Otherwise it selects all pods in the namespaces selected by namespaceSelector.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     podSelector is a label selector which selects pods. This field follows standard label selector semantics; if present but empty, it selects all pods.\n        ///     \n        ///     If namespaceSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the Namespaces selected by NamespaceSelector. Otherwise it selects the pods matching podSelector in the policy's own namespace.\n        /// </summary>\n        [YamlMember(Alias = \"podSelector\")]\n        [JsonProperty(\"podSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 PodSelector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyPeerV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED 1.9 - This group version of NetworkPolicyPeer is deprecated by networking/v1/NetworkPolicyPeer.\n    /// </summary>\n    public partial class NetworkPolicyPeerV1Beta1\n    {\n        /// <summary>\n        ///     IPBlock defines policy on a particular IPBlock. If this field is set then neither of the other fields can be.\n        /// </summary>\n        [YamlMember(Alias = \"ipBlock\")]\n        [JsonProperty(\"ipBlock\", NullValueHandling = NullValueHandling.Ignore)]\n        public IPBlockV1Beta1 IpBlock { get; set; }\n\n        /// <summary>\n        ///     Selects Namespaces using cluster-scoped labels. This field follows standard label selector semantics; if present but empty, it selects all namespaces.\n        ///     \n        ///     If PodSelector is also set, then the NetworkPolicyPeer as a whole selects the Pods matching PodSelector in the Namespaces selected by NamespaceSelector. Otherwise it selects all Pods in the Namespaces selected by NamespaceSelector.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     This is a label selector which selects Pods. This field follows standard label selector semantics; if present but empty, it selects all pods.\n        ///     \n        ///     If NamespaceSelector is also set, then the NetworkPolicyPeer as a whole selects the Pods matching PodSelector in the Namespaces selected by NamespaceSelector. Otherwise it selects the Pods matching PodSelector in the policy's own Namespace.\n        /// </summary>\n        [YamlMember(Alias = \"podSelector\")]\n        [JsonProperty(\"podSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 PodSelector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyPortV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NetworkPolicyPort describes a port to allow traffic on\n    /// </summary>\n    public partial class NetworkPolicyPortV1\n    {\n        /// <summary>\n        ///     protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.\n        /// </summary>\n        [YamlMember(Alias = \"protocol\")]\n        [JsonProperty(\"protocol\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Protocol { get; set; }\n\n        /// <summary>\n        ///     endPort indicates that the range of ports from port to endPort if set, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port.\n        /// </summary>\n        [YamlMember(Alias = \"endPort\")]\n        [JsonProperty(\"endPort\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? EndPort { get; set; }\n\n        /// <summary>\n        ///     port represents the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyPortV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED 1.9 - This group version of NetworkPolicyPort is deprecated by networking/v1/NetworkPolicyPort.\n    /// </summary>\n    public partial class NetworkPolicyPortV1Beta1\n    {\n        /// <summary>\n        ///     Optional.  The protocol (TCP or UDP) which traffic must match. If not specified, this field defaults to TCP.\n        /// </summary>\n        [YamlMember(Alias = \"protocol\")]\n        [JsonProperty(\"protocol\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Protocol { get; set; }\n\n        /// <summary>\n        ///     If specified, the port on the given protocol.  This can either be a numerical or named port on a pod.  If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicySpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NetworkPolicySpec provides the specification of a NetworkPolicy\n    /// </summary>\n    public partial class NetworkPolicySpecV1\n    {\n        /// <summary>\n        ///     podSelector selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace.\n        /// </summary>\n        [YamlMember(Alias = \"podSelector\")]\n        [JsonProperty(\"podSelector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 PodSelector { get; set; }\n\n        /// <summary>\n        ///     egress is a list of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\n        /// </summary>\n        [YamlMember(Alias = \"egress\")]\n        [JsonProperty(\"egress\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyEgressRuleV1> Egress { get; } = new List<NetworkPolicyEgressRuleV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Egress\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEgress() => Egress.Count > 0;\n\n        /// <summary>\n        ///     ingress is a list of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)\n        /// </summary>\n        [YamlMember(Alias = \"ingress\")]\n        [JsonProperty(\"ingress\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyIngressRuleV1> Ingress { get; } = new List<NetworkPolicyIngressRuleV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ingress\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeIngress() => Ingress.Count > 0;\n\n        /// <summary>\n        ///     policyTypes is a list of rule types that the NetworkPolicy relates to. Valid options are [\"Ingress\"], [\"Egress\"], or [\"Ingress\", \"Egress\"]. If this field is not specified, it will default based on the existence of ingress or egress rules; policies that contain an egress section are assumed to affect egress, and all policies (whether or not they contain an ingress section) are assumed to affect ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include \"Egress\" (since such a policy would not include an egress section and would otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8\n        /// </summary>\n        [YamlMember(Alias = \"policyTypes\")]\n        [JsonProperty(\"policyTypes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> PolicyTypes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PolicyTypes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePolicyTypes() => PolicyTypes.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicySpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED 1.9 - This group version of NetworkPolicySpec is deprecated by networking/v1/NetworkPolicySpec.\n    /// </summary>\n    public partial class NetworkPolicySpecV1Beta1\n    {\n        /// <summary>\n        ///     Selects the pods to which this NetworkPolicy object applies.  The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods.  In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace.\n        /// </summary>\n        [YamlMember(Alias = \"podSelector\")]\n        [JsonProperty(\"podSelector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 PodSelector { get; set; }\n\n        /// <summary>\n        ///     List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\n        /// </summary>\n        [YamlMember(Alias = \"egress\")]\n        [JsonProperty(\"egress\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyEgressRuleV1Beta1> Egress { get; } = new List<NetworkPolicyEgressRuleV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Egress\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEgress() => Egress.Count > 0;\n\n        /// <summary>\n        ///     List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default).\n        /// </summary>\n        [YamlMember(Alias = \"ingress\")]\n        [JsonProperty(\"ingress\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NetworkPolicyIngressRuleV1Beta1> Ingress { get; } = new List<NetworkPolicyIngressRuleV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ingress\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeIngress() => Ingress.Count > 0;\n\n        /// <summary>\n        ///     List of rule types that the NetworkPolicy relates to. Valid options are Ingress, Egress, or Ingress,Egress. If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include \"Egress\" (since such a policy would not include an Egress section and would otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8\n        /// </summary>\n        [YamlMember(Alias = \"policyTypes\")]\n        [JsonProperty(\"policyTypes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> PolicyTypes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PolicyTypes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePolicyTypes() => PolicyTypes.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NetworkPolicyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NetworkPolicy describes what network traffic is allowed for a set of Pods\n    /// </summary>\n    [KubeObject(\"NetworkPolicy\", \"networking.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/networking.k8s.io/v1/networkpolicies\")]\n    [KubeApi(KubeAction.WatchList, \"apis/networking.k8s.io/v1/watch/networkpolicies\")]\n    [KubeApi(KubeAction.List, \"apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies\")]\n    [KubeApi(KubeAction.Create, \"apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies\")]\n    [KubeApi(KubeAction.Get, \"apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/networking.k8s.io/v1/watch/namespaces/{namespace}/networkpolicies\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies\")]\n    [KubeApi(KubeAction.Watch, \"apis/networking.k8s.io/v1/watch/namespaces/{namespace}/networkpolicies/{name}\")]\n    public partial class NetworkPolicyV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec represents the specification of the desired behavior for this NetworkPolicy.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public NetworkPolicySpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeAddressV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeAddress contains information for the node's address.\n    /// </summary>\n    public partial class NodeAddressV1\n    {\n        /// <summary>\n        ///     Node address type, one of Hostname, ExternalIP or InternalIP.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The node address.\n        /// </summary>\n        [YamlMember(Alias = \"address\")]\n        [JsonProperty(\"address\", NullValueHandling = NullValueHandling.Include)]\n        public string Address { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeAffinityV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Node affinity is a group of node affinity scheduling rules.\n    /// </summary>\n    public partial class NodeAffinityV1\n    {\n        /// <summary>\n        ///     The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\n        /// </summary>\n        [YamlMember(Alias = \"preferredDuringSchedulingIgnoredDuringExecution\")]\n        [JsonProperty(\"preferredDuringSchedulingIgnoredDuringExecution\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PreferredSchedulingTermV1> PreferredDuringSchedulingIgnoredDuringExecution { get; } = new List<PreferredSchedulingTermV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PreferredDuringSchedulingIgnoredDuringExecution\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePreferredDuringSchedulingIgnoredDuringExecution() => PreferredDuringSchedulingIgnoredDuringExecution.Count > 0;\n\n        /// <summary>\n        ///     If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\n        /// </summary>\n        [YamlMember(Alias = \"requiredDuringSchedulingIgnoredDuringExecution\")]\n        [JsonProperty(\"requiredDuringSchedulingIgnoredDuringExecution\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeSelectorV1 RequiredDuringSchedulingIgnoredDuringExecution { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeCondition contains condition information for a node.\n    /// </summary>\n    public partial class NodeConditionV1\n    {\n        /// <summary>\n        ///     Last time we got an update on a given condition.\n        /// </summary>\n        [YamlMember(Alias = \"lastHeartbeatTime\")]\n        [JsonProperty(\"lastHeartbeatTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastHeartbeatTime { get; set; }\n\n        /// <summary>\n        ///     Last time the condition transit from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     Human readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of node condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     (brief) reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeConfigSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22\n    /// </summary>\n    public partial class NodeConfigSourceV1\n    {\n        /// <summary>\n        ///     ConfigMap is a reference to a Node's ConfigMap\n        /// </summary>\n        [YamlMember(Alias = \"configMap\")]\n        [JsonProperty(\"configMap\", NullValueHandling = NullValueHandling.Ignore)]\n        public ConfigMapNodeConfigSourceV1 ConfigMap { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeConfigStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.\n    /// </summary>\n    public partial class NodeConfigStatusV1\n    {\n        /// <summary>\n        ///     Assigned reports the checkpointed config the node will try to use. When Node.Spec.ConfigSource is updated, the node checkpoints the associated config payload to local disk, along with a record indicating intended config. The node refers to this record to choose its config checkpoint, and reports this record in Assigned. Assigned only updates in the status after the record has been checkpointed to disk. When the Kubelet is restarted, it tries to make the Assigned config the Active config by loading and validating the checkpointed payload identified by Assigned.\n        /// </summary>\n        [YamlMember(Alias = \"assigned\")]\n        [JsonProperty(\"assigned\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeConfigSourceV1 Assigned { get; set; }\n\n        /// <summary>\n        ///     LastKnownGood reports the checkpointed config the node will fall back to when it encounters an error attempting to use the Assigned config. The Assigned config becomes the LastKnownGood config when the node determines that the Assigned config is stable and correct. This is currently implemented as a 10-minute soak period starting when the local record of Assigned config is updated. If the Assigned config is Active at the end of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil, because the local default config is always assumed good. You should not make assumptions about the node's method of determining config stability and correctness, as this may change or become configurable in the future.\n        /// </summary>\n        [YamlMember(Alias = \"lastKnownGood\")]\n        [JsonProperty(\"lastKnownGood\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeConfigSourceV1 LastKnownGood { get; set; }\n\n        /// <summary>\n        ///     Active reports the checkpointed config the node is actively using. Active will represent either the current version of the Assigned config, or the current LastKnownGood config, depending on whether attempting to use the Assigned config results in an error.\n        /// </summary>\n        [YamlMember(Alias = \"active\")]\n        [JsonProperty(\"active\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeConfigSourceV1 Active { get; set; }\n\n        /// <summary>\n        ///     Error describes any problems reconciling the Spec.ConfigSource to the Active config. Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting to load or validate the Assigned config, etc. Errors may occur at different points while syncing config. Earlier errors (e.g. download or checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error by fixing the config assigned in Spec.ConfigSource. You can find additional information for debugging by searching the error message in the Kubelet log. Error is a human-readable description of the error state; machines can check whether or not Error is empty, but should not rely on the stability of the Error text across Kubelet versions.\n        /// </summary>\n        [YamlMember(Alias = \"error\")]\n        [JsonProperty(\"error\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Error { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeDaemonEndpointsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeDaemonEndpoints lists ports opened by daemons running on the Node.\n    /// </summary>\n    public partial class NodeDaemonEndpointsV1\n    {\n        /// <summary>\n        ///     Endpoint on which Kubelet is listening.\n        /// </summary>\n        [YamlMember(Alias = \"kubeletEndpoint\")]\n        [JsonProperty(\"kubeletEndpoint\", NullValueHandling = NullValueHandling.Ignore)]\n        public DaemonEndpointV1 KubeletEndpoint { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeFeaturesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeFeatures describes the set of features implemented by the CRI implementation. The features contained in the NodeFeatures should depend only on the cri implementation independent of runtime handlers.\n    /// </summary>\n    public partial class NodeFeaturesV1\n    {\n        /// <summary>\n        ///     SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.\n        /// </summary>\n        [YamlMember(Alias = \"supplementalGroupsPolicy\")]\n        [JsonProperty(\"supplementalGroupsPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? SupplementalGroupsPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeList is the whole list of all Nodes which have been registered with master.\n    /// </summary>\n    [KubeListItem(\"Node\", \"v1\")]\n    [KubeObject(\"NodeList\", \"v1\")]\n    public partial class NodeListV1 : KubeResourceListV1<NodeV1>\n    {\n        /// <summary>\n        ///     List of nodes\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<NodeV1> Items { get; } = new List<NodeV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeRuntimeHandlerFeaturesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.\n    /// </summary>\n    public partial class NodeRuntimeHandlerFeaturesV1\n    {\n        /// <summary>\n        ///     RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.\n        /// </summary>\n        [YamlMember(Alias = \"recursiveReadOnlyMounts\")]\n        [JsonProperty(\"recursiveReadOnlyMounts\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? RecursiveReadOnlyMounts { get; set; }\n\n        /// <summary>\n        ///     UserNamespaces is set to true if the runtime handler supports UserNamespaces, including for volumes.\n        /// </summary>\n        [YamlMember(Alias = \"userNamespaces\")]\n        [JsonProperty(\"userNamespaces\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? UserNamespaces { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeRuntimeHandlerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeRuntimeHandler is a set of runtime handler information.\n    /// </summary>\n    public partial class NodeRuntimeHandlerV1\n    {\n        /// <summary>\n        ///     Runtime handler name. Empty for the default runtime handler.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Supported features.\n        /// </summary>\n        [YamlMember(Alias = \"features\")]\n        [JsonProperty(\"features\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeRuntimeHandlerFeaturesV1 Features { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeSelectorRequirementV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\n    /// </summary>\n    public partial class NodeSelectorRequirementV1\n    {\n        /// <summary>\n        ///     Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n        /// </summary>\n        [YamlMember(Alias = \"operator\")]\n        [JsonProperty(\"operator\", NullValueHandling = NullValueHandling.Include)]\n        public string Operator { get; set; }\n\n        /// <summary>\n        ///     An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\n        /// </summary>\n        [YamlMember(Alias = \"values\")]\n        [JsonProperty(\"values\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Values { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Values\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValues() => Values.Count > 0;\n\n        /// <summary>\n        ///     The label key that the selector applies to.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeSelectorTermV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\n    /// </summary>\n    public partial class NodeSelectorTermV1\n    {\n        /// <summary>\n        ///     A list of node selector requirements by node's labels.\n        /// </summary>\n        [YamlMember(Alias = \"matchExpressions\")]\n        [JsonProperty(\"matchExpressions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NodeSelectorRequirementV1> MatchExpressions { get; } = new List<NodeSelectorRequirementV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchExpressions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchExpressions() => MatchExpressions.Count > 0;\n\n        /// <summary>\n        ///     A list of node selector requirements by node's fields.\n        /// </summary>\n        [YamlMember(Alias = \"matchFields\")]\n        [JsonProperty(\"matchFields\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NodeSelectorRequirementV1> MatchFields { get; } = new List<NodeSelectorRequirementV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchFields\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchFields() => MatchFields.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeSelectorV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.\n    /// </summary>\n    public partial class NodeSelectorV1\n    {\n        /// <summary>\n        ///     Required. A list of node selector terms. The terms are ORed.\n        /// </summary>\n        [YamlMember(Alias = \"nodeSelectorTerms\")]\n        [JsonProperty(\"nodeSelectorTerms\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NodeSelectorTermV1> NodeSelectorTerms { get; } = new List<NodeSelectorTermV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeSpec describes the attributes that a node is created with.\n    /// </summary>\n    public partial class NodeSpecV1\n    {\n        /// <summary>\n        ///     Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966\n        /// </summary>\n        [YamlMember(Alias = \"externalID\")]\n        [JsonProperty(\"externalID\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ExternalID { get; set; }\n\n        /// <summary>\n        ///     ID of the node assigned by the cloud provider in the format: &lt;ProviderName&gt;://&lt;ProviderSpecificNodeID&gt;\n        /// </summary>\n        [YamlMember(Alias = \"providerID\")]\n        [JsonProperty(\"providerID\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ProviderID { get; set; }\n\n        /// <summary>\n        ///     PodCIDR represents the pod IP range assigned to the node.\n        /// </summary>\n        [YamlMember(Alias = \"podCIDR\")]\n        [JsonProperty(\"podCIDR\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PodCIDR { get; set; }\n\n        /// <summary>\n        ///     Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.\n        /// </summary>\n        [YamlMember(Alias = \"configSource\")]\n        [JsonProperty(\"configSource\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeConfigSourceV1 ConfigSource { get; set; }\n\n        /// <summary>\n        ///     Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration\n        /// </summary>\n        [YamlMember(Alias = \"unschedulable\")]\n        [JsonProperty(\"unschedulable\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Unschedulable { get; set; }\n\n        /// <summary>\n        ///     podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6.\n        /// </summary>\n        [MergeStrategy]\n        [YamlMember(Alias = \"podCIDRs\")]\n        [JsonProperty(\"podCIDRs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> PodCIDRs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PodCIDRs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePodCIDRs() => PodCIDRs.Count > 0;\n\n        /// <summary>\n        ///     If specified, the node's taints.\n        /// </summary>\n        [YamlMember(Alias = \"taints\")]\n        [JsonProperty(\"taints\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<TaintV1> Taints { get; } = new List<TaintV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Taints\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTaints() => Taints.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeStatus is information about the current status of a node.\n    /// </summary>\n    public partial class NodeStatusV1\n    {\n        /// <summary>\n        ///     List of volumes that are attached to the node.\n        /// </summary>\n        [YamlMember(Alias = \"volumesAttached\")]\n        [JsonProperty(\"volumesAttached\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<AttachedVolumeV1> VolumesAttached { get; } = new List<AttachedVolumeV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumesAttached\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumesAttached() => VolumesAttached.Count > 0;\n\n        /// <summary>\n        ///     Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.\n        /// </summary>\n        [YamlMember(Alias = \"allocatable\")]\n        [JsonProperty(\"allocatable\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Allocatable { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Allocatable\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllocatable() => Allocatable.Count > 0;\n\n        /// <summary>\n        ///     NodePhase is the recently observed lifecycle phase of the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated.\n        /// </summary>\n        [YamlMember(Alias = \"phase\")]\n        [JsonProperty(\"phase\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Phase { get; set; }\n\n        /// <summary>\n        ///     List of attachable volumes in use (mounted) by the node.\n        /// </summary>\n        [YamlMember(Alias = \"volumesInUse\")]\n        [JsonProperty(\"volumesInUse\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> VolumesInUse { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumesInUse\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumesInUse() => VolumesInUse.Count > 0;\n\n        /// <summary>\n        ///     Status of the config assigned to the node via the dynamic Kubelet config feature.\n        /// </summary>\n        [YamlMember(Alias = \"config\")]\n        [JsonProperty(\"config\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeConfigStatusV1 Config { get; set; }\n\n        /// <summary>\n        ///     Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info\n        /// </summary>\n        [YamlMember(Alias = \"nodeInfo\")]\n        [JsonProperty(\"nodeInfo\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeSystemInfoV1 NodeInfo { get; set; }\n\n        /// <summary>\n        ///     List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses Note: This field is declared as mergeable, but the merge key is not sufficiently unique, which can cause data corruption when it is merged. Callers should instead use a full-replacement patch. See https://pr.k8s.io/79391 for an example. Consumers should assume that addresses can change during the lifetime of a Node. However, there are some exceptions where this may not be possible, such as Pods that inherit a Node's address in its own status or consumers of the downward API (status.hostIP).\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"addresses\")]\n        [JsonProperty(\"addresses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NodeAddressV1> Addresses { get; } = new List<NodeAddressV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Addresses\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAddresses() => Addresses.Count > 0;\n\n        /// <summary>\n        ///     Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NodeConditionV1> Conditions { get; } = new List<NodeConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     Endpoints of daemons running on the Node.\n        /// </summary>\n        [YamlMember(Alias = \"daemonEndpoints\")]\n        [JsonProperty(\"daemonEndpoints\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeDaemonEndpointsV1 DaemonEndpoints { get; set; }\n\n        /// <summary>\n        ///     Features describes the set of features implemented by the CRI implementation.\n        /// </summary>\n        [YamlMember(Alias = \"features\")]\n        [JsonProperty(\"features\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeFeaturesV1 Features { get; set; }\n\n        /// <summary>\n        ///     List of container images on this node\n        /// </summary>\n        [YamlMember(Alias = \"images\")]\n        [JsonProperty(\"images\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerImageV1> Images { get; } = new List<ContainerImageV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Images\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeImages() => Images.Count > 0;\n\n        /// <summary>\n        ///     The available runtime handlers.\n        /// </summary>\n        [YamlMember(Alias = \"runtimeHandlers\")]\n        [JsonProperty(\"runtimeHandlers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NodeRuntimeHandlerV1> RuntimeHandlers { get; } = new List<NodeRuntimeHandlerV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"RuntimeHandlers\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRuntimeHandlers() => RuntimeHandlers.Count > 0;\n\n        /// <summary>\n        ///     Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/reference/node/node-status/#capacity\n        /// </summary>\n        [YamlMember(Alias = \"capacity\")]\n        [JsonProperty(\"capacity\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Capacity { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Capacity\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCapacity() => Capacity.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeSystemInfoV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NodeSystemInfo is a set of ids/uuids to uniquely identify the node.\n    /// </summary>\n    public partial class NodeSystemInfoV1\n    {\n        /// <summary>\n        ///     Boot ID reported by the node.\n        /// </summary>\n        [YamlMember(Alias = \"bootID\")]\n        [JsonProperty(\"bootID\", NullValueHandling = NullValueHandling.Include)]\n        public string BootID { get; set; }\n\n        /// <summary>\n        ///     MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html\n        /// </summary>\n        [YamlMember(Alias = \"machineID\")]\n        [JsonProperty(\"machineID\", NullValueHandling = NullValueHandling.Include)]\n        public string MachineID { get; set; }\n\n        /// <summary>\n        ///     SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid\n        /// </summary>\n        [YamlMember(Alias = \"systemUUID\")]\n        [JsonProperty(\"systemUUID\", NullValueHandling = NullValueHandling.Include)]\n        public string SystemUUID { get; set; }\n\n        /// <summary>\n        ///     The Architecture reported by the node\n        /// </summary>\n        [YamlMember(Alias = \"architecture\")]\n        [JsonProperty(\"architecture\", NullValueHandling = NullValueHandling.Include)]\n        public string Architecture { get; set; }\n\n        /// <summary>\n        ///     OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).\n        /// </summary>\n        [YamlMember(Alias = \"osImage\")]\n        [JsonProperty(\"osImage\", NullValueHandling = NullValueHandling.Include)]\n        public string OsImage { get; set; }\n\n        /// <summary>\n        ///     The Operating System reported by the node\n        /// </summary>\n        [YamlMember(Alias = \"operatingSystem\")]\n        [JsonProperty(\"operatingSystem\", NullValueHandling = NullValueHandling.Include)]\n        public string OperatingSystem { get; set; }\n\n        /// <summary>\n        ///     ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).\n        /// </summary>\n        [YamlMember(Alias = \"containerRuntimeVersion\")]\n        [JsonProperty(\"containerRuntimeVersion\", NullValueHandling = NullValueHandling.Include)]\n        public string ContainerRuntimeVersion { get; set; }\n\n        /// <summary>\n        ///     Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).\n        /// </summary>\n        [YamlMember(Alias = \"kernelVersion\")]\n        [JsonProperty(\"kernelVersion\", NullValueHandling = NullValueHandling.Include)]\n        public string KernelVersion { get; set; }\n\n        /// <summary>\n        ///     Deprecated: KubeProxy Version reported by the node.\n        /// </summary>\n        [YamlMember(Alias = \"kubeProxyVersion\")]\n        [JsonProperty(\"kubeProxyVersion\", NullValueHandling = NullValueHandling.Include)]\n        public string KubeProxyVersion { get; set; }\n\n        /// <summary>\n        ///     Kubelet Version reported by the node.\n        /// </summary>\n        [YamlMember(Alias = \"kubeletVersion\")]\n        [JsonProperty(\"kubeletVersion\", NullValueHandling = NullValueHandling.Include)]\n        public string KubeletVersion { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NodeV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).\n    /// </summary>\n    [KubeObject(\"Node\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/nodes\")]\n    [KubeApi(KubeAction.Create, \"api/v1/nodes\")]\n    [KubeApi(KubeAction.Get, \"api/v1/nodes/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/nodes/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/nodes/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/nodes/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/nodes\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/nodes\")]\n    [KubeApi(KubeAction.Get, \"api/v1/nodes/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/nodes/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/nodes/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/nodes/{name}/status\")]\n    public partial class NodeV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Most recently observed status of the node. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NonResourceAttributesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface\n    /// </summary>\n    public partial class NonResourceAttributesV1\n    {\n        /// <summary>\n        ///     Verb is the standard HTTP verb\n        /// </summary>\n        [YamlMember(Alias = \"verb\")]\n        [JsonProperty(\"verb\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Verb { get; set; }\n\n        /// <summary>\n        ///     Path is the URL path of the request\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Path { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NonResourceAttributesV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface\n    /// </summary>\n    public partial class NonResourceAttributesV1Beta1\n    {\n        /// <summary>\n        ///     Verb is the standard HTTP verb\n        /// </summary>\n        [YamlMember(Alias = \"verb\")]\n        [JsonProperty(\"verb\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Verb { get; set; }\n\n        /// <summary>\n        ///     Path is the URL path of the request\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Path { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NonResourcePolicyRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request.\n    /// </summary>\n    public partial class NonResourcePolicyRuleV1\n    {\n        /// <summary>\n        ///     `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example:\n        ///       - \"/healthz\" is legal\n        ///       - \"/hea*\" is illegal\n        ///       - \"/hea\" is legal but matches nothing\n        ///       - \"/hea/*\" also matches nothing\n        ///       - \"/healthz/*\" matches all per-component health checks.\n        ///     \"*\" matches all non-resource urls. if it is present, it must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceURLs\")]\n        [JsonProperty(\"nonResourceURLs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> NonResourceURLs { get; } = new List<string>();\n\n        /// <summary>\n        ///     `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs. If it is present, it must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NonResourcePolicyRuleV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request.\n    /// </summary>\n    public partial class NonResourcePolicyRuleV1Beta3\n    {\n        /// <summary>\n        ///     `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example:\n        ///       - \"/healthz\" is legal\n        ///       - \"/hea*\" is illegal\n        ///       - \"/hea\" is legal but matches nothing\n        ///       - \"/hea/*\" also matches nothing\n        ///       - \"/healthz/*\" matches all per-component health checks.\n        ///     \"*\" matches all non-resource urls. if it is present, it must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceURLs\")]\n        [JsonProperty(\"nonResourceURLs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> NonResourceURLs { get; } = new List<string>();\n\n        /// <summary>\n        ///     `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs. If it is present, it must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NonResourceRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NonResourceRule holds information that describes a rule for the non-resource\n    /// </summary>\n    public partial class NonResourceRuleV1\n    {\n        /// <summary>\n        ///     NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceURLs\")]\n        [JsonProperty(\"nonResourceURLs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> NonResourceURLs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NonResourceURLs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNonResourceURLs() => NonResourceURLs.Count > 0;\n\n        /// <summary>\n        ///     Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/NonResourceRuleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     NonResourceRule holds information that describes a rule for the non-resource\n    /// </summary>\n    public partial class NonResourceRuleV1Beta1\n    {\n        /// <summary>\n        ///     NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceURLs\")]\n        [JsonProperty(\"nonResourceURLs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> NonResourceURLs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NonResourceURLs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNonResourceURLs() => NonResourceURLs.Count > 0;\n\n        /// <summary>\n        ///     Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ObjectFieldSelectorV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ObjectFieldSelector selects an APIVersioned field of an object.\n    /// </summary>\n    public partial class ObjectFieldSelectorV1\n    {\n        /// <summary>\n        ///     Path of the field to select in the specified API version.\n        /// </summary>\n        [YamlMember(Alias = \"fieldPath\")]\n        [JsonProperty(\"fieldPath\", NullValueHandling = NullValueHandling.Include)]\n        public string FieldPath { get; set; }\n\n        /// <summary>\n        ///     Version of the schema the FieldPath is written in terms of, defaults to \"v1\".\n        /// </summary>\n        [YamlMember(Alias = \"apiVersion\")]\n        [JsonProperty(\"apiVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiVersion { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ObjectMetaV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.\n    /// </summary>\n    public partial class ObjectMetaV1\n    {\n        /// <summary>\n        ///     UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n        ///     \n        ///     Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n        ///     \n        ///     If this field is specified and the generated name exists, the server will return a 409.\n        ///     \n        ///     Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n        /// </summary>\n        [YamlMember(Alias = \"generateName\")]\n        [JsonProperty(\"generateName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string GenerateName { get; set; }\n\n        /// <summary>\n        ///     Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n        ///     \n        ///     Must be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.\n        /// </summary>\n        [YamlMember(Alias = \"selfLink\")]\n        [JsonProperty(\"selfLink\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SelfLink { get; set; }\n\n        /// <summary>\n        ///     A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.\n        /// </summary>\n        [YamlMember(Alias = \"generation\")]\n        [JsonProperty(\"generation\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? Generation { get; set; }\n\n        /// <summary>\n        ///     An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n        ///     \n        ///     Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\n        /// </summary>\n        [YamlMember(Alias = \"resourceVersion\")]\n        [JsonProperty(\"resourceVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceVersion { get; set; }\n\n        /// <summary>\n        ///     CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n        ///     \n        ///     Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n        /// </summary>\n        [YamlMember(Alias = \"creationTimestamp\")]\n        [JsonProperty(\"creationTimestamp\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? CreationTimestamp { get; set; }\n\n        /// <summary>\n        ///     DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n        ///     \n        ///     Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n        /// </summary>\n        [YamlMember(Alias = \"deletionTimestamp\")]\n        [JsonProperty(\"deletionTimestamp\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? DeletionTimestamp { get; set; }\n\n        /// <summary>\n        ///     Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\n        /// </summary>\n        [YamlMember(Alias = \"annotations\")]\n        [JsonProperty(\"annotations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Annotations { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Annotations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAnnotations() => Annotations.Count > 0;\n\n        /// <summary>\n        ///     Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.\n        /// </summary>\n        [YamlMember(Alias = \"deletionGracePeriodSeconds\")]\n        [JsonProperty(\"deletionGracePeriodSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? DeletionGracePeriodSeconds { get; set; }\n\n        /// <summary>\n        ///     Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order.  Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\n        /// </summary>\n        [MergeStrategy]\n        [YamlMember(Alias = \"finalizers\")]\n        [JsonProperty(\"finalizers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Finalizers { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Finalizers\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeFinalizers() => Finalizers.Count > 0;\n\n        /// <summary>\n        ///     Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\n        /// </summary>\n        [YamlMember(Alias = \"labels\")]\n        [JsonProperty(\"labels\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Labels { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Labels\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeLabels() => Labels.Count > 0;\n\n        /// <summary>\n        ///     ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.\n        /// </summary>\n        [YamlMember(Alias = \"managedFields\")]\n        [JsonProperty(\"managedFields\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ManagedFieldsEntryV1> ManagedFields { get; } = new List<ManagedFieldsEntryV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ManagedFields\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeManagedFields() => ManagedFields.Count > 0;\n\n        /// <summary>\n        ///     List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\n        /// </summary>\n        [MergeStrategy(Key = \"uid\")]\n        [YamlMember(Alias = \"ownerReferences\")]\n        [JsonProperty(\"ownerReferences\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<OwnerReferenceV1> OwnerReferences { get; } = new List<OwnerReferenceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"OwnerReferences\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOwnerReferences() => OwnerReferences.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ObjectMetricSourceV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).\n    /// </summary>\n    public partial class ObjectMetricSourceV2\n    {\n        /// <summary>\n        ///     metric identifies the target metric by name and selector\n        /// </summary>\n        [YamlMember(Alias = \"metric\")]\n        [JsonProperty(\"metric\", NullValueHandling = NullValueHandling.Include)]\n        public MetricIdentifierV2 Metric { get; set; }\n\n        /// <summary>\n        ///     describedObject specifies the descriptions of a object,such as kind,name apiVersion\n        /// </summary>\n        [YamlMember(Alias = \"describedObject\")]\n        [JsonProperty(\"describedObject\", NullValueHandling = NullValueHandling.Include)]\n        public CrossVersionObjectReferenceV2 DescribedObject { get; set; }\n\n        /// <summary>\n        ///     target specifies the target value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"target\")]\n        [JsonProperty(\"target\", NullValueHandling = NullValueHandling.Include)]\n        public MetricTargetV2 Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ObjectMetricSourceV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).\n    /// </summary>\n    public partial class ObjectMetricSourceV2Beta1\n    {\n        /// <summary>\n        ///     metricName is the name of the metric in question.\n        /// </summary>\n        [YamlMember(Alias = \"metricName\")]\n        [JsonProperty(\"metricName\", NullValueHandling = NullValueHandling.Include)]\n        public string MetricName { get; set; }\n\n        /// <summary>\n        ///     targetValue is the target value of the metric (as a quantity).\n        /// </summary>\n        [YamlMember(Alias = \"targetValue\")]\n        [JsonProperty(\"targetValue\", NullValueHandling = NullValueHandling.Include)]\n        public string TargetValue { get; set; }\n\n        /// <summary>\n        ///     target is the described Kubernetes object.\n        /// </summary>\n        [YamlMember(Alias = \"target\")]\n        [JsonProperty(\"target\", NullValueHandling = NullValueHandling.Include)]\n        public CrossVersionObjectReferenceV2Beta1 Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ObjectMetricStatusV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).\n    /// </summary>\n    public partial class ObjectMetricStatusV2\n    {\n        /// <summary>\n        ///     metric identifies the target metric by name and selector\n        /// </summary>\n        [YamlMember(Alias = \"metric\")]\n        [JsonProperty(\"metric\", NullValueHandling = NullValueHandling.Include)]\n        public MetricIdentifierV2 Metric { get; set; }\n\n        /// <summary>\n        ///     current contains the current value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"current\")]\n        [JsonProperty(\"current\", NullValueHandling = NullValueHandling.Include)]\n        public MetricValueStatusV2 Current { get; set; }\n\n        /// <summary>\n        ///     DescribedObject specifies the descriptions of a object,such as kind,name apiVersion\n        /// </summary>\n        [YamlMember(Alias = \"describedObject\")]\n        [JsonProperty(\"describedObject\", NullValueHandling = NullValueHandling.Include)]\n        public CrossVersionObjectReferenceV2 DescribedObject { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ObjectMetricStatusV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).\n    /// </summary>\n    public partial class ObjectMetricStatusV2Beta1\n    {\n        /// <summary>\n        ///     currentValue is the current value of the metric (as a quantity).\n        /// </summary>\n        [YamlMember(Alias = \"currentValue\")]\n        [JsonProperty(\"currentValue\", NullValueHandling = NullValueHandling.Include)]\n        public string CurrentValue { get; set; }\n\n        /// <summary>\n        ///     metricName is the name of the metric in question.\n        /// </summary>\n        [YamlMember(Alias = \"metricName\")]\n        [JsonProperty(\"metricName\", NullValueHandling = NullValueHandling.Include)]\n        public string MetricName { get; set; }\n\n        /// <summary>\n        ///     target is the described Kubernetes object.\n        /// </summary>\n        [YamlMember(Alias = \"target\")]\n        [JsonProperty(\"target\", NullValueHandling = NullValueHandling.Include)]\n        public CrossVersionObjectReferenceV2Beta1 Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ObjectReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ObjectReference contains enough information to let you inspect or modify the referred object.\n    /// </summary>\n    public partial class ObjectReferenceV1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.\n        /// </summary>\n        [YamlMember(Alias = \"fieldPath\")]\n        [JsonProperty(\"fieldPath\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FieldPath { get; set; }\n\n        /// <summary>\n        ///     Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\n        /// </summary>\n        [YamlMember(Alias = \"resourceVersion\")]\n        [JsonProperty(\"resourceVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceVersion { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/OpaqueDeviceConfigurationV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.\n    /// </summary>\n    public partial class OpaqueDeviceConfigurationV1Alpha3\n    {\n        /// <summary>\n        ///     Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.\n        ///     \n        ///     An admission policy provided by the driver developer could use this to decide whether it needs to validate them.\n        ///     \n        ///     Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.\n        /// </summary>\n        [YamlMember(Alias = \"driver\")]\n        [JsonProperty(\"driver\", NullValueHandling = NullValueHandling.Include)]\n        public string Driver { get; set; }\n\n        /// <summary>\n        ///     Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version (\"kind\" + \"apiVersion\" for Kubernetes types), with conversion between different versions.\n        /// </summary>\n        [YamlMember(Alias = \"parameters\")]\n        [JsonProperty(\"parameters\", NullValueHandling = NullValueHandling.Include)]\n        public RawExtensionRuntime Parameters { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/OverheadV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Overhead structure represents the resource overhead associated with running a pod.\n    /// </summary>\n    public partial class OverheadV1\n    {\n        /// <summary>\n        ///     podFixed represents the fixed resource overhead associated with running a pod.\n        /// </summary>\n        [YamlMember(Alias = \"podFixed\")]\n        [JsonProperty(\"podFixed\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> PodFixed { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PodFixed\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePodFixed() => PodFixed.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/OwnerReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.\n    /// </summary>\n    public partial class OwnerReferenceV1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Include)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.\n        /// </summary>\n        [YamlMember(Alias = \"blockOwnerDeletion\")]\n        [JsonProperty(\"blockOwnerDeletion\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? BlockOwnerDeletion { get; set; }\n\n        /// <summary>\n        ///     If true, this reference points to the managing controller.\n        /// </summary>\n        [YamlMember(Alias = \"controller\")]\n        [JsonProperty(\"controller\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Controller { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ParamKindV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ParamKind is a tuple of Group Kind and Version.\n    /// </summary>\n    public partial class ParamKindV1 : KubeObjectV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ParamKindV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ParamKind is a tuple of Group Kind and Version.\n    /// </summary>\n    public partial class ParamKindV1Alpha1 : KubeObjectV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ParamKindV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ParamKind is a tuple of Group Kind and Version.\n    /// </summary>\n    public partial class ParamKindV1Beta1 : KubeObjectV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ParamRefV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding.\n    /// </summary>\n    public partial class ParamRefV1\n    {\n        /// <summary>\n        ///     name is the name of the resource being referenced.\n        ///     \n        ///     One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\n        ///     \n        ///     A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.\n        ///     \n        ///     A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.\n        ///     \n        ///     - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.\n        ///     \n        ///     - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.\n        ///     \n        ///     Allowed values are `Allow` or `Deny`\n        ///     \n        ///     Required\n        /// </summary>\n        [YamlMember(Alias = \"parameterNotFoundAction\")]\n        [JsonProperty(\"parameterNotFoundAction\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ParameterNotFoundAction { get; set; }\n\n        /// <summary>\n        ///     selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.\n        ///     \n        ///     If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.\n        ///     \n        ///     One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ParamRefV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding.\n    /// </summary>\n    public partial class ParamRefV1Alpha1\n    {\n        /// <summary>\n        ///     `name` is the name of the resource being referenced.\n        ///     \n        ///     `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.\n        ///     \n        ///     A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.\n        ///     \n        ///     - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.\n        ///     \n        ///     - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.\n        ///     \n        ///     Allowed values are `Allow` or `Deny` Default to `Deny`\n        /// </summary>\n        [YamlMember(Alias = \"parameterNotFoundAction\")]\n        [JsonProperty(\"parameterNotFoundAction\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ParameterNotFoundAction { get; set; }\n\n        /// <summary>\n        ///     selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.\n        ///     \n        ///     If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.\n        ///     \n        ///     One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ParamRefV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding.\n    /// </summary>\n    public partial class ParamRefV1Beta1\n    {\n        /// <summary>\n        ///     name is the name of the resource being referenced.\n        ///     \n        ///     One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\n        ///     \n        ///     A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.\n        ///     \n        ///     A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.\n        ///     \n        ///     - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.\n        ///     \n        ///     - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.\n        ///     \n        ///     Allowed values are `Allow` or `Deny`\n        ///     \n        ///     Required\n        /// </summary>\n        [YamlMember(Alias = \"parameterNotFoundAction\")]\n        [JsonProperty(\"parameterNotFoundAction\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ParameterNotFoundAction { get; set; }\n\n        /// <summary>\n        ///     selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.\n        ///     \n        ///     If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.\n        ///     \n        ///     One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ParentReferenceV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ParentReference describes a reference to a parent object.\n    /// </summary>\n    public partial class ParentReferenceV1Beta1\n    {\n        /// <summary>\n        ///     Name is the name of the object being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace is the namespace of the object being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     Resource is the resource of the object being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Include)]\n        public string Resource { get; set; }\n\n        /// <summary>\n        ///     Group is the group of the object being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PatchV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.\n    /// </summary>\n    public partial class PatchV1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeClaimConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeClaimCondition contains details about state of pvc\n    /// </summary>\n    public partial class PersistentVolumeClaimConditionV1\n    {\n        /// <summary>\n        ///     lastProbeTime is the time we probed the condition.\n        /// </summary>\n        [YamlMember(Alias = \"lastProbeTime\")]\n        [JsonProperty(\"lastProbeTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastProbeTime { get; set; }\n\n        /// <summary>\n        ///     lastTransitionTime is the time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     message is the human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"Resizing\" that means the underlying persistent volume is being resized.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeClaimListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeClaimList is a list of PersistentVolumeClaim items.\n    /// </summary>\n    [KubeListItem(\"PersistentVolumeClaim\", \"v1\")]\n    [KubeObject(\"PersistentVolumeClaimList\", \"v1\")]\n    public partial class PersistentVolumeClaimListV1 : KubeResourceListV1<PersistentVolumeClaimV1>\n    {\n        /// <summary>\n        ///     items is a list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PersistentVolumeClaimV1> Items { get; } = new List<PersistentVolumeClaimV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeClaimSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes\n    /// </summary>\n    public partial class PersistentVolumeClaimSpecV1\n    {\n        /// <summary>\n        ///     dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\n        /// </summary>\n        [YamlMember(Alias = \"dataSource\")]\n        [JsonProperty(\"dataSource\", NullValueHandling = NullValueHandling.Ignore)]\n        public TypedLocalObjectReferenceV1 DataSource { get; set; }\n\n        /// <summary>\n        ///     storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n        /// </summary>\n        [YamlMember(Alias = \"storageClassName\")]\n        [JsonProperty(\"storageClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StorageClassName { get; set; }\n\n        /// <summary>\n        ///     volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).\n        /// </summary>\n        [YamlMember(Alias = \"volumeAttributesClassName\")]\n        [JsonProperty(\"volumeAttributesClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeAttributesClassName { get; set; }\n\n        /// <summary>\n        ///     volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\n        /// </summary>\n        [YamlMember(Alias = \"volumeMode\")]\n        [JsonProperty(\"volumeMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeMode { get; set; }\n\n        /// <summary>\n        ///     volumeName is the binding reference to the PersistentVolume backing this claim.\n        /// </summary>\n        [YamlMember(Alias = \"volumeName\")]\n        [JsonProperty(\"volumeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeName { get; set; }\n\n        /// <summary>\n        ///     dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef\n        ///       allows any non-core object, as well as PersistentVolumeClaim objects.\n        ///     * While dataSource ignores disallowed values (dropping them), dataSourceRef\n        ///       preserves all values, and generates an error if a disallowed value is\n        ///       specified.\n        ///     * While dataSource only allows local objects, dataSourceRef allows objects\n        ///       in any namespaces.\n        ///     (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n        /// </summary>\n        [YamlMember(Alias = \"dataSourceRef\")]\n        [JsonProperty(\"dataSourceRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public TypedObjectReferenceV1 DataSourceRef { get; set; }\n\n        /// <summary>\n        ///     selector is a label query over volumes to consider for binding.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n        /// </summary>\n        [YamlMember(Alias = \"accessModes\")]\n        [JsonProperty(\"accessModes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> AccessModes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AccessModes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAccessModes() => AccessModes.Count > 0;\n\n        /// <summary>\n        ///     resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeResourceRequirementsV1 Resources { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeClaimStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeClaimStatus is the current status of a persistent volume claim.\n    /// </summary>\n    public partial class PersistentVolumeClaimStatusV1\n    {\n        /// <summary>\n        ///     currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim This is a beta field and requires enabling VolumeAttributesClass feature (off by default).\n        /// </summary>\n        [YamlMember(Alias = \"currentVolumeAttributesClassName\")]\n        [JsonProperty(\"currentVolumeAttributesClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CurrentVolumeAttributesClassName { get; set; }\n\n        /// <summary>\n        ///     phase represents the current phase of PersistentVolumeClaim.\n        /// </summary>\n        [YamlMember(Alias = \"phase\")]\n        [JsonProperty(\"phase\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Phase { get; set; }\n\n        /// <summary>\n        ///     accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n        /// </summary>\n        [YamlMember(Alias = \"accessModes\")]\n        [JsonProperty(\"accessModes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> AccessModes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AccessModes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAccessModes() => AccessModes.Count > 0;\n\n        /// <summary>\n        ///     allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either:\n        ///     \t* Un-prefixed keys:\n        ///     \t\t- storage - the capacity of the volume.\n        ///     \t* Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\"\n        ///     Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used.\n        ///     \n        ///     ClaimResourceStatus can be in any of following states:\n        ///     \t- ControllerResizeInProgress:\n        ///     \t\tState set when resize controller starts resizing the volume in control-plane.\n        ///     \t- ControllerResizeFailed:\n        ///     \t\tState set when resize has failed in resize controller with a terminal error.\n        ///     \t- NodeResizePending:\n        ///     \t\tState set when resize controller has finished resizing the volume but further resizing of\n        ///     \t\tvolume is needed on the node.\n        ///     \t- NodeResizeInProgress:\n        ///     \t\tState set when kubelet starts resizing the volume.\n        ///     \t- NodeResizeFailed:\n        ///     \t\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\n        ///     \t\tNodeResizeFailed.\n        ///     For example: if expanding a PVC for more capacity - this field can be one of the following states:\n        ///     \t- pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\"\n        ///          - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\"\n        ///          - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\"\n        ///          - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\"\n        ///          - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\"\n        ///     When this field is not set, it means that no resize operation is in progress for the given PVC.\n        ///     \n        ///     A controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC.\n        ///     \n        ///     This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n        /// </summary>\n        [YamlMember(Alias = \"allocatedResourceStatuses\")]\n        [JsonProperty(\"allocatedResourceStatuses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> AllocatedResourceStatuses { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllocatedResourceStatuses\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllocatedResourceStatuses() => AllocatedResourceStatuses.Count > 0;\n\n        /// <summary>\n        ///     allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either:\n        ///     \t* Un-prefixed keys:\n        ///     \t\t- storage - the capacity of the volume.\n        ///     \t* Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\"\n        ///     Apart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used.\n        ///     \n        ///     Capacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity.\n        ///     \n        ///     A controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC.\n        ///     \n        ///     This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\n        /// </summary>\n        [YamlMember(Alias = \"allocatedResources\")]\n        [JsonProperty(\"allocatedResources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> AllocatedResources { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllocatedResources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllocatedResources() => AllocatedResources.Count > 0;\n\n        /// <summary>\n        ///     conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'Resizing'.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PersistentVolumeClaimConditionV1> Conditions { get; } = new List<PersistentVolumeClaimConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     ModifyVolumeStatus represents the status object of ControllerModifyVolume operation. When this is unset, there is no ModifyVolume operation being attempted. This is a beta field and requires enabling VolumeAttributesClass feature (off by default).\n        /// </summary>\n        [YamlMember(Alias = \"modifyVolumeStatus\")]\n        [JsonProperty(\"modifyVolumeStatus\", NullValueHandling = NullValueHandling.Ignore)]\n        public ModifyVolumeStatusV1 ModifyVolumeStatus { get; set; }\n\n        /// <summary>\n        ///     capacity represents the actual resources of the underlying volume.\n        /// </summary>\n        [YamlMember(Alias = \"capacity\")]\n        [JsonProperty(\"capacity\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Capacity { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Capacity\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCapacity() => Capacity.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeClaimTemplateV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.\n    /// </summary>\n    public partial class PersistentVolumeClaimTemplateV1\n    {\n        /// <summary>\n        ///     May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n        /// </summary>\n        [YamlMember(Alias = \"metadata\")]\n        [JsonProperty(\"metadata\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetaV1 Metadata { get; set; }\n\n        /// <summary>\n        ///     The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public PersistentVolumeClaimSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeClaimV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeClaim is a user's request for and claim to a persistent volume\n    /// </summary>\n    [KubeObject(\"PersistentVolumeClaim\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/persistentvolumeclaims\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/persistentvolumeclaims\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/persistentvolumeclaims\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/persistentvolumeclaims\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/persistentvolumeclaims\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/persistentvolumeclaims\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status\")]\n    public partial class PersistentVolumeClaimV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PersistentVolumeClaimSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public PersistentVolumeClaimStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeClaimVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).\n    /// </summary>\n    public partial class PersistentVolumeClaimVolumeSourceV1\n    {\n        /// <summary>\n        ///     claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n        /// </summary>\n        [YamlMember(Alias = \"claimName\")]\n        [JsonProperty(\"claimName\", NullValueHandling = NullValueHandling.Include)]\n        public string ClaimName { get; set; }\n\n        /// <summary>\n        ///     readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeList is a list of PersistentVolume items.\n    /// </summary>\n    [KubeListItem(\"PersistentVolume\", \"v1\")]\n    [KubeObject(\"PersistentVolumeList\", \"v1\")]\n    public partial class PersistentVolumeListV1 : KubeResourceListV1<PersistentVolumeV1>\n    {\n        /// <summary>\n        ///     items is a list of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PersistentVolumeV1> Items { get; } = new List<PersistentVolumeV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeSpec is the specification of a persistent volume.\n    /// </summary>\n    public partial class PersistentVolumeSpecV1\n    {\n        /// <summary>\n        ///     scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n        /// </summary>\n        [YamlMember(Alias = \"scaleIO\")]\n        [JsonProperty(\"scaleIO\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScaleIOPersistentVolumeSourceV1 ScaleIO { get; set; }\n\n        /// <summary>\n        ///     fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n        /// </summary>\n        [YamlMember(Alias = \"fc\")]\n        [JsonProperty(\"fc\", NullValueHandling = NullValueHandling.Ignore)]\n        public FCVolumeSourceV1 Fc { get; set; }\n\n        /// <summary>\n        ///     rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"rbd\")]\n        [JsonProperty(\"rbd\", NullValueHandling = NullValueHandling.Ignore)]\n        public RBDPersistentVolumeSourceV1 Rbd { get; set; }\n\n        /// <summary>\n        ///     awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n        /// </summary>\n        [YamlMember(Alias = \"awsElasticBlockStore\")]\n        [JsonProperty(\"awsElasticBlockStore\", NullValueHandling = NullValueHandling.Ignore)]\n        public AWSElasticBlockStoreVolumeSourceV1 AwsElasticBlockStore { get; set; }\n\n        /// <summary>\n        ///     azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n        /// </summary>\n        [YamlMember(Alias = \"azureFile\")]\n        [JsonProperty(\"azureFile\", NullValueHandling = NullValueHandling.Ignore)]\n        public AzureFilePersistentVolumeSourceV1 AzureFile { get; set; }\n\n        /// <summary>\n        ///     flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\n        /// </summary>\n        [YamlMember(Alias = \"flexVolume\")]\n        [JsonProperty(\"flexVolume\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlexPersistentVolumeSourceV1 FlexVolume { get; set; }\n\n        /// <summary>\n        ///     portworxVolume represents a portworx volume attached and mounted on kubelets host machine\n        /// </summary>\n        [YamlMember(Alias = \"portworxVolume\")]\n        [JsonProperty(\"portworxVolume\", NullValueHandling = NullValueHandling.Ignore)]\n        public PortworxVolumeSourceV1 PortworxVolume { get; set; }\n\n        /// <summary>\n        ///     quobyte represents a Quobyte mount on the host that shares a pod's lifetime\n        /// </summary>\n        [YamlMember(Alias = \"quobyte\")]\n        [JsonProperty(\"quobyte\", NullValueHandling = NullValueHandling.Ignore)]\n        public QuobyteVolumeSourceV1 Quobyte { get; set; }\n\n        /// <summary>\n        ///     storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.\n        /// </summary>\n        [YamlMember(Alias = \"storageClassName\")]\n        [JsonProperty(\"storageClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StorageClassName { get; set; }\n\n        /// <summary>\n        ///     Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is a beta field and requires enabling VolumeAttributesClass feature (off by default).\n        /// </summary>\n        [YamlMember(Alias = \"volumeAttributesClassName\")]\n        [JsonProperty(\"volumeAttributesClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeAttributesClassName { get; set; }\n\n        /// <summary>\n        ///     volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.\n        /// </summary>\n        [YamlMember(Alias = \"volumeMode\")]\n        [JsonProperty(\"volumeMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeMode { get; set; }\n\n        /// <summary>\n        ///     vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\n        /// </summary>\n        [YamlMember(Alias = \"vsphereVolume\")]\n        [JsonProperty(\"vsphereVolume\", NullValueHandling = NullValueHandling.Ignore)]\n        public VsphereVirtualDiskVolumeSourceV1 VsphereVolume { get; set; }\n\n        /// <summary>\n        ///     claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding\n        /// </summary>\n        [YamlMember(Alias = \"claimRef\")]\n        [JsonProperty(\"claimRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectReferenceV1 ClaimRef { get; set; }\n\n        /// <summary>\n        ///     hostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n        /// </summary>\n        [YamlMember(Alias = \"hostPath\")]\n        [JsonProperty(\"hostPath\", NullValueHandling = NullValueHandling.Ignore)]\n        public HostPathVolumeSourceV1 HostPath { get; set; }\n\n        /// <summary>\n        ///     csi represents storage that is handled by an external CSI driver (Beta feature).\n        /// </summary>\n        [YamlMember(Alias = \"csi\")]\n        [JsonProperty(\"csi\", NullValueHandling = NullValueHandling.Ignore)]\n        public CSIPersistentVolumeSourceV1 Csi { get; set; }\n\n        /// <summary>\n        ///     iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin.\n        /// </summary>\n        [YamlMember(Alias = \"iscsi\")]\n        [JsonProperty(\"iscsi\", NullValueHandling = NullValueHandling.Ignore)]\n        public ISCSIPersistentVolumeSourceV1 Iscsi { get; set; }\n\n        /// <summary>\n        ///     azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n        /// </summary>\n        [YamlMember(Alias = \"azureDisk\")]\n        [JsonProperty(\"azureDisk\", NullValueHandling = NullValueHandling.Ignore)]\n        public AzureDiskVolumeSourceV1 AzureDisk { get; set; }\n\n        /// <summary>\n        ///     gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n        /// </summary>\n        [YamlMember(Alias = \"gcePersistentDisk\")]\n        [JsonProperty(\"gcePersistentDisk\", NullValueHandling = NullValueHandling.Ignore)]\n        public GCEPersistentDiskVolumeSourceV1 GcePersistentDisk { get; set; }\n\n        /// <summary>\n        ///     photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\n        /// </summary>\n        [YamlMember(Alias = \"photonPersistentDisk\")]\n        [JsonProperty(\"photonPersistentDisk\", NullValueHandling = NullValueHandling.Ignore)]\n        public PhotonPersistentDiskVolumeSourceV1 PhotonPersistentDisk { get; set; }\n\n        /// <summary>\n        ///     local represents directly-attached storage with node affinity\n        /// </summary>\n        [YamlMember(Alias = \"local\")]\n        [JsonProperty(\"local\", NullValueHandling = NullValueHandling.Ignore)]\n        public LocalVolumeSourceV1 Local { get; set; }\n\n        /// <summary>\n        ///     cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"cinder\")]\n        [JsonProperty(\"cinder\", NullValueHandling = NullValueHandling.Ignore)]\n        public CinderPersistentVolumeSourceV1 Cinder { get; set; }\n\n        /// <summary>\n        ///     flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running\n        /// </summary>\n        [YamlMember(Alias = \"flocker\")]\n        [JsonProperty(\"flocker\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlockerVolumeSourceV1 Flocker { get; set; }\n\n        /// <summary>\n        ///     accessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\n        /// </summary>\n        [YamlMember(Alias = \"accessModes\")]\n        [JsonProperty(\"accessModes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> AccessModes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AccessModes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAccessModes() => AccessModes.Count > 0;\n\n        /// <summary>\n        ///     cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\n        /// </summary>\n        [YamlMember(Alias = \"cephfs\")]\n        [JsonProperty(\"cephfs\", NullValueHandling = NullValueHandling.Ignore)]\n        public CephFSPersistentVolumeSourceV1 Cephfs { get; set; }\n\n        /// <summary>\n        ///     glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: https://examples.k8s.io/volumes/glusterfs/README.md\n        /// </summary>\n        [YamlMember(Alias = \"glusterfs\")]\n        [JsonProperty(\"glusterfs\", NullValueHandling = NullValueHandling.Ignore)]\n        public GlusterfsPersistentVolumeSourceV1 Glusterfs { get; set; }\n\n        /// <summary>\n        ///     mountOptions is the list of mount options, e.g. [\"ro\", \"soft\"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\n        /// </summary>\n        [YamlMember(Alias = \"mountOptions\")]\n        [JsonProperty(\"mountOptions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> MountOptions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MountOptions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMountOptions() => MountOptions.Count > 0;\n\n        /// <summary>\n        ///     nfs represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n        /// </summary>\n        [YamlMember(Alias = \"nfs\")]\n        [JsonProperty(\"nfs\", NullValueHandling = NullValueHandling.Ignore)]\n        public NFSVolumeSourceV1 Nfs { get; set; }\n\n        /// <summary>\n        ///     storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://examples.k8s.io/volumes/storageos/README.md\n        /// </summary>\n        [YamlMember(Alias = \"storageos\")]\n        [JsonProperty(\"storageos\", NullValueHandling = NullValueHandling.Ignore)]\n        public StorageOSPersistentVolumeSourceV1 Storageos { get; set; }\n\n        /// <summary>\n        ///     capacity is the description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\n        /// </summary>\n        [YamlMember(Alias = \"capacity\")]\n        [JsonProperty(\"capacity\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Capacity { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Capacity\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCapacity() => Capacity.Count > 0;\n\n        /// <summary>\n        ///     nodeAffinity defines constraints that limit what nodes this volume can be accessed from. This field influences the scheduling of pods that use this volume.\n        /// </summary>\n        [YamlMember(Alias = \"nodeAffinity\")]\n        [JsonProperty(\"nodeAffinity\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeNodeAffinityV1 NodeAffinity { get; set; }\n\n        /// <summary>\n        ///     persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming\n        /// </summary>\n        [YamlMember(Alias = \"persistentVolumeReclaimPolicy\")]\n        [JsonProperty(\"persistentVolumeReclaimPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PersistentVolumeReclaimPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolumeStatus is the current status of a persistent volume.\n    /// </summary>\n    public partial class PersistentVolumeStatusV1\n    {\n        /// <summary>\n        ///     lastPhaseTransitionTime is the time the phase transitioned from one to another and automatically resets to current time everytime a volume phase transitions.\n        /// </summary>\n        [YamlMember(Alias = \"lastPhaseTransitionTime\")]\n        [JsonProperty(\"lastPhaseTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastPhaseTransitionTime { get; set; }\n\n        /// <summary>\n        ///     message is a human-readable message indicating details about why the volume is in this state.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase\n        /// </summary>\n        [YamlMember(Alias = \"phase\")]\n        [JsonProperty(\"phase\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Phase { get; set; }\n\n        /// <summary>\n        ///     reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PersistentVolumeV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\n    /// </summary>\n    [KubeObject(\"PersistentVolume\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/persistentvolumes\")]\n    [KubeApi(KubeAction.Create, \"api/v1/persistentvolumes\")]\n    [KubeApi(KubeAction.Get, \"api/v1/persistentvolumes/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/persistentvolumes/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/persistentvolumes/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/persistentvolumes/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/persistentvolumes\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/persistentvolumes\")]\n    [KubeApi(KubeAction.Get, \"api/v1/persistentvolumes/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/persistentvolumes/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/persistentvolumes/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/persistentvolumes/{name}/status\")]\n    public partial class PersistentVolumeV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PersistentVolumeSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public PersistentVolumeStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PhotonPersistentDiskVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Photon Controller persistent disk resource.\n    /// </summary>\n    public partial class PhotonPersistentDiskVolumeSourceV1\n    {\n        /// <summary>\n        ///     pdID is the ID that identifies Photon Controller persistent disk\n        /// </summary>\n        [YamlMember(Alias = \"pdID\")]\n        [JsonProperty(\"pdID\", NullValueHandling = NullValueHandling.Include)]\n        public string PdID { get; set; }\n\n        /// <summary>\n        ///     fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodAffinityTermV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key &lt;topologyKey&gt; matches that of any node on which a pod of the set of pods is running\n    /// </summary>\n    public partial class PodAffinityTermV1\n    {\n        /// <summary>\n        ///     A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.\n        /// </summary>\n        [YamlMember(Alias = \"labelSelector\")]\n        [JsonProperty(\"labelSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 LabelSelector { get; set; }\n\n        /// <summary>\n        ///     A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"matchLabelKeys\")]\n        [JsonProperty(\"matchLabelKeys\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> MatchLabelKeys { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchLabelKeys\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchLabelKeys() => MatchLabelKeys.Count > 0;\n\n        /// <summary>\n        ///     MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"mismatchLabelKeys\")]\n        [JsonProperty(\"mismatchLabelKeys\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> MismatchLabelKeys { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MismatchLabelKeys\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMismatchLabelKeys() => MismatchLabelKeys.Count > 0;\n\n        /// <summary>\n        ///     namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n        /// </summary>\n        [YamlMember(Alias = \"namespaces\")]\n        [JsonProperty(\"namespaces\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Namespaces { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Namespaces\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNamespaces() => Namespaces.Count > 0;\n\n        /// <summary>\n        ///     This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\n        /// </summary>\n        [YamlMember(Alias = \"topologyKey\")]\n        [JsonProperty(\"topologyKey\", NullValueHandling = NullValueHandling.Include)]\n        public string TopologyKey { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodAffinityV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Pod affinity is a group of inter pod affinity scheduling rules.\n    /// </summary>\n    public partial class PodAffinityV1\n    {\n        /// <summary>\n        ///     The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n        /// </summary>\n        [YamlMember(Alias = \"preferredDuringSchedulingIgnoredDuringExecution\")]\n        [JsonProperty(\"preferredDuringSchedulingIgnoredDuringExecution\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<WeightedPodAffinityTermV1> PreferredDuringSchedulingIgnoredDuringExecution { get; } = new List<WeightedPodAffinityTermV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PreferredDuringSchedulingIgnoredDuringExecution\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePreferredDuringSchedulingIgnoredDuringExecution() => PreferredDuringSchedulingIgnoredDuringExecution.Count > 0;\n\n        /// <summary>\n        ///     If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n        /// </summary>\n        [YamlMember(Alias = \"requiredDuringSchedulingIgnoredDuringExecution\")]\n        [JsonProperty(\"requiredDuringSchedulingIgnoredDuringExecution\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodAffinityTermV1> RequiredDuringSchedulingIgnoredDuringExecution { get; } = new List<PodAffinityTermV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"RequiredDuringSchedulingIgnoredDuringExecution\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequiredDuringSchedulingIgnoredDuringExecution() => RequiredDuringSchedulingIgnoredDuringExecution.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodAntiAffinityV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Pod anti affinity is a group of inter pod anti affinity scheduling rules.\n    /// </summary>\n    public partial class PodAntiAffinityV1\n    {\n        /// <summary>\n        ///     The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\n        /// </summary>\n        [YamlMember(Alias = \"preferredDuringSchedulingIgnoredDuringExecution\")]\n        [JsonProperty(\"preferredDuringSchedulingIgnoredDuringExecution\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<WeightedPodAffinityTermV1> PreferredDuringSchedulingIgnoredDuringExecution { get; } = new List<WeightedPodAffinityTermV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PreferredDuringSchedulingIgnoredDuringExecution\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePreferredDuringSchedulingIgnoredDuringExecution() => PreferredDuringSchedulingIgnoredDuringExecution.Count > 0;\n\n        /// <summary>\n        ///     If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\n        /// </summary>\n        [YamlMember(Alias = \"requiredDuringSchedulingIgnoredDuringExecution\")]\n        [JsonProperty(\"requiredDuringSchedulingIgnoredDuringExecution\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodAffinityTermV1> RequiredDuringSchedulingIgnoredDuringExecution { get; } = new List<PodAffinityTermV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"RequiredDuringSchedulingIgnoredDuringExecution\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequiredDuringSchedulingIgnoredDuringExecution() => RequiredDuringSchedulingIgnoredDuringExecution.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodCondition contains details for the current condition of this pod.\n    /// </summary>\n    public partial class PodConditionV1\n    {\n        /// <summary>\n        ///     Last time we probed the condition.\n        /// </summary>\n        [YamlMember(Alias = \"lastProbeTime\")]\n        [JsonProperty(\"lastProbeTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastProbeTime { get; set; }\n\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     Human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDNSConfigOptionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDNSConfigOption defines DNS resolver options of a pod.\n    /// </summary>\n    public partial class PodDNSConfigOptionV1\n    {\n        /// <summary>\n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Value { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDNSConfigV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.\n    /// </summary>\n    public partial class PodDNSConfigV1\n    {\n        /// <summary>\n        ///     A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\n        /// </summary>\n        [YamlMember(Alias = \"nameservers\")]\n        [JsonProperty(\"nameservers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Nameservers { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Nameservers\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNameservers() => Nameservers.Count > 0;\n\n        /// <summary>\n        ///     A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\n        /// </summary>\n        [YamlMember(Alias = \"options\")]\n        [JsonProperty(\"options\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodDNSConfigOptionV1> Options { get; } = new List<PodDNSConfigOptionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Options\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOptions() => Options.Count > 0;\n\n        /// <summary>\n        ///     A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\n        /// </summary>\n        [YamlMember(Alias = \"searches\")]\n        [JsonProperty(\"searches\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Searches { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Searches\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSearches() => Searches.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDisruptionBudgetListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDisruptionBudgetList is a collection of PodDisruptionBudgets.\n    /// </summary>\n    [KubeListItem(\"PodDisruptionBudget\", \"policy/v1\")]\n    [KubeObject(\"PodDisruptionBudgetList\", \"policy/v1\")]\n    public partial class PodDisruptionBudgetListV1 : KubeResourceListV1<PodDisruptionBudgetV1>\n    {\n        /// <summary>\n        ///     Items is a list of PodDisruptionBudgets\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PodDisruptionBudgetV1> Items { get; } = new List<PodDisruptionBudgetV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDisruptionBudgetListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDisruptionBudgetList is a collection of PodDisruptionBudgets.\n    /// </summary>\n    [KubeListItem(\"PodDisruptionBudget\", \"policy/v1beta1\")]\n    [KubeObject(\"PodDisruptionBudgetList\", \"policy/v1beta1\")]\n    public partial class PodDisruptionBudgetListV1Beta1 : KubeResourceListV1<PodDisruptionBudgetV1Beta1>\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PodDisruptionBudgetV1Beta1> Items { get; } = new List<PodDisruptionBudgetV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDisruptionBudgetSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.\n    /// </summary>\n    public partial class PodDisruptionBudgetSpecV1\n    {\n        /// <summary>\n        ///     An eviction is allowed if at most \"maxUnavailable\" pods selected by \"selector\" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with \"minAvailable\".\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n\n        /// <summary>\n        ///     An eviction is allowed if at least \"minAvailable\" pods selected by \"selector\" will still be available after the eviction, i.e. even in the absence of the evicted pod.  So for example you can prevent all voluntary evictions by specifying \"100%\".\n        /// </summary>\n        [YamlMember(Alias = \"minAvailable\")]\n        [JsonProperty(\"minAvailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MinAvailable { get; set; }\n\n        /// <summary>\n        ///     Label query over pods whose evictions are managed by the disruption budget. A null selector will match no pods, while an empty ({}) selector will select all pods within the namespace.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods should be considered for eviction. Current implementation considers healthy pods, as pods that have status.conditions item with type=\"Ready\",status=\"True\".\n        ///     \n        ///     Valid policies are IfHealthyBudget and AlwaysAllow. If no policy is specified, the default behavior will be used, which corresponds to the IfHealthyBudget policy.\n        ///     \n        ///     IfHealthyBudget policy means that running pods (status.phase=\"Running\"), but not yet healthy can be evicted only if the guarded application is not disrupted (status.currentHealthy is at least equal to status.desiredHealthy). Healthy pods will be subject to the PDB for eviction.\n        ///     \n        ///     AlwaysAllow policy means that all running pods (status.phase=\"Running\"), but not yet healthy are considered disrupted and can be evicted regardless of whether the criteria in a PDB is met. This means perspective running pods of a disrupted application might not get a chance to become healthy. Healthy pods will be subject to the PDB for eviction.\n        ///     \n        ///     Additional policies may be added in the future. Clients making eviction decisions should disallow eviction of unhealthy pods if they encounter an unrecognized policy in this field.\n        ///     \n        ///     This field is beta-level. The eviction API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"unhealthyPodEvictionPolicy\")]\n        [JsonProperty(\"unhealthyPodEvictionPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string UnhealthyPodEvictionPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDisruptionBudgetSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.\n    /// </summary>\n    public partial class PodDisruptionBudgetSpecV1Beta1\n    {\n        /// <summary>\n        ///     An eviction is allowed if at most \"maxUnavailable\" pods selected by \"selector\" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with \"minAvailable\".\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n\n        /// <summary>\n        ///     An eviction is allowed if at least \"minAvailable\" pods selected by \"selector\" will still be available after the eviction, i.e. even in the absence of the evicted pod.  So for example you can prevent all voluntary evictions by specifying \"100%\".\n        /// </summary>\n        [YamlMember(Alias = \"minAvailable\")]\n        [JsonProperty(\"minAvailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MinAvailable { get; set; }\n\n        /// <summary>\n        ///     Label query over pods whose evictions are managed by the disruption budget.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDisruptionBudgetStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.\n    /// </summary>\n    public partial class PodDisruptionBudgetStatusV1\n    {\n        /// <summary>\n        ///     Number of pod disruptions that are currently allowed.\n        /// </summary>\n        [YamlMember(Alias = \"disruptionsAllowed\")]\n        [JsonProperty(\"disruptionsAllowed\", NullValueHandling = NullValueHandling.Include)]\n        public int DisruptionsAllowed { get; set; }\n\n        /// <summary>\n        ///     Most recent generation observed when updating this PDB status. DisruptionsAllowed and other status information is valid only if observedGeneration equals to PDB's object generation.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     Conditions contain conditions for PDB. The disruption controller sets the DisruptionAllowed condition. The following are known values for the reason field (additional reasons could be added in the future): - SyncFailed: The controller encountered an error and wasn't able to compute\n        ///                   the number of allowed disruptions. Therefore no disruptions are\n        ///                   allowed and the status of the condition will be False.\n        ///     - InsufficientPods: The number of pods are either at or below the number\n        ///                         required by the PodDisruptionBudget. No disruptions are\n        ///                         allowed and the status of the condition will be False.\n        ///     - SufficientPods: There are more pods than required by the PodDisruptionBudget.\n        ///                       The condition will be True, and the number of allowed\n        ///                       disruptions are provided by the disruptionsAllowed property.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ConditionV1> Conditions { get; } = new List<ConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.\n        /// </summary>\n        [YamlMember(Alias = \"disruptedPods\")]\n        [JsonProperty(\"disruptedPods\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, DateTime> DisruptedPods { get; } = new Dictionary<string, DateTime>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"DisruptedPods\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDisruptedPods() => DisruptedPods.Count > 0;\n\n        /// <summary>\n        ///     total number of pods counted by this disruption budget\n        /// </summary>\n        [YamlMember(Alias = \"expectedPods\")]\n        [JsonProperty(\"expectedPods\", NullValueHandling = NullValueHandling.Include)]\n        public int ExpectedPods { get; set; }\n\n        /// <summary>\n        ///     current number of healthy pods\n        /// </summary>\n        [YamlMember(Alias = \"currentHealthy\")]\n        [JsonProperty(\"currentHealthy\", NullValueHandling = NullValueHandling.Include)]\n        public int CurrentHealthy { get; set; }\n\n        /// <summary>\n        ///     minimum desired number of healthy pods\n        /// </summary>\n        [YamlMember(Alias = \"desiredHealthy\")]\n        [JsonProperty(\"desiredHealthy\", NullValueHandling = NullValueHandling.Include)]\n        public int DesiredHealthy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDisruptionBudgetStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.\n    /// </summary>\n    public partial class PodDisruptionBudgetStatusV1Beta1\n    {\n        /// <summary>\n        ///     Number of pod disruptions that are currently allowed.\n        /// </summary>\n        [YamlMember(Alias = \"disruptionsAllowed\")]\n        [JsonProperty(\"disruptionsAllowed\", NullValueHandling = NullValueHandling.Include)]\n        public int DisruptionsAllowed { get; set; }\n\n        /// <summary>\n        ///     Most recent generation observed when updating this PDB status. PodDisruptionsAllowed and other status informatio is valid only if observedGeneration equals to PDB's object generation.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.\n        /// </summary>\n        [YamlMember(Alias = \"disruptedPods\")]\n        [JsonProperty(\"disruptedPods\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, DateTime> DisruptedPods { get; } = new Dictionary<string, DateTime>();\n\n        /// <summary>\n        ///     total number of pods counted by this disruption budget\n        /// </summary>\n        [YamlMember(Alias = \"expectedPods\")]\n        [JsonProperty(\"expectedPods\", NullValueHandling = NullValueHandling.Include)]\n        public int ExpectedPods { get; set; }\n\n        /// <summary>\n        ///     current number of healthy pods\n        /// </summary>\n        [YamlMember(Alias = \"currentHealthy\")]\n        [JsonProperty(\"currentHealthy\", NullValueHandling = NullValueHandling.Include)]\n        public int CurrentHealthy { get; set; }\n\n        /// <summary>\n        ///     minimum desired number of healthy pods\n        /// </summary>\n        [YamlMember(Alias = \"desiredHealthy\")]\n        [JsonProperty(\"desiredHealthy\", NullValueHandling = NullValueHandling.Include)]\n        public int DesiredHealthy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDisruptionBudgetV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods\n    /// </summary>\n    [KubeObject(\"PodDisruptionBudget\", \"policy/v1\")]\n    [KubeApi(KubeAction.List, \"apis/policy/v1/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/policy/v1/watch/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.List, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.Create, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.Get, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.Get, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status\")]\n    public partial class PodDisruptionBudgetV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the PodDisruptionBudget.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodDisruptionBudgetSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Most recently observed status of the PodDisruptionBudget.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodDisruptionBudgetStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodDisruptionBudgetV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods\n    /// </summary>\n    [KubeObject(\"PodDisruptionBudget\", \"policy/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/policy/v1beta1/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/policy/v1beta1/watch/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.List, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.Create, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.Get, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/policy/v1beta1/watch/namespaces/{namespace}/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets\")]\n    [KubeApi(KubeAction.Get, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/policy/v1beta1/watch/namespaces/{namespace}/poddisruptionbudgets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/status\")]\n    public partial class PodDisruptionBudgetV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the PodDisruptionBudget.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodDisruptionBudgetSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Most recently observed status of the PodDisruptionBudget.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodDisruptionBudgetStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodFailurePolicyOnExitCodesRequirementV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodFailurePolicyOnExitCodesRequirement describes the requirement for handling a failed pod based on its container exit codes. In particular, it lookups the .state.terminated.exitCode for each app container and init container status, represented by the .status.containerStatuses and .status.initContainerStatuses fields in the Pod status, respectively. Containers completed with success (exit code 0) are excluded from the requirement check.\n    /// </summary>\n    public partial class PodFailurePolicyOnExitCodesRequirementV1\n    {\n        /// <summary>\n        ///     Restricts the check for exit codes to the container with the specified name. When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template.\n        /// </summary>\n        [YamlMember(Alias = \"containerName\")]\n        [JsonProperty(\"containerName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ContainerName { get; set; }\n\n        /// <summary>\n        ///     Represents the relationship between the container exit code(s) and the specified values. Containers completed with success (exit code 0) are excluded from the requirement check. Possible values are:\n        ///     \n        ///     - In: the requirement is satisfied if at least one container exit code\n        ///       (might be multiple if there are multiple containers not restricted\n        ///       by the 'containerName' field) is in the set of specified values.\n        ///     - NotIn: the requirement is satisfied if at least one container exit code\n        ///       (might be multiple if there are multiple containers not restricted\n        ///       by the 'containerName' field) is not in the set of specified values.\n        ///     Additional values are considered to be added in the future. Clients should react to an unknown operator by assuming the requirement is not satisfied.\n        /// </summary>\n        [YamlMember(Alias = \"operator\")]\n        [JsonProperty(\"operator\", NullValueHandling = NullValueHandling.Include)]\n        public string Operator { get; set; }\n\n        /// <summary>\n        ///     Specifies the set of values. Each returned container exit code (might be multiple in case of multiple containers) is checked against this set of values with respect to the operator. The list of values must be ordered and must not contain duplicates. Value '0' cannot be used for the In operator. At least one element is required. At most 255 elements are allowed.\n        /// </summary>\n        [YamlMember(Alias = \"values\")]\n        [JsonProperty(\"values\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<int> Values { get; } = new List<int>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodFailurePolicyOnPodConditionsPatternV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an actual pod condition type.\n    /// </summary>\n    public partial class PodFailurePolicyOnPodConditionsPatternV1\n    {\n        /// <summary>\n        ///     Specifies the required Pod condition type. To match a pod condition it is required that specified type equals the pod condition type.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Specifies the required Pod condition status. To match a pod condition it is required that the specified status equals the pod condition status. Defaults to True.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodFailurePolicyRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. One of onExitCodes and onPodConditions, but not both, can be used in each rule.\n    /// </summary>\n    public partial class PodFailurePolicyRuleV1\n    {\n        /// <summary>\n        ///     Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are:\n        ///     \n        ///     - FailJob: indicates that the pod's job is marked as Failed and all\n        ///       running pods are terminated.\n        ///     - FailIndex: indicates that the pod's index is marked as Failed and will\n        ///       not be restarted.\n        ///       This value is beta-level. It can be used when the\n        ///       `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\n        ///     - Ignore: indicates that the counter towards the .backoffLimit is not\n        ///       incremented and a replacement pod is created.\n        ///     - Count: indicates that the pod is handled in the default way - the\n        ///       counter towards the .backoffLimit is incremented.\n        ///     Additional values are considered to be added in the future. Clients should react to an unknown action by skipping the rule.\n        /// </summary>\n        [YamlMember(Alias = \"action\")]\n        [JsonProperty(\"action\", NullValueHandling = NullValueHandling.Include)]\n        public string Action { get; set; }\n\n        /// <summary>\n        ///     Represents the requirement on the container exit codes.\n        /// </summary>\n        [YamlMember(Alias = \"onExitCodes\")]\n        [JsonProperty(\"onExitCodes\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodFailurePolicyOnExitCodesRequirementV1 OnExitCodes { get; set; }\n\n        /// <summary>\n        ///     Represents the requirement on the pod conditions. The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed.\n        /// </summary>\n        [YamlMember(Alias = \"onPodConditions\")]\n        [JsonProperty(\"onPodConditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodFailurePolicyOnPodConditionsPatternV1> OnPodConditions { get; } = new List<PodFailurePolicyOnPodConditionsPatternV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"OnPodConditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOnPodConditions() => OnPodConditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodFailurePolicyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodFailurePolicy describes how failed pods influence the backoffLimit.\n    /// </summary>\n    public partial class PodFailurePolicyV1\n    {\n        /// <summary>\n        ///     A list of pod failure policy rules. The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodFailurePolicyRuleV1> Rules { get; } = new List<PodFailurePolicyRuleV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodIPV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodIP represents a single IP address allocated to the pod.\n    /// </summary>\n    public partial class PodIPV1\n    {\n        /// <summary>\n        ///     IP is the IP address assigned to the pod\n        /// </summary>\n        [YamlMember(Alias = \"ip\")]\n        [JsonProperty(\"ip\", NullValueHandling = NullValueHandling.Include)]\n        public string Ip { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodList is a list of Pods.\n    /// </summary>\n    [KubeListItem(\"Pod\", \"v1\")]\n    [KubeObject(\"PodList\", \"v1\")]\n    public partial class PodListV1 : KubeResourceListV1<PodV1>\n    {\n        /// <summary>\n        ///     List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PodV1> Items { get; } = new List<PodV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodOSV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodOS defines the OS parameters of a pod.\n    /// </summary>\n    public partial class PodOSV1\n    {\n        /// <summary>\n        ///     Name is the name of the operating system. The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodPresetListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodPresetList is a list of PodPreset objects.\n    /// </summary>\n    [KubeListItem(\"PodPreset\", \"settings.k8s.io/v1alpha1\")]\n    [KubeObject(\"PodPresetList\", \"settings.k8s.io/v1alpha1\")]\n    public partial class PodPresetListV1Alpha1 : KubeResourceListV1<PodPresetV1Alpha1>\n    {\n        /// <summary>\n        ///     Items is a list of schema objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PodPresetV1Alpha1> Items { get; } = new List<PodPresetV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodPresetSpecV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodPresetSpec is a description of a pod preset.\n    /// </summary>\n    public partial class PodPresetSpecV1Alpha1\n    {\n        /// <summary>\n        ///     EnvFrom defines the collection of EnvFromSource to inject into containers.\n        /// </summary>\n        [YamlMember(Alias = \"envFrom\")]\n        [JsonProperty(\"envFrom\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EnvFromSourceV1> EnvFrom { get; } = new List<EnvFromSourceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"EnvFrom\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEnvFrom() => EnvFrom.Count > 0;\n\n        /// <summary>\n        ///     Selector is a label query over a set of resources, in this case pods. Required.\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     VolumeMounts defines the collection of VolumeMount to inject into containers.\n        /// </summary>\n        [YamlMember(Alias = \"volumeMounts\")]\n        [JsonProperty(\"volumeMounts\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeMountV1> VolumeMounts { get; } = new List<VolumeMountV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeMounts\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeMounts() => VolumeMounts.Count > 0;\n\n        /// <summary>\n        ///     Volumes defines the collection of Volume to inject into the pod.\n        /// </summary>\n        [YamlMember(Alias = \"volumes\")]\n        [JsonProperty(\"volumes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeV1> Volumes { get; } = new List<VolumeV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Volumes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumes() => Volumes.Count > 0;\n\n        /// <summary>\n        ///     Env defines the collection of EnvVar to inject into containers.\n        /// </summary>\n        [YamlMember(Alias = \"env\")]\n        [JsonProperty(\"env\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EnvVarV1> Env { get; } = new List<EnvVarV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Env\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEnv() => Env.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodPresetV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodPreset is a policy resource that defines additional runtime requirements for a Pod.\n    /// </summary>\n    [KubeObject(\"PodPreset\", \"settings.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/settings.k8s.io/v1alpha1/podpresets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/settings.k8s.io/v1alpha1/watch/podpresets\")]\n    [KubeApi(KubeAction.List, \"apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets\")]\n    [KubeApi(KubeAction.Create, \"apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets\")]\n    [KubeApi(KubeAction.Get, \"apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/settings.k8s.io/v1alpha1/watch/namespaces/{namespace}/podpresets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets\")]\n    [KubeApi(KubeAction.Watch, \"apis/settings.k8s.io/v1alpha1/watch/namespaces/{namespace}/podpresets/{name}\")]\n    public partial class PodPresetV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodPresetSpecV1Alpha1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodReadinessGateV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodReadinessGate contains the reference to a pod condition\n    /// </summary>\n    public partial class PodReadinessGateV1\n    {\n        /// <summary>\n        ///     ConditionType refers to a condition in the pod's condition list with matching type.\n        /// </summary>\n        [YamlMember(Alias = \"conditionType\")]\n        [JsonProperty(\"conditionType\", NullValueHandling = NullValueHandling.Include)]\n        public string ConditionType { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodResourceClaimStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodResourceClaimStatus is stored in the PodStatus for each PodResourceClaim which references a ResourceClaimTemplate. It stores the generated name for the corresponding ResourceClaim.\n    /// </summary>\n    public partial class PodResourceClaimStatusV1\n    {\n        /// <summary>\n        ///     Name uniquely identifies this resource claim inside the pod. This must match the name of an entry in pod.spec.resourceClaims, which implies that the string must be a DNS_LABEL.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     ResourceClaimName is the name of the ResourceClaim that was generated for the Pod in the namespace of the Pod. If this is unset, then generating a ResourceClaim was not necessary. The pod.spec.resourceClaims entry can be ignored in this case.\n        /// </summary>\n        [YamlMember(Alias = \"resourceClaimName\")]\n        [JsonProperty(\"resourceClaimName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceClaimName { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodResourceClaimV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodResourceClaim references exactly one ResourceClaim, either directly or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim for the pod.\n    ///     \n    ///     It adds a name to it that uniquely identifies the ResourceClaim inside the Pod. Containers that need access to the ResourceClaim reference it with this name.\n    /// </summary>\n    public partial class PodResourceClaimV1\n    {\n        /// <summary>\n        ///     Name uniquely identifies this resource claim inside the pod. This must be a DNS_LABEL.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod.\n        ///     \n        ///     Exactly one of ResourceClaimName and ResourceClaimTemplateName must be set.\n        /// </summary>\n        [YamlMember(Alias = \"resourceClaimName\")]\n        [JsonProperty(\"resourceClaimName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceClaimName { get; set; }\n\n        /// <summary>\n        ///     ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod.\n        ///     \n        ///     The template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\n        ///     \n        ///     This field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim.\n        ///     \n        ///     Exactly one of ResourceClaimName and ResourceClaimTemplateName must be set.\n        /// </summary>\n        [YamlMember(Alias = \"resourceClaimTemplateName\")]\n        [JsonProperty(\"resourceClaimTemplateName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceClaimTemplateName { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSchedulingContextListV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSchedulingContextList is a collection of Pod scheduling objects.\n    /// </summary>\n    [KubeListItem(\"PodSchedulingContext\", \"resource.k8s.io/v1alpha3\")]\n    [KubeObject(\"PodSchedulingContextList\", \"resource.k8s.io/v1alpha3\")]\n    public partial class PodSchedulingContextListV1Alpha3 : KubeResourceListV1<PodSchedulingContextV1Alpha3>\n    {\n        /// <summary>\n        ///     Items is the list of PodSchedulingContext objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PodSchedulingContextV1Alpha3> Items { get; } = new List<PodSchedulingContextV1Alpha3>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSchedulingContextSpecV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSchedulingContextSpec describes where resources for the Pod are needed.\n    /// </summary>\n    public partial class PodSchedulingContextSpecV1Alpha3\n    {\n        /// <summary>\n        ///     SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use \"WaitForFirstConsumer\" allocation is to be attempted.\n        /// </summary>\n        [YamlMember(Alias = \"selectedNode\")]\n        [JsonProperty(\"selectedNode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SelectedNode { get; set; }\n\n        /// <summary>\n        ///     PotentialNodes lists nodes where the Pod might be able to run.\n        ///     \n        ///     The size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.\n        /// </summary>\n        [YamlMember(Alias = \"potentialNodes\")]\n        [JsonProperty(\"potentialNodes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> PotentialNodes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PotentialNodes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePotentialNodes() => PotentialNodes.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSchedulingContextStatusV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSchedulingContextStatus describes where resources for the Pod can be allocated.\n    /// </summary>\n    public partial class PodSchedulingContextStatusV1Alpha3\n    {\n        /// <summary>\n        ///     ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses \"WaitForFirstConsumer\" allocation mode.\n        /// </summary>\n        [YamlMember(Alias = \"resourceClaims\")]\n        [JsonProperty(\"resourceClaims\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourceClaimSchedulingStatusV1Alpha3> ResourceClaims { get; } = new List<ResourceClaimSchedulingStatusV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceClaims\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceClaims() => ResourceClaims.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSchedulingContextV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use \"WaitForFirstConsumer\" allocation mode.\n    ///     \n    ///     This is an alpha type and requires enabling the DRAControlPlaneController feature gate.\n    /// </summary>\n    [KubeObject(\"PodSchedulingContext\", \"resource.k8s.io/v1alpha3\")]\n    [KubeApi(KubeAction.List, \"apis/resource.k8s.io/v1alpha3/podschedulingcontexts\")]\n    [KubeApi(KubeAction.WatchList, \"apis/resource.k8s.io/v1alpha3/watch/podschedulingcontexts\")]\n    [KubeApi(KubeAction.List, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts\")]\n    [KubeApi(KubeAction.Create, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts\")]\n    [KubeApi(KubeAction.Get, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/podschedulingcontexts\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts\")]\n    [KubeApi(KubeAction.Get, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/podschedulingcontexts/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status\")]\n    public partial class PodSchedulingContextV1Alpha3 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec describes where resources for the Pod are needed.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public PodSchedulingContextSpecV1Alpha3 Spec { get; set; }\n\n        /// <summary>\n        ///     Status describes where resources for the Pod can be allocated.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodSchedulingContextStatusV1Alpha3 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSchedulingGateV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSchedulingGate is associated to a Pod to guard its scheduling.\n    /// </summary>\n    public partial class PodSchedulingGateV1\n    {\n        /// <summary>\n        ///     Name of the scheduling gate. Each scheduling gate must have a unique name field.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSecurityContextV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext.  Field values of container.securityContext take precedence over field values of PodSecurityContext.\n    /// </summary>\n    public partial class PodSecurityContextV1\n    {\n        /// <summary>\n        ///     appArmorProfile is the AppArmor options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"appArmorProfile\")]\n        [JsonProperty(\"appArmorProfile\", NullValueHandling = NullValueHandling.Ignore)]\n        public AppArmorProfileV1 AppArmorProfile { get; set; }\n\n        /// <summary>\n        ///     The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"seccompProfile\")]\n        [JsonProperty(\"seccompProfile\", NullValueHandling = NullValueHandling.Ignore)]\n        public SeccompProfileV1 SeccompProfile { get; set; }\n\n        /// <summary>\n        ///     A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n        ///     \n        ///     1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n        ///     \n        ///     If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"fsGroup\")]\n        [JsonProperty(\"fsGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? FsGroup { get; set; }\n\n        /// <summary>\n        ///     The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"runAsGroup\")]\n        [JsonProperty(\"runAsGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? RunAsGroup { get; set; }\n\n        /// <summary>\n        ///     The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"runAsUser\")]\n        [JsonProperty(\"runAsUser\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? RunAsUser { get; set; }\n\n        /// <summary>\n        ///     The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"seLinuxOptions\")]\n        [JsonProperty(\"seLinuxOptions\", NullValueHandling = NullValueHandling.Ignore)]\n        public SELinuxOptionsV1 SeLinuxOptions { get; set; }\n\n        /// <summary>\n        ///     A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified).  If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"supplementalGroups\")]\n        [JsonProperty(\"supplementalGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<long> SupplementalGroups { get; } = new List<long>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"SupplementalGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSupplementalGroups() => SupplementalGroups.Count > 0;\n\n        /// <summary>\n        ///     Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"sysctls\")]\n        [JsonProperty(\"sysctls\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SysctlV1> Sysctls { get; } = new List<SysctlV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Sysctls\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSysctls() => Sysctls.Count > 0;\n\n        /// <summary>\n        ///     The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n        /// </summary>\n        [YamlMember(Alias = \"windowsOptions\")]\n        [JsonProperty(\"windowsOptions\", NullValueHandling = NullValueHandling.Ignore)]\n        public WindowsSecurityContextOptionsV1 WindowsOptions { get; set; }\n\n        /// <summary>\n        ///     Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n        /// </summary>\n        [YamlMember(Alias = \"runAsNonRoot\")]\n        [JsonProperty(\"runAsNonRoot\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? RunAsNonRoot { get; set; }\n\n        /// <summary>\n        ///     fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"fsGroupChangePolicy\")]\n        [JsonProperty(\"fsGroupChangePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsGroupChangePolicy { get; set; }\n\n        /// <summary>\n        ///     Defines how supplemental groups of the first container processes are calculated. Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"supplementalGroupsPolicy\")]\n        [JsonProperty(\"supplementalGroupsPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SupplementalGroupsPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSecurityPolicyListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSecurityPolicyList is a list of PodSecurityPolicy objects.\n    /// </summary>\n    [KubeListItem(\"PodSecurityPolicy\", \"policy/v1beta1\")]\n    [KubeObject(\"PodSecurityPolicyList\", \"policy/v1beta1\")]\n    public partial class PodSecurityPolicyListV1Beta1 : KubeResourceListV1<PodSecurityPolicyV1Beta1>\n    {\n        /// <summary>\n        ///     items is a list of schema objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PodSecurityPolicyV1Beta1> Items { get; } = new List<PodSecurityPolicyV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSecurityPolicySpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSecurityPolicySpec defines the policy enforced. Deprecated: use PodSecurityPolicySpec from policy API Group instead.\n    /// </summary>\n    public partial class PodSecurityPolicySpecV1Beta1\n    {\n        /// <summary>\n        ///     hostIPC determines if the policy allows the use of HostIPC in the pod spec.\n        /// </summary>\n        [YamlMember(Alias = \"hostIPC\")]\n        [JsonProperty(\"hostIPC\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? HostIPC { get; set; }\n\n        /// <summary>\n        ///     hostPID determines if the policy allows the use of HostPID in the pod spec.\n        /// </summary>\n        [YamlMember(Alias = \"hostPID\")]\n        [JsonProperty(\"hostPID\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? HostPID { get; set; }\n\n        /// <summary>\n        ///     privileged determines if a pod can request to be run as privileged.\n        /// </summary>\n        [YamlMember(Alias = \"privileged\")]\n        [JsonProperty(\"privileged\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Privileged { get; set; }\n\n        /// <summary>\n        ///     hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.\n        /// </summary>\n        [YamlMember(Alias = \"hostNetwork\")]\n        [JsonProperty(\"hostNetwork\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? HostNetwork { get; set; }\n\n        /// <summary>\n        ///     readOnlyRootFilesystem when set to true will force containers to run with a read only root file system.  If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.\n        /// </summary>\n        [YamlMember(Alias = \"readOnlyRootFilesystem\")]\n        [JsonProperty(\"readOnlyRootFilesystem\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnlyRootFilesystem { get; set; }\n\n        /// <summary>\n        ///     allowPrivilegeEscalation determines if a pod can request to allow privilege escalation. If unspecified, defaults to true.\n        /// </summary>\n        [YamlMember(Alias = \"allowPrivilegeEscalation\")]\n        [JsonProperty(\"allowPrivilegeEscalation\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AllowPrivilegeEscalation { get; set; }\n\n        /// <summary>\n        ///     defaultAllowPrivilegeEscalation controls the default setting for whether a process can gain more privileges than its parent process.\n        /// </summary>\n        [YamlMember(Alias = \"defaultAllowPrivilegeEscalation\")]\n        [JsonProperty(\"defaultAllowPrivilegeEscalation\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? DefaultAllowPrivilegeEscalation { get; set; }\n\n        /// <summary>\n        ///     fsGroup is the strategy that will dictate what fs group is used by the SecurityContext.\n        /// </summary>\n        [YamlMember(Alias = \"fsGroup\")]\n        [JsonProperty(\"fsGroup\", NullValueHandling = NullValueHandling.Include)]\n        public FSGroupStrategyOptionsV1Beta1 FsGroup { get; set; }\n\n        /// <summary>\n        ///     runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set.\n        /// </summary>\n        [YamlMember(Alias = \"runAsUser\")]\n        [JsonProperty(\"runAsUser\", NullValueHandling = NullValueHandling.Include)]\n        public RunAsUserStrategyOptionsV1Beta1 RunAsUser { get; set; }\n\n        /// <summary>\n        ///     allowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both allowedCapabilities and requiredDropCapabilities.\n        /// </summary>\n        [YamlMember(Alias = \"allowedCapabilities\")]\n        [JsonProperty(\"allowedCapabilities\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> AllowedCapabilities { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllowedCapabilities\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllowedCapabilities() => AllowedCapabilities.Count > 0;\n\n        /// <summary>\n        ///     allowedFlexVolumes is a whitelist of allowed Flexvolumes.  Empty or nil indicates that all Flexvolumes may be used.  This parameter is effective only when the usage of the Flexvolumes is allowed in the \"volumes\" field.\n        /// </summary>\n        [YamlMember(Alias = \"allowedFlexVolumes\")]\n        [JsonProperty(\"allowedFlexVolumes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<AllowedFlexVolumeV1Beta1> AllowedFlexVolumes { get; } = new List<AllowedFlexVolumeV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllowedFlexVolumes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllowedFlexVolumes() => AllowedFlexVolumes.Count > 0;\n\n        /// <summary>\n        ///     allowedHostPaths is a white list of allowed host paths. Empty indicates that all host paths may be used.\n        /// </summary>\n        [YamlMember(Alias = \"allowedHostPaths\")]\n        [JsonProperty(\"allowedHostPaths\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<AllowedHostPathV1Beta1> AllowedHostPaths { get; } = new List<AllowedHostPathV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllowedHostPaths\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllowedHostPaths() => AllowedHostPaths.Count > 0;\n\n        /// <summary>\n        ///     allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in \"*\" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed unsafe sysctls explicitly to avoid rejection.\n        ///     \n        ///     Examples: e.g. \"foo/*\" allows \"foo/bar\", \"foo/baz\", etc. e.g. \"foo.*\" allows \"foo.bar\", \"foo.baz\", etc.\n        /// </summary>\n        [YamlMember(Alias = \"allowedUnsafeSysctls\")]\n        [JsonProperty(\"allowedUnsafeSysctls\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> AllowedUnsafeSysctls { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllowedUnsafeSysctls\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllowedUnsafeSysctls() => AllowedUnsafeSysctls.Count > 0;\n\n        /// <summary>\n        ///     defaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability.  You may not list a capability in both defaultAddCapabilities and requiredDropCapabilities. Capabilities added here are implicitly allowed, and need not be included in the allowedCapabilities list.\n        /// </summary>\n        [YamlMember(Alias = \"defaultAddCapabilities\")]\n        [JsonProperty(\"defaultAddCapabilities\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> DefaultAddCapabilities { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"DefaultAddCapabilities\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDefaultAddCapabilities() => DefaultAddCapabilities.Count > 0;\n\n        /// <summary>\n        ///     forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in \"*\" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n        ///     \n        ///     Examples: e.g. \"foo/*\" forbids \"foo/bar\", \"foo/baz\", etc. e.g. \"foo.*\" forbids \"foo.bar\", \"foo.baz\", etc.\n        /// </summary>\n        [YamlMember(Alias = \"forbiddenSysctls\")]\n        [JsonProperty(\"forbiddenSysctls\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ForbiddenSysctls { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ForbiddenSysctls\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeForbiddenSysctls() => ForbiddenSysctls.Count > 0;\n\n        /// <summary>\n        ///     hostPorts determines which host port ranges are allowed to be exposed.\n        /// </summary>\n        [YamlMember(Alias = \"hostPorts\")]\n        [JsonProperty(\"hostPorts\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HostPortRangeV1Beta1> HostPorts { get; } = new List<HostPortRangeV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"HostPorts\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHostPorts() => HostPorts.Count > 0;\n\n        /// <summary>\n        ///     requiredDropCapabilities are the capabilities that will be dropped from the container.  These are required to be dropped and cannot be added.\n        /// </summary>\n        [YamlMember(Alias = \"requiredDropCapabilities\")]\n        [JsonProperty(\"requiredDropCapabilities\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> RequiredDropCapabilities { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"RequiredDropCapabilities\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequiredDropCapabilities() => RequiredDropCapabilities.Count > 0;\n\n        /// <summary>\n        ///     supplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext.\n        /// </summary>\n        [YamlMember(Alias = \"supplementalGroups\")]\n        [JsonProperty(\"supplementalGroups\", NullValueHandling = NullValueHandling.Include)]\n        public SupplementalGroupsStrategyOptionsV1Beta1 SupplementalGroups { get; set; }\n\n        /// <summary>\n        ///     volumes is a white list of allowed volume plugins. Empty indicates that no volumes may be used. To allow all volumes you may use '*'.\n        /// </summary>\n        [YamlMember(Alias = \"volumes\")]\n        [JsonProperty(\"volumes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Volumes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Volumes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumes() => Volumes.Count > 0;\n\n        /// <summary>\n        ///     seLinux is the strategy that will dictate the allowable labels that may be set.\n        /// </summary>\n        [YamlMember(Alias = \"seLinux\")]\n        [JsonProperty(\"seLinux\", NullValueHandling = NullValueHandling.Include)]\n        public SELinuxStrategyOptionsV1Beta1 SeLinux { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSecurityPolicyV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSecurityPolicy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.\n    /// </summary>\n    [KubeObject(\"PodSecurityPolicy\", \"policy/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/policy/v1beta1/podsecuritypolicies\")]\n    [KubeApi(KubeAction.Create, \"apis/policy/v1beta1/podsecuritypolicies\")]\n    [KubeApi(KubeAction.Get, \"apis/policy/v1beta1/podsecuritypolicies/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/policy/v1beta1/podsecuritypolicies/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/policy/v1beta1/podsecuritypolicies/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/policy/v1beta1/podsecuritypolicies/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/policy/v1beta1/watch/podsecuritypolicies\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/policy/v1beta1/podsecuritypolicies\")]\n    [KubeApi(KubeAction.Watch, \"apis/policy/v1beta1/watch/podsecuritypolicies/{name}\")]\n    public partial class PodSecurityPolicyV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec defines the policy enforced.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodSecurityPolicySpecV1Beta1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodSpec is a description of a pod.\n    /// </summary>\n    public partial class PodSpecV1\n    {\n        /// <summary>\n        ///     Use the host's ipc namespace. Optional: Default to false.\n        /// </summary>\n        [YamlMember(Alias = \"hostIPC\")]\n        [JsonProperty(\"hostIPC\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? HostIPC { get; set; }\n\n        /// <summary>\n        ///     Use the host's pid namespace. Optional: Default to false.\n        /// </summary>\n        [YamlMember(Alias = \"hostPID\")]\n        [JsonProperty(\"hostPID\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? HostPID { get; set; }\n\n        /// <summary>\n        ///     If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.\n        /// </summary>\n        [YamlMember(Alias = \"setHostnameAsFQDN\")]\n        [JsonProperty(\"setHostnameAsFQDN\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? SetHostnameAsFQDN { get; set; }\n\n        /// <summary>\n        ///     Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\n        /// </summary>\n        [YamlMember(Alias = \"overhead\")]\n        [JsonProperty(\"overhead\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Overhead { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Overhead\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOverhead() => Overhead.Count > 0;\n\n        /// <summary>\n        ///     Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.\n        /// </summary>\n        [YamlMember(Alias = \"hostname\")]\n        [JsonProperty(\"hostname\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Hostname { get; set; }\n\n        /// <summary>\n        ///     NodeName indicates in which node this pod is scheduled. If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName. Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod. This field should not be used to express a desire for the pod to be scheduled on a specific node. https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename\n        /// </summary>\n        [YamlMember(Alias = \"nodeName\")]\n        [JsonProperty(\"nodeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string NodeName { get; set; }\n\n        /// <summary>\n        ///     If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.\n        /// </summary>\n        [YamlMember(Alias = \"priorityClassName\")]\n        [JsonProperty(\"priorityClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PriorityClassName { get; set; }\n\n        /// <summary>\n        ///     RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\n        /// </summary>\n        [YamlMember(Alias = \"runtimeClassName\")]\n        [JsonProperty(\"runtimeClassName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RuntimeClassName { get; set; }\n\n        /// <summary>\n        ///     If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.\n        /// </summary>\n        [YamlMember(Alias = \"schedulerName\")]\n        [JsonProperty(\"schedulerName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SchedulerName { get; set; }\n\n        /// <summary>\n        ///     ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n        /// </summary>\n        [YamlMember(Alias = \"serviceAccountName\")]\n        [JsonProperty(\"serviceAccountName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ServiceAccountName { get; set; }\n\n        /// <summary>\n        ///     Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.\n        /// </summary>\n        [YamlMember(Alias = \"shareProcessNamespace\")]\n        [JsonProperty(\"shareProcessNamespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ShareProcessNamespace { get; set; }\n\n        /// <summary>\n        ///     Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.\n        /// </summary>\n        [YamlMember(Alias = \"dnsConfig\")]\n        [JsonProperty(\"dnsConfig\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodDNSConfigV1 DnsConfig { get; set; }\n\n        /// <summary>\n        ///     Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.\n        /// </summary>\n        [YamlMember(Alias = \"hostNetwork\")]\n        [JsonProperty(\"hostNetwork\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? HostNetwork { get; set; }\n\n        /// <summary>\n        ///     AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\n        /// </summary>\n        [YamlMember(Alias = \"automountServiceAccountToken\")]\n        [JsonProperty(\"automountServiceAccountToken\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AutomountServiceAccountToken { get; set; }\n\n        /// <summary>\n        ///     If specified, the fully qualified Pod hostname will be \"&lt;hostname&gt;.&lt;subdomain&gt;.&lt;pod namespace&gt;.svc.&lt;cluster domain&gt;\". If not specified, the pod will not have a domainname at all.\n        /// </summary>\n        [YamlMember(Alias = \"subdomain\")]\n        [JsonProperty(\"subdomain\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Subdomain { get; set; }\n\n        /// <summary>\n        ///     NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\n        /// </summary>\n        [YamlMember(Alias = \"nodeSelector\")]\n        [JsonProperty(\"nodeSelector\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> NodeSelector { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NodeSelector\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNodeSelector() => NodeSelector.Count > 0;\n\n        /// <summary>\n        ///     Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.\n        /// </summary>\n        [YamlMember(Alias = \"activeDeadlineSeconds\")]\n        [JsonProperty(\"activeDeadlineSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ActiveDeadlineSeconds { get; set; }\n\n        /// <summary>\n        ///     List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"containers\")]\n        [JsonProperty(\"containers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerV1> Containers { get; } = new List<ContainerV1>();\n\n        /// <summary>\n        ///     EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.\n        /// </summary>\n        [YamlMember(Alias = \"enableServiceLinks\")]\n        [JsonProperty(\"enableServiceLinks\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? EnableServiceLinks { get; set; }\n\n        /// <summary>\n        ///     List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"ephemeralContainers\")]\n        [JsonProperty(\"ephemeralContainers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<EphemeralContainerV1> EphemeralContainers { get; } = new List<EphemeralContainerV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"EphemeralContainers\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEphemeralContainers() => EphemeralContainers.Count > 0;\n\n        /// <summary>\n        ///     HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified.\n        /// </summary>\n        [MergeStrategy(Key = \"ip\")]\n        [YamlMember(Alias = \"hostAliases\")]\n        [JsonProperty(\"hostAliases\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HostAliasV1> HostAliases { get; } = new List<HostAliasV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"HostAliases\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHostAliases() => HostAliases.Count > 0;\n\n        /// <summary>\n        ///     Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\n        /// </summary>\n        [YamlMember(Alias = \"hostUsers\")]\n        [JsonProperty(\"hostUsers\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? HostUsers { get; set; }\n\n        /// <summary>\n        ///     ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"imagePullSecrets\")]\n        [JsonProperty(\"imagePullSecrets\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LocalObjectReferenceV1> ImagePullSecrets { get; } = new List<LocalObjectReferenceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ImagePullSecrets\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeImagePullSecrets() => ImagePullSecrets.Count > 0;\n\n        /// <summary>\n        ///     List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"initContainers\")]\n        [JsonProperty(\"initContainers\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerV1> InitContainers { get; } = new List<ContainerV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"InitContainers\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeInitContainers() => InitContainers.Count > 0;\n\n        /// <summary>\n        ///     Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n        ///     \n        ///     If the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n        ///     \n        ///     If the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup\n        /// </summary>\n        [YamlMember(Alias = \"os\")]\n        [JsonProperty(\"os\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodOSV1 Os { get; set; }\n\n        /// <summary>\n        ///     If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \"True\" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\n        /// </summary>\n        [YamlMember(Alias = \"readinessGates\")]\n        [JsonProperty(\"readinessGates\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodReadinessGateV1> ReadinessGates { get; } = new List<PodReadinessGateV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ReadinessGates\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeReadinessGates() => ReadinessGates.Count > 0;\n\n        /// <summary>\n        ///     ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. The resources will be made available to those containers which consume them by name.\n        ///     \n        ///     This is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n        ///     \n        ///     This field is immutable.\n        /// </summary>\n        [RetainKeysStrategy]\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"resourceClaims\")]\n        [JsonProperty(\"resourceClaims\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodResourceClaimV1> ResourceClaims { get; } = new List<PodResourceClaimV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceClaims\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceClaims() => ResourceClaims.Count > 0;\n\n        /// <summary>\n        ///     SchedulingGates is an opaque list of values that if specified will block scheduling the pod. If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod.\n        ///     \n        ///     SchedulingGates can only be set at pod creation time, and be removed only afterwards.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"schedulingGates\")]\n        [JsonProperty(\"schedulingGates\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodSchedulingGateV1> SchedulingGates { get; } = new List<PodSchedulingGateV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"SchedulingGates\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSchedulingGates() => SchedulingGates.Count > 0;\n\n        /// <summary>\n        ///     Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.\n        /// </summary>\n        [YamlMember(Alias = \"terminationGracePeriodSeconds\")]\n        [JsonProperty(\"terminationGracePeriodSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? TerminationGracePeriodSeconds { get; set; }\n\n        /// <summary>\n        ///     If specified, the pod's tolerations.\n        /// </summary>\n        [YamlMember(Alias = \"tolerations\")]\n        [JsonProperty(\"tolerations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<TolerationV1> Tolerations { get; } = new List<TolerationV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Tolerations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTolerations() => Tolerations.Count > 0;\n\n        /// <summary>\n        ///     TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\n        /// </summary>\n        [MergeStrategy(Key = \"topologyKey\")]\n        [YamlMember(Alias = \"topologySpreadConstraints\")]\n        [JsonProperty(\"topologySpreadConstraints\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<TopologySpreadConstraintV1> TopologySpreadConstraints { get; } = new List<TopologySpreadConstraintV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"TopologySpreadConstraints\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTopologySpreadConstraints() => TopologySpreadConstraints.Count > 0;\n\n        /// <summary>\n        ///     List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\n        /// </summary>\n        [RetainKeysStrategy]\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"volumes\")]\n        [JsonProperty(\"volumes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeV1> Volumes { get; } = new List<VolumeV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Volumes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumes() => Volumes.Count > 0;\n\n        /// <summary>\n        ///     SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty.  See type description for default values of each field.\n        /// </summary>\n        [YamlMember(Alias = \"securityContext\")]\n        [JsonProperty(\"securityContext\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodSecurityContextV1 SecurityContext { get; set; }\n\n        /// <summary>\n        ///     DeprecatedServiceAccount is a deprecated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.\n        /// </summary>\n        [YamlMember(Alias = \"serviceAccount\")]\n        [JsonProperty(\"serviceAccount\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ServiceAccount { get; set; }\n\n        /// <summary>\n        ///     If specified, the pod's scheduling constraints\n        /// </summary>\n        [YamlMember(Alias = \"affinity\")]\n        [JsonProperty(\"affinity\", NullValueHandling = NullValueHandling.Ignore)]\n        public AffinityV1 Affinity { get; set; }\n\n        /// <summary>\n        ///     Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.\n        /// </summary>\n        [YamlMember(Alias = \"dnsPolicy\")]\n        [JsonProperty(\"dnsPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string DnsPolicy { get; set; }\n\n        /// <summary>\n        ///     PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.\n        /// </summary>\n        [YamlMember(Alias = \"preemptionPolicy\")]\n        [JsonProperty(\"preemptionPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PreemptionPolicy { get; set; }\n\n        /// <summary>\n        ///     The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.\n        /// </summary>\n        [YamlMember(Alias = \"priority\")]\n        [JsonProperty(\"priority\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Priority { get; set; }\n\n        /// <summary>\n        ///     Restart policy for all containers within the pod. One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n        /// </summary>\n        [YamlMember(Alias = \"restartPolicy\")]\n        [JsonProperty(\"restartPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RestartPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodStatus represents information about the status of a pod. Status may trail the actual state of a system, especially if the node that hosts the pod cannot contact the control plane.\n    /// </summary>\n    public partial class PodStatusV1\n    {\n        /// <summary>\n        ///     hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will not be updated even if there is a node is assigned to pod\n        /// </summary>\n        [YamlMember(Alias = \"hostIP\")]\n        [JsonProperty(\"hostIP\", NullValueHandling = NullValueHandling.Ignore)]\n        public string HostIP { get; set; }\n\n        /// <summary>\n        ///     podIP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.\n        /// </summary>\n        [YamlMember(Alias = \"podIP\")]\n        [JsonProperty(\"podIP\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PodIP { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about why the pod is in this condition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be scheduled right away as preemption victims receive their graceful termination periods. This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to give the resources on this node to a higher priority pod that is created after preemption. As a result, this field may be different than PodSpec.nodeName when the pod is scheduled.\n        /// </summary>\n        [YamlMember(Alias = \"nominatedNodeName\")]\n        [JsonProperty(\"nominatedNodeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string NominatedNodeName { get; set; }\n\n        /// <summary>\n        ///     The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod's status. There are five possible phase values:\n        ///     \n        ///     Pending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\n        ///     \n        ///     More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase\n        /// </summary>\n        [YamlMember(Alias = \"phase\")]\n        [JsonProperty(\"phase\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Phase { get; set; }\n\n        /// <summary>\n        ///     Status of resources resize desired for pod's containers. It is empty if no resources resize is pending. Any changes to container resources will automatically set this to \"Proposed\"\n        /// </summary>\n        [YamlMember(Alias = \"resize\")]\n        [JsonProperty(\"resize\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Resize { get; set; }\n\n        /// <summary>\n        ///     RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.\n        /// </summary>\n        [YamlMember(Alias = \"startTime\")]\n        [JsonProperty(\"startTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? StartTime { get; set; }\n\n        /// <summary>\n        ///     A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodConditionV1> Conditions { get; } = new List<PodConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     The list has one entry per container in the manifest. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status\n        /// </summary>\n        [YamlMember(Alias = \"containerStatuses\")]\n        [JsonProperty(\"containerStatuses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerStatusV1> ContainerStatuses { get; } = new List<ContainerStatusV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ContainerStatuses\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeContainerStatuses() => ContainerStatuses.Count > 0;\n\n        /// <summary>\n        ///     Status for any ephemeral containers that have run in this pod.\n        /// </summary>\n        [YamlMember(Alias = \"ephemeralContainerStatuses\")]\n        [JsonProperty(\"ephemeralContainerStatuses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerStatusV1> EphemeralContainerStatuses { get; } = new List<ContainerStatusV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"EphemeralContainerStatuses\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeEphemeralContainerStatuses() => EphemeralContainerStatuses.Count > 0;\n\n        /// <summary>\n        ///     hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must match the hostIP field. This list is empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will not be updated even if there is a node is assigned to this pod.\n        /// </summary>\n        [MergeStrategy(Key = \"ip\")]\n        [YamlMember(Alias = \"hostIPs\")]\n        [JsonProperty(\"hostIPs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<HostIPV1> HostIPs { get; } = new List<HostIPV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"HostIPs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHostIPs() => HostIPs.Count > 0;\n\n        /// <summary>\n        ///     The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status\n        /// </summary>\n        [YamlMember(Alias = \"initContainerStatuses\")]\n        [JsonProperty(\"initContainerStatuses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ContainerStatusV1> InitContainerStatuses { get; } = new List<ContainerStatusV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"InitContainerStatuses\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeInitContainerStatuses() => InitContainerStatuses.Count > 0;\n\n        /// <summary>\n        ///     podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet.\n        /// </summary>\n        [MergeStrategy(Key = \"ip\")]\n        [YamlMember(Alias = \"podIPs\")]\n        [JsonProperty(\"podIPs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodIPV1> PodIPs { get; } = new List<PodIPV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"PodIPs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePodIPs() => PodIPs.Count > 0;\n\n        /// <summary>\n        ///     The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes\n        /// </summary>\n        [YamlMember(Alias = \"qosClass\")]\n        [JsonProperty(\"qosClass\", NullValueHandling = NullValueHandling.Ignore)]\n        public string QosClass { get; set; }\n\n        /// <summary>\n        ///     Status of resource claims.\n        /// </summary>\n        [RetainKeysStrategy]\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"resourceClaimStatuses\")]\n        [JsonProperty(\"resourceClaimStatuses\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PodResourceClaimStatusV1> ResourceClaimStatuses { get; } = new List<PodResourceClaimStatusV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceClaimStatuses\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceClaimStatuses() => ResourceClaimStatuses.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodTemplateListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodTemplateList is a list of PodTemplates.\n    /// </summary>\n    [KubeListItem(\"PodTemplate\", \"v1\")]\n    [KubeObject(\"PodTemplateList\", \"v1\")]\n    public partial class PodTemplateListV1 : KubeResourceListV1<PodTemplateV1>\n    {\n        /// <summary>\n        ///     List of pod templates\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PodTemplateV1> Items { get; } = new List<PodTemplateV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodTemplateSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodTemplateSpec describes the data a pod should have when created from a template\n    /// </summary>\n    public partial class PodTemplateSpecV1\n    {\n        /// <summary>\n        ///     Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\n        /// </summary>\n        [YamlMember(Alias = \"metadata\")]\n        [JsonProperty(\"metadata\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetaV1 Metadata { get; set; }\n\n        /// <summary>\n        ///     Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodTemplateV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodTemplate describes a template for creating copies of a predefined pod.\n    /// </summary>\n    [KubeObject(\"PodTemplate\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/podtemplates\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/podtemplates\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/podtemplates\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/podtemplates\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/podtemplates/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/podtemplates/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/podtemplates/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/podtemplates/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/podtemplates\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/podtemplates\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/podtemplates/{name}\")]\n    public partial class PodTemplateV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Template defines the pods that will be created from this pod template. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodTemplateSpecV1 Template { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.\n    /// </summary>\n    [KubeObject(\"Pod\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/pods\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/pods\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/pods\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/pods\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/pods/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/pods/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/pods/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/pods/{name}\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/pods/{name}/log\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/pods\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/pods\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/pods/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/pods/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/pods/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/pods/{name}/status\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers\")]\n    public partial class PodV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodsMetricSourceV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.\n    /// </summary>\n    public partial class PodsMetricSourceV2\n    {\n        /// <summary>\n        ///     metric identifies the target metric by name and selector\n        /// </summary>\n        [YamlMember(Alias = \"metric\")]\n        [JsonProperty(\"metric\", NullValueHandling = NullValueHandling.Include)]\n        public MetricIdentifierV2 Metric { get; set; }\n\n        /// <summary>\n        ///     target specifies the target value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"target\")]\n        [JsonProperty(\"target\", NullValueHandling = NullValueHandling.Include)]\n        public MetricTargetV2 Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodsMetricSourceV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.\n    /// </summary>\n    public partial class PodsMetricSourceV2Beta1\n    {\n        /// <summary>\n        ///     metricName is the name of the metric in question\n        /// </summary>\n        [YamlMember(Alias = \"metricName\")]\n        [JsonProperty(\"metricName\", NullValueHandling = NullValueHandling.Include)]\n        public string MetricName { get; set; }\n\n        /// <summary>\n        ///     targetAverageValue is the target value of the average of the metric across all relevant pods (as a quantity)\n        /// </summary>\n        [YamlMember(Alias = \"targetAverageValue\")]\n        [JsonProperty(\"targetAverageValue\", NullValueHandling = NullValueHandling.Include)]\n        public string TargetAverageValue { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodsMetricStatusV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).\n    /// </summary>\n    public partial class PodsMetricStatusV2\n    {\n        /// <summary>\n        ///     metric identifies the target metric by name and selector\n        /// </summary>\n        [YamlMember(Alias = \"metric\")]\n        [JsonProperty(\"metric\", NullValueHandling = NullValueHandling.Include)]\n        public MetricIdentifierV2 Metric { get; set; }\n\n        /// <summary>\n        ///     current contains the current value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"current\")]\n        [JsonProperty(\"current\", NullValueHandling = NullValueHandling.Include)]\n        public MetricValueStatusV2 Current { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PodsMetricStatusV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).\n    /// </summary>\n    public partial class PodsMetricStatusV2Beta1\n    {\n        /// <summary>\n        ///     currentAverageValue is the current value of the average of the metric across all relevant pods (as a quantity)\n        /// </summary>\n        [YamlMember(Alias = \"currentAverageValue\")]\n        [JsonProperty(\"currentAverageValue\", NullValueHandling = NullValueHandling.Include)]\n        public string CurrentAverageValue { get; set; }\n\n        /// <summary>\n        ///     metricName is the name of the metric in question\n        /// </summary>\n        [YamlMember(Alias = \"metricName\")]\n        [JsonProperty(\"metricName\", NullValueHandling = NullValueHandling.Include)]\n        public string MetricName { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PolicyRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.\n    /// </summary>\n    public partial class PolicyRuleV1\n    {\n        /// <summary>\n        ///     APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. \"\" represents the core API group and \"*\" represents all API groups.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"),  but not both.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceURLs\")]\n        [JsonProperty(\"nonResourceURLs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> NonResourceURLs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NonResourceURLs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNonResourceURLs() => NonResourceURLs.Count > 0;\n\n        /// <summary>\n        ///     ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\n        /// </summary>\n        [YamlMember(Alias = \"resourceNames\")]\n        [JsonProperty(\"resourceNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ResourceNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceNames() => ResourceNames.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to. '*' represents all resources.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n\n        /// <summary>\n        ///     Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PolicyRuleV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.\n    /// </summary>\n    public partial class PolicyRuleV1Alpha1\n    {\n        /// <summary>\n        ///     APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"),  but not both.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceURLs\")]\n        [JsonProperty(\"nonResourceURLs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> NonResourceURLs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NonResourceURLs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNonResourceURLs() => NonResourceURLs.Count > 0;\n\n        /// <summary>\n        ///     ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\n        /// </summary>\n        [YamlMember(Alias = \"resourceNames\")]\n        [JsonProperty(\"resourceNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ResourceNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceNames() => ResourceNames.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.  ResourceAll represents all resources.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n\n        /// <summary>\n        ///     Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PolicyRuleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.\n    /// </summary>\n    public partial class PolicyRuleV1Beta1\n    {\n        /// <summary>\n        ///     APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"),  but not both.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceURLs\")]\n        [JsonProperty(\"nonResourceURLs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> NonResourceURLs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NonResourceURLs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNonResourceURLs() => NonResourceURLs.Count > 0;\n\n        /// <summary>\n        ///     ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\n        /// </summary>\n        [YamlMember(Alias = \"resourceNames\")]\n        [JsonProperty(\"resourceNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ResourceNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceNames() => ResourceNames.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.  '*' represents all resources in the specified apiGroups. '*/foo' represents the subresource 'foo' for all resources in the specified apiGroups.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n\n        /// <summary>\n        ///     Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PolicyRulesWithSubjectsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request.\n    /// </summary>\n    public partial class PolicyRulesWithSubjectsV1\n    {\n        /// <summary>\n        ///     `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceRules\")]\n        [JsonProperty(\"nonResourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NonResourcePolicyRuleV1> NonResourceRules { get; } = new List<NonResourcePolicyRuleV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NonResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNonResourceRules() => NonResourceRules.Count > 0;\n\n        /// <summary>\n        ///     `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty.\n        /// </summary>\n        [YamlMember(Alias = \"resourceRules\")]\n        [JsonProperty(\"resourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourcePolicyRuleV1> ResourceRules { get; } = new List<ResourcePolicyRuleV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceRules() => ResourceRules.Count > 0;\n\n        /// <summary>\n        ///     subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required.\n        /// </summary>\n        [YamlMember(Alias = \"subjects\")]\n        [JsonProperty(\"subjects\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SubjectV1> Subjects { get; } = new List<SubjectV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PolicyRulesWithSubjectsV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request.\n    /// </summary>\n    public partial class PolicyRulesWithSubjectsV1Beta3\n    {\n        /// <summary>\n        ///     `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceRules\")]\n        [JsonProperty(\"nonResourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NonResourcePolicyRuleV1Beta3> NonResourceRules { get; } = new List<NonResourcePolicyRuleV1Beta3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NonResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNonResourceRules() => NonResourceRules.Count > 0;\n\n        /// <summary>\n        ///     `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty.\n        /// </summary>\n        [YamlMember(Alias = \"resourceRules\")]\n        [JsonProperty(\"resourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourcePolicyRuleV1Beta3> ResourceRules { get; } = new List<ResourcePolicyRuleV1Beta3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceRules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceRules() => ResourceRules.Count > 0;\n\n        /// <summary>\n        ///     subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required.\n        /// </summary>\n        [YamlMember(Alias = \"subjects\")]\n        [JsonProperty(\"subjects\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SubjectV1Beta3> Subjects { get; } = new List<SubjectV1Beta3>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PortStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class PortStatusV1\n    {\n        /// <summary>\n        ///     Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\"\n        /// </summary>\n        [YamlMember(Alias = \"protocol\")]\n        [JsonProperty(\"protocol\", NullValueHandling = NullValueHandling.Include)]\n        public string Protocol { get; set; }\n\n        /// <summary>\n        ///     Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use\n        ///       CamelCase names\n        ///     - cloud provider specific error values must have names that comply with the\n        ///       format foo.example.com/CamelCase.\n        /// </summary>\n        [YamlMember(Alias = \"error\")]\n        [JsonProperty(\"error\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Error { get; set; }\n\n        /// <summary>\n        ///     Port is the port number of the service port of which status is recorded here\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Include)]\n        public int Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PortworxVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PortworxVolumeSource represents a Portworx volume resource.\n    /// </summary>\n    public partial class PortworxVolumeSourceV1\n    {\n        /// <summary>\n        ///     volumeID uniquely identifies a Portworx volume\n        /// </summary>\n        [YamlMember(Alias = \"volumeID\")]\n        [JsonProperty(\"volumeID\", NullValueHandling = NullValueHandling.Include)]\n        public string VolumeID { get; set; }\n\n        /// <summary>\n        ///     fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PreconditionsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.\n    /// </summary>\n    public partial class PreconditionsV1\n    {\n        /// <summary>\n        ///     Specifies the target UID.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     Specifies the target ResourceVersion\n        /// </summary>\n        [YamlMember(Alias = \"resourceVersion\")]\n        [JsonProperty(\"resourceVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceVersion { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PreferredSchedulingTermV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\n    /// </summary>\n    public partial class PreferredSchedulingTermV1\n    {\n        /// <summary>\n        ///     A node selector term, associated with the corresponding weight.\n        /// </summary>\n        [YamlMember(Alias = \"preference\")]\n        [JsonProperty(\"preference\", NullValueHandling = NullValueHandling.Include)]\n        public NodeSelectorTermV1 Preference { get; set; }\n\n        /// <summary>\n        ///     Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\n        /// </summary>\n        [YamlMember(Alias = \"weight\")]\n        [JsonProperty(\"weight\", NullValueHandling = NullValueHandling.Include)]\n        public int Weight { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityClassListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityClassList is a collection of priority classes.\n    /// </summary>\n    [KubeListItem(\"PriorityClass\", \"scheduling.k8s.io/v1\")]\n    [KubeObject(\"PriorityClassList\", \"scheduling.k8s.io/v1\")]\n    public partial class PriorityClassListV1 : KubeResourceListV1<PriorityClassV1>\n    {\n        /// <summary>\n        ///     items is the list of PriorityClasses\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PriorityClassV1> Items { get; } = new List<PriorityClassV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityClassListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityClassList is a collection of priority classes.\n    /// </summary>\n    [KubeListItem(\"PriorityClass\", \"scheduling.k8s.io/v1alpha1\")]\n    [KubeObject(\"PriorityClassList\", \"scheduling.k8s.io/v1alpha1\")]\n    public partial class PriorityClassListV1Alpha1 : KubeResourceListV1<PriorityClassV1Alpha1>\n    {\n        /// <summary>\n        ///     items is the list of PriorityClasses\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PriorityClassV1Alpha1> Items { get; } = new List<PriorityClassV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityClassListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityClassList is a collection of priority classes.\n    /// </summary>\n    [KubeListItem(\"PriorityClass\", \"scheduling.k8s.io/v1beta1\")]\n    [KubeObject(\"PriorityClassList\", \"scheduling.k8s.io/v1beta1\")]\n    public partial class PriorityClassListV1Beta1 : KubeResourceListV1<PriorityClassV1Beta1>\n    {\n        /// <summary>\n        ///     items is the list of PriorityClasses\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PriorityClassV1Beta1> Items { get; } = new List<PriorityClassV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityClassV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.\n    /// </summary>\n    [KubeObject(\"PriorityClass\", \"scheduling.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/scheduling.k8s.io/v1/priorityclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/scheduling.k8s.io/v1/priorityclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/scheduling.k8s.io/v1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/scheduling.k8s.io/v1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/scheduling.k8s.io/v1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/scheduling.k8s.io/v1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/scheduling.k8s.io/v1/watch/priorityclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/scheduling.k8s.io/v1/priorityclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/scheduling.k8s.io/v1/watch/priorityclasses/{name}\")]\n    public partial class PriorityClassV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     value represents the integer value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Include)]\n        public int Value { get; set; }\n\n        /// <summary>\n        ///     description is an arbitrary string that usually provides guidelines on when this priority class should be used.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n\n        /// <summary>\n        ///     globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.\n        /// </summary>\n        [YamlMember(Alias = \"globalDefault\")]\n        [JsonProperty(\"globalDefault\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? GlobalDefault { get; set; }\n\n        /// <summary>\n        ///     preemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.\n        /// </summary>\n        [YamlMember(Alias = \"preemptionPolicy\")]\n        [JsonProperty(\"preemptionPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PreemptionPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityClassV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.\n    /// </summary>\n    [KubeObject(\"PriorityClass\", \"scheduling.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/scheduling.k8s.io/v1alpha1/priorityclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/scheduling.k8s.io/v1alpha1/priorityclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/scheduling.k8s.io/v1alpha1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/scheduling.k8s.io/v1alpha1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/scheduling.k8s.io/v1alpha1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/scheduling.k8s.io/v1alpha1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/scheduling.k8s.io/v1alpha1/watch/priorityclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/scheduling.k8s.io/v1alpha1/priorityclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/scheduling.k8s.io/v1alpha1/watch/priorityclasses/{name}\")]\n    public partial class PriorityClassV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Include)]\n        public int Value { get; set; }\n\n        /// <summary>\n        ///     description is an arbitrary string that usually provides guidelines on when this priority class should be used.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n\n        /// <summary>\n        ///     globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.\n        /// </summary>\n        [YamlMember(Alias = \"globalDefault\")]\n        [JsonProperty(\"globalDefault\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? GlobalDefault { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityClassV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.\n    /// </summary>\n    [KubeObject(\"PriorityClass\", \"scheduling.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/scheduling.k8s.io/v1beta1/priorityclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/scheduling.k8s.io/v1beta1/priorityclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/scheduling.k8s.io/v1beta1/watch/priorityclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/scheduling.k8s.io/v1beta1/priorityclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/scheduling.k8s.io/v1beta1/watch/priorityclasses/{name}\")]\n    public partial class PriorityClassV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     The value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Include)]\n        public int Value { get; set; }\n\n        /// <summary>\n        ///     description is an arbitrary string that usually provides guidelines on when this priority class should be used.\n        /// </summary>\n        [YamlMember(Alias = \"description\")]\n        [JsonProperty(\"description\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Description { get; set; }\n\n        /// <summary>\n        ///     globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.\n        /// </summary>\n        [YamlMember(Alias = \"globalDefault\")]\n        [JsonProperty(\"globalDefault\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? GlobalDefault { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationCondition defines the condition of priority level.\n    /// </summary>\n    public partial class PriorityLevelConfigurationConditionV1\n    {\n        /// <summary>\n        ///     `lastTransitionTime` is the last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     `message` is a human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     `type` is the type of the condition. Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     `reason` is a unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     `status` is the status of the condition. Can be True, False, Unknown. Required.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationConditionV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationCondition defines the condition of priority level.\n    /// </summary>\n    public partial class PriorityLevelConfigurationConditionV1Beta3\n    {\n        /// <summary>\n        ///     `lastTransitionTime` is the last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     `message` is a human-readable message indicating details about last transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     `type` is the type of the condition. Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     `reason` is a unique, one-word, CamelCase reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     `status` is the status of the condition. Can be True, False, Unknown. Required.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects.\n    /// </summary>\n    [KubeListItem(\"PriorityLevelConfiguration\", \"flowcontrol.apiserver.k8s.io/v1\")]\n    [KubeObject(\"PriorityLevelConfigurationList\", \"flowcontrol.apiserver.k8s.io/v1\")]\n    public partial class PriorityLevelConfigurationListV1 : KubeResourceListV1<PriorityLevelConfigurationV1>\n    {\n        /// <summary>\n        ///     `items` is a list of request-priorities.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PriorityLevelConfigurationV1> Items { get; } = new List<PriorityLevelConfigurationV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationListV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects.\n    /// </summary>\n    [KubeListItem(\"PriorityLevelConfiguration\", \"flowcontrol.apiserver.k8s.io/v1beta3\")]\n    [KubeObject(\"PriorityLevelConfigurationList\", \"flowcontrol.apiserver.k8s.io/v1beta3\")]\n    public partial class PriorityLevelConfigurationListV1Beta3 : KubeResourceListV1<PriorityLevelConfigurationV1Beta3>\n    {\n        /// <summary>\n        ///     `items` is a list of request-priorities.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<PriorityLevelConfigurationV1Beta3> Items { get; } = new List<PriorityLevelConfigurationV1Beta3>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationReference contains information that points to the \"request-priority\" being used.\n    /// </summary>\n    public partial class PriorityLevelConfigurationReferenceV1\n    {\n        /// <summary>\n        ///     `name` is the name of the priority level configuration being referenced Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationReferenceV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationReference contains information that points to the \"request-priority\" being used.\n    /// </summary>\n    public partial class PriorityLevelConfigurationReferenceV1Beta3\n    {\n        /// <summary>\n        ///     `name` is the name of the priority level configuration being referenced Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationSpec specifies the configuration of a priority level.\n    /// </summary>\n    public partial class PriorityLevelConfigurationSpecV1\n    {\n        /// <summary>\n        ///     `limited` specifies how requests are handled for a Limited priority level. This field must be non-empty if and only if `type` is `\"Limited\"`.\n        /// </summary>\n        [YamlMember(Alias = \"limited\")]\n        [JsonProperty(\"limited\", NullValueHandling = NullValueHandling.Ignore)]\n        public LimitedPriorityLevelConfigurationV1 Limited { get; set; }\n\n        /// <summary>\n        ///     `type` indicates whether this priority level is subject to limitation on request execution.  A value of `\"Exempt\"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels.  A value of `\"Limited\"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     `exempt` specifies how requests are handled for an exempt priority level. This field MUST be empty if `type` is `\"Limited\"`. This field MAY be non-empty if `type` is `\"Exempt\"`. If empty and `type` is `\"Exempt\"` then the default values for `ExemptPriorityLevelConfiguration` apply.\n        /// </summary>\n        [YamlMember(Alias = \"exempt\")]\n        [JsonProperty(\"exempt\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExemptPriorityLevelConfigurationV1 Exempt { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationSpecV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationSpec specifies the configuration of a priority level.\n    /// </summary>\n    public partial class PriorityLevelConfigurationSpecV1Beta3\n    {\n        /// <summary>\n        ///     `limited` specifies how requests are handled for a Limited priority level. This field must be non-empty if and only if `type` is `\"Limited\"`.\n        /// </summary>\n        [YamlMember(Alias = \"limited\")]\n        [JsonProperty(\"limited\", NullValueHandling = NullValueHandling.Ignore)]\n        public LimitedPriorityLevelConfigurationV1Beta3 Limited { get; set; }\n\n        /// <summary>\n        ///     `type` indicates whether this priority level is subject to limitation on request execution.  A value of `\"Exempt\"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels.  A value of `\"Limited\"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     `exempt` specifies how requests are handled for an exempt priority level. This field MUST be empty if `type` is `\"Limited\"`. This field MAY be non-empty if `type` is `\"Exempt\"`. If empty and `type` is `\"Exempt\"` then the default values for `ExemptPriorityLevelConfiguration` apply.\n        /// </summary>\n        [YamlMember(Alias = \"exempt\")]\n        [JsonProperty(\"exempt\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExemptPriorityLevelConfigurationV1Beta3 Exempt { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationStatus represents the current state of a \"request-priority\".\n    /// </summary>\n    public partial class PriorityLevelConfigurationStatusV1\n    {\n        /// <summary>\n        ///     `conditions` is the current state of \"request-priority\".\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PriorityLevelConfigurationConditionV1> Conditions { get; } = new List<PriorityLevelConfigurationConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationStatusV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfigurationStatus represents the current state of a \"request-priority\".\n    /// </summary>\n    public partial class PriorityLevelConfigurationStatusV1Beta3\n    {\n        /// <summary>\n        ///     `conditions` is the current state of \"request-priority\".\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PriorityLevelConfigurationConditionV1Beta3> Conditions { get; } = new List<PriorityLevelConfigurationConditionV1Beta3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfiguration represents the configuration of a priority level.\n    /// </summary>\n    [KubeObject(\"PriorityLevelConfiguration\", \"flowcontrol.apiserver.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations\")]\n    [KubeApi(KubeAction.Create, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/flowcontrol.apiserver.k8s.io/v1/watch/prioritylevelconfigurations\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/flowcontrol.apiserver.k8s.io/v1/watch/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status\")]\n    public partial class PriorityLevelConfigurationV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     `spec` is the specification of the desired behavior of a \"request-priority\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PriorityLevelConfigurationSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     `status` is the current status of a \"request-priority\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public PriorityLevelConfigurationStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/PriorityLevelConfigurationV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     PriorityLevelConfiguration represents the configuration of a priority level.\n    /// </summary>\n    [KubeObject(\"PriorityLevelConfiguration\", \"flowcontrol.apiserver.k8s.io/v1beta3\")]\n    [KubeApi(KubeAction.List, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations\")]\n    [KubeApi(KubeAction.Create, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/prioritylevelconfigurations\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/prioritylevelconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}/status\")]\n    public partial class PriorityLevelConfigurationV1Beta3 : KubeResourceV1\n    {\n        /// <summary>\n        ///     `spec` is the specification of the desired behavior of a \"request-priority\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PriorityLevelConfigurationSpecV1Beta3 Spec { get; set; }\n\n        /// <summary>\n        ///     `status` is the current status of a \"request-priority\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public PriorityLevelConfigurationStatusV1Beta3 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ProbeV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.\n    /// </summary>\n    public partial class ProbeV1\n    {\n        /// <summary>\n        ///     Exec specifies the action to take.\n        /// </summary>\n        [YamlMember(Alias = \"exec\")]\n        [JsonProperty(\"exec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ExecActionV1 Exec { get; set; }\n\n        /// <summary>\n        ///     GRPC specifies an action involving a GRPC port.\n        /// </summary>\n        [YamlMember(Alias = \"grpc\")]\n        [JsonProperty(\"grpc\", NullValueHandling = NullValueHandling.Ignore)]\n        public GRPCActionV1 Grpc { get; set; }\n\n        /// <summary>\n        ///     Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n        /// </summary>\n        [YamlMember(Alias = \"failureThreshold\")]\n        [JsonProperty(\"failureThreshold\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? FailureThreshold { get; set; }\n\n        /// <summary>\n        ///     Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\n        /// </summary>\n        [YamlMember(Alias = \"successThreshold\")]\n        [JsonProperty(\"successThreshold\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? SuccessThreshold { get; set; }\n\n        /// <summary>\n        ///     Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n        /// </summary>\n        [YamlMember(Alias = \"initialDelaySeconds\")]\n        [JsonProperty(\"initialDelaySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? InitialDelaySeconds { get; set; }\n\n        /// <summary>\n        ///     How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\n        /// </summary>\n        [YamlMember(Alias = \"periodSeconds\")]\n        [JsonProperty(\"periodSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? PeriodSeconds { get; set; }\n\n        /// <summary>\n        ///     Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\n        /// </summary>\n        [YamlMember(Alias = \"terminationGracePeriodSeconds\")]\n        [JsonProperty(\"terminationGracePeriodSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? TerminationGracePeriodSeconds { get; set; }\n\n        /// <summary>\n        ///     Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n        /// </summary>\n        [YamlMember(Alias = \"timeoutSeconds\")]\n        [JsonProperty(\"timeoutSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? TimeoutSeconds { get; set; }\n\n        /// <summary>\n        ///     HTTPGet specifies the http request to perform.\n        /// </summary>\n        [YamlMember(Alias = \"httpGet\")]\n        [JsonProperty(\"httpGet\", NullValueHandling = NullValueHandling.Ignore)]\n        public HTTPGetActionV1 HttpGet { get; set; }\n\n        /// <summary>\n        ///     TCPSocket specifies an action involving a TCP port.\n        /// </summary>\n        [YamlMember(Alias = \"tcpSocket\")]\n        [JsonProperty(\"tcpSocket\", NullValueHandling = NullValueHandling.Ignore)]\n        public TCPSocketActionV1 TcpSocket { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ProjectedVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a projected volume source\n    /// </summary>\n    public partial class ProjectedVolumeSourceV1\n    {\n        /// <summary>\n        ///     defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n        /// </summary>\n        [YamlMember(Alias = \"defaultMode\")]\n        [JsonProperty(\"defaultMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? DefaultMode { get; set; }\n\n        /// <summary>\n        ///     sources is the list of volume projections. Each entry in this list handles one source.\n        /// </summary>\n        [YamlMember(Alias = \"sources\")]\n        [JsonProperty(\"sources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VolumeProjectionV1> Sources { get; } = new List<VolumeProjectionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Sources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSources() => Sources.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/QueuingConfigurationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     QueuingConfiguration holds the configuration parameters for queuing\n    /// </summary>\n    public partial class QueuingConfigurationV1\n    {\n        /// <summary>\n        ///     `handSize` is a small positive number that configures the shuffle sharding of requests into queues.  When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here.  The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues).  See the user-facing documentation for more extensive guidance on setting this field.  This field has a default value of 8.\n        /// </summary>\n        [YamlMember(Alias = \"handSize\")]\n        [JsonProperty(\"handSize\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? HandSize { get; set; }\n\n        /// <summary>\n        ///     `queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive.  Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant.  This field has a default value of 64.\n        /// </summary>\n        [YamlMember(Alias = \"queues\")]\n        [JsonProperty(\"queues\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Queues { get; set; }\n\n        /// <summary>\n        ///     `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected.  This value must be positive.  If not specified, it will be defaulted to 50.\n        /// </summary>\n        [YamlMember(Alias = \"queueLengthLimit\")]\n        [JsonProperty(\"queueLengthLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? QueueLengthLimit { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/QueuingConfigurationV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     QueuingConfiguration holds the configuration parameters for queuing\n    /// </summary>\n    public partial class QueuingConfigurationV1Beta3\n    {\n        /// <summary>\n        ///     `handSize` is a small positive number that configures the shuffle sharding of requests into queues.  When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here.  The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues).  See the user-facing documentation for more extensive guidance on setting this field.  This field has a default value of 8.\n        /// </summary>\n        [YamlMember(Alias = \"handSize\")]\n        [JsonProperty(\"handSize\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? HandSize { get; set; }\n\n        /// <summary>\n        ///     `queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive.  Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant.  This field has a default value of 64.\n        /// </summary>\n        [YamlMember(Alias = \"queues\")]\n        [JsonProperty(\"queues\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Queues { get; set; }\n\n        /// <summary>\n        ///     `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected.  This value must be positive.  If not specified, it will be defaulted to 50.\n        /// </summary>\n        [YamlMember(Alias = \"queueLengthLimit\")]\n        [JsonProperty(\"queueLengthLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? QueueLengthLimit { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/QuobyteVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.\n    /// </summary>\n    public partial class QuobyteVolumeSourceV1\n    {\n        /// <summary>\n        ///     volume is a string that references an already created Quobyte volume by name.\n        /// </summary>\n        [YamlMember(Alias = \"volume\")]\n        [JsonProperty(\"volume\", NullValueHandling = NullValueHandling.Include)]\n        public string Volume { get; set; }\n\n        /// <summary>\n        ///     group to map volume access to Default is no group\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n\n        /// <summary>\n        ///     user to map volume access to Defaults to serivceaccount user\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public string User { get; set; }\n\n        /// <summary>\n        ///     tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\n        /// </summary>\n        [YamlMember(Alias = \"tenant\")]\n        [JsonProperty(\"tenant\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Tenant { get; set; }\n\n        /// <summary>\n        ///     readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n\n        /// <summary>\n        ///     registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes\n        /// </summary>\n        [YamlMember(Alias = \"registry\")]\n        [JsonProperty(\"registry\", NullValueHandling = NullValueHandling.Include)]\n        public string Registry { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RBDPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class RBDPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"image\")]\n        [JsonProperty(\"image\", NullValueHandling = NullValueHandling.Include)]\n        public string Image { get; set; }\n\n        /// <summary>\n        ///     secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"keyring\")]\n        [JsonProperty(\"keyring\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Keyring { get; set; }\n\n        /// <summary>\n        ///     pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"pool\")]\n        [JsonProperty(\"pool\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Pool { get; set; }\n\n        /// <summary>\n        ///     user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public string User { get; set; }\n\n        /// <summary>\n        ///     monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"monitors\")]\n        [JsonProperty(\"monitors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Monitors { get; } = new List<string>();\n\n        /// <summary>\n        ///     readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RBDVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    public partial class RBDVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"image\")]\n        [JsonProperty(\"image\", NullValueHandling = NullValueHandling.Include)]\n        public string Image { get; set; }\n\n        /// <summary>\n        ///     secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public LocalObjectReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"keyring\")]\n        [JsonProperty(\"keyring\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Keyring { get; set; }\n\n        /// <summary>\n        ///     pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"pool\")]\n        [JsonProperty(\"pool\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Pool { get; set; }\n\n        /// <summary>\n        ///     user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public string User { get; set; }\n\n        /// <summary>\n        ///     monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"monitors\")]\n        [JsonProperty(\"monitors\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Monitors { get; } = new List<string>();\n\n        /// <summary>\n        ///     readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RawExtensionRuntime.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RawExtension is used to hold extensions in external versions.\n    ///     \n    ///     To use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n    ///     \n    ///     // Internal package:\n    ///     \n    ///     \ttype MyAPIObject struct {\n    ///     \t\truntime.TypeMeta `json:\",inline\"`\n    ///     \t\tMyPlugin runtime.Object `json:\"myPlugin\"`\n    ///     \t}\n    ///     \n    ///     \ttype PluginA struct {\n    ///     \t\tAOption string `json:\"aOption\"`\n    ///     \t}\n    ///     \n    ///     // External package:\n    ///     \n    ///     \ttype MyAPIObject struct {\n    ///     \t\truntime.TypeMeta `json:\",inline\"`\n    ///     \t\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n    ///     \t}\n    ///     \n    ///     \ttype PluginA struct {\n    ///     \t\tAOption string `json:\"aOption\"`\n    ///     \t}\n    ///     \n    ///     // On the wire, the JSON will look something like this:\n    ///     \n    ///     \t{\n    ///     \t\t\"kind\":\"MyAPIObject\",\n    ///     \t\t\"apiVersion\":\"v1\",\n    ///     \t\t\"myPlugin\": {\n    ///     \t\t\t\"kind\":\"PluginA\",\n    ///     \t\t\t\"aOption\":\"foo\",\n    ///     \t\t},\n    ///     \t}\n    ///     \n    ///     So what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)\n    /// </summary>\n    public partial class RawExtensionRuntime\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetCondition describes the state of a replica set at a certain point.\n    /// </summary>\n    public partial class ReplicaSetConditionV1\n    {\n        /// <summary>\n        ///     The last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of replica set condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetConditionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetCondition describes the state of a replica set at a certain point.\n    /// </summary>\n    public partial class ReplicaSetConditionV1Beta1\n    {\n        /// <summary>\n        ///     The last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of replica set condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetConditionV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetCondition describes the state of a replica set at a certain point.\n    /// </summary>\n    public partial class ReplicaSetConditionV1Beta2\n    {\n        /// <summary>\n        ///     The last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of replica set condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetList is a collection of ReplicaSets.\n    /// </summary>\n    [KubeListItem(\"ReplicaSet\", \"apps/v1\")]\n    [KubeObject(\"ReplicaSetList\", \"apps/v1\")]\n    public partial class ReplicaSetListV1 : KubeResourceListV1<ReplicaSetV1>\n    {\n        /// <summary>\n        ///     List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ReplicaSetV1> Items { get; } = new List<ReplicaSetV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetListV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetList is a collection of ReplicaSets.\n    /// </summary>\n    [KubeListItem(\"ReplicaSet\", \"apps/v1beta2\")]\n    [KubeObject(\"ReplicaSetList\", \"apps/v1beta2\")]\n    public partial class ReplicaSetListV1Beta2 : KubeResourceListV1<ReplicaSetV1Beta2>\n    {\n        /// <summary>\n        ///     List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ReplicaSetV1Beta2> Items { get; } = new List<ReplicaSetV1Beta2>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetSpec is the specification of a ReplicaSet.\n    /// </summary>\n    public partial class ReplicaSetSpecV1\n    {\n        /// <summary>\n        ///     Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     Selector is a label query over pods that should match the replica count. Label keys and values that must match in order to be controlled by this replica set. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetSpec is the specification of a ReplicaSet.\n    /// </summary>\n    public partial class ReplicaSetSpecV1Beta1\n    {\n        /// <summary>\n        ///     Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     Selector is a label query over pods that should match the replica count. If the selector is empty, it is defaulted to the labels present on the pod template. Label keys and values that must match in order to be controlled by this replica set. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetSpecV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetSpec is the specification of a ReplicaSet.\n    /// </summary>\n    public partial class ReplicaSetSpecV1Beta2\n    {\n        /// <summary>\n        ///     Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     Selector is a label query over pods that should match the replica count. Label keys and values that must match in order to be controlled by this replica set. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetStatus represents the current status of a ReplicaSet.\n    /// </summary>\n    public partial class ReplicaSetStatusV1\n    {\n        /// <summary>\n        ///     ObservedGeneration reflects the generation of the most recently observed ReplicaSet.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     The number of available replicas (ready for at least minReadySeconds) for this replica set.\n        /// </summary>\n        [YamlMember(Alias = \"availableReplicas\")]\n        [JsonProperty(\"availableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AvailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a replica set's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ReplicaSetConditionV1> Conditions { get; } = new List<ReplicaSetConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     The number of pods that have labels matching the labels of the pod template of the replicaset.\n        /// </summary>\n        [YamlMember(Alias = \"fullyLabeledReplicas\")]\n        [JsonProperty(\"fullyLabeledReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? FullyLabeledReplicas { get; set; }\n\n        /// <summary>\n        ///     readyReplicas is the number of pods targeted by this ReplicaSet with a Ready Condition.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetStatus represents the current status of a ReplicaSet.\n    /// </summary>\n    public partial class ReplicaSetStatusV1Beta1\n    {\n        /// <summary>\n        ///     ObservedGeneration reflects the generation of the most recently observed ReplicaSet.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     The number of available replicas (ready for at least minReadySeconds) for this replica set.\n        /// </summary>\n        [YamlMember(Alias = \"availableReplicas\")]\n        [JsonProperty(\"availableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AvailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a replica set's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ReplicaSetConditionV1Beta1> Conditions { get; } = new List<ReplicaSetConditionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     The number of pods that have labels matching the labels of the pod template of the replicaset.\n        /// </summary>\n        [YamlMember(Alias = \"fullyLabeledReplicas\")]\n        [JsonProperty(\"fullyLabeledReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? FullyLabeledReplicas { get; set; }\n\n        /// <summary>\n        ///     The number of ready replicas for this replica set.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetStatusV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSetStatus represents the current status of a ReplicaSet.\n    /// </summary>\n    public partial class ReplicaSetStatusV1Beta2\n    {\n        /// <summary>\n        ///     ObservedGeneration reflects the generation of the most recently observed ReplicaSet.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     The number of available replicas (ready for at least minReadySeconds) for this replica set.\n        /// </summary>\n        [YamlMember(Alias = \"availableReplicas\")]\n        [JsonProperty(\"availableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AvailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a replica set's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ReplicaSetConditionV1Beta2> Conditions { get; } = new List<ReplicaSetConditionV1Beta2>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     The number of pods that have labels matching the labels of the pod template of the replicaset.\n        /// </summary>\n        [YamlMember(Alias = \"fullyLabeledReplicas\")]\n        [JsonProperty(\"fullyLabeledReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? FullyLabeledReplicas { get; set; }\n\n        /// <summary>\n        ///     The number of ready replicas for this replica set.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicaSet ensures that a specified number of pod replicas are running at any given time.\n    /// </summary>\n    [KubeObject(\"ReplicaSet\", \"apps/v1\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/replicasets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/replicasets\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/namespaces/{namespace}/replicasets\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1/namespaces/{namespace}/replicasets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/namespaces/{namespace}/replicasets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1/namespaces/{namespace}/replicasets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1/watch/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status\")]\n    public partial class ReplicaSetV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ReplicaSetSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ReplicaSetStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicaSetV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1/ReplicaSet. See the release notes for more information. ReplicaSet ensures that a specified number of pod replicas are running at any given time.\n    /// </summary>\n    [KubeObject(\"ReplicaSet\", \"apps/v1beta2\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/replicasets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/replicasets\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/namespaces/{namespace}/replicasets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1beta2/watch/namespaces/{namespace}/replicasets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}/status\")]\n    public partial class ReplicaSetV1Beta2 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ReplicaSetSpecV1Beta2 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ReplicaSetStatusV1Beta2 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicationControllerConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicationControllerCondition describes the state of a replication controller at a certain point.\n    /// </summary>\n    public partial class ReplicationControllerConditionV1\n    {\n        /// <summary>\n        ///     The last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of replication controller condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicationControllerListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicationControllerList is a collection of replication controllers.\n    /// </summary>\n    [KubeListItem(\"ReplicationController\", \"v1\")]\n    [KubeObject(\"ReplicationControllerList\", \"v1\")]\n    public partial class ReplicationControllerListV1 : KubeResourceListV1<ReplicationControllerV1>\n    {\n        /// <summary>\n        ///     List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ReplicationControllerV1> Items { get; } = new List<ReplicationControllerV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicationControllerSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicationControllerSpec is the specification of a replication controller.\n    /// </summary>\n    public partial class ReplicationControllerSpecV1\n    {\n        /// <summary>\n        ///     Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. The only allowed template.spec.restartPolicy value is \"Always\". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Ignore)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Selector { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Selector\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSelector() => Selector.Count > 0;\n\n        /// <summary>\n        ///     Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicationControllerStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicationControllerStatus represents the current status of a replication controller.\n    /// </summary>\n    public partial class ReplicationControllerStatusV1\n    {\n        /// <summary>\n        ///     ObservedGeneration reflects the generation of the most recently observed replication controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     The number of available replicas (ready for at least minReadySeconds) for this replication controller.\n        /// </summary>\n        [YamlMember(Alias = \"availableReplicas\")]\n        [JsonProperty(\"availableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AvailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a replication controller's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ReplicationControllerConditionV1> Conditions { get; } = new List<ReplicationControllerConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     The number of pods that have labels matching the labels of the pod template of the replication controller.\n        /// </summary>\n        [YamlMember(Alias = \"fullyLabeledReplicas\")]\n        [JsonProperty(\"fullyLabeledReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? FullyLabeledReplicas { get; set; }\n\n        /// <summary>\n        ///     The number of ready replicas for this replication controller.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ReplicationControllerV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ReplicationController represents the configuration of a replication controller.\n    /// </summary>\n    [KubeObject(\"ReplicationController\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/replicationcontrollers\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/replicationcontrollers\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/replicationcontrollers\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/replicationcontrollers\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/replicationcontrollers\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/replicationcontrollers\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status\")]\n    public partial class ReplicationControllerV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ReplicationControllerSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ReplicationControllerStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceAttributesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface\n    /// </summary>\n    public partial class ResourceAttributesV1\n    {\n        /// <summary>\n        ///     Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"verb\")]\n        [JsonProperty(\"verb\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Verb { get; set; }\n\n        /// <summary>\n        ///     Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace is the namespace of the action being requested.  Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     Resource is one of the existing resource types.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Resource { get; set; }\n\n        /// <summary>\n        ///     Subresource is one of the existing resource types.  \"\" means none.\n        /// </summary>\n        [YamlMember(Alias = \"subresource\")]\n        [JsonProperty(\"subresource\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Subresource { get; set; }\n\n        /// <summary>\n        ///     Version is the API Version of the Resource.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Version { get; set; }\n\n        /// <summary>\n        ///     Group is the API Group of the Resource.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n\n        /// <summary>\n        ///     fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.\n        ///     \n        ///     This field  is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"fieldSelector\")]\n        [JsonProperty(\"fieldSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public FieldSelectorAttributesV1 FieldSelector { get; set; }\n\n        /// <summary>\n        ///     labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.\n        ///     \n        ///     This field  is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"labelSelector\")]\n        [JsonProperty(\"labelSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorAttributesV1 LabelSelector { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceAttributesV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface\n    /// </summary>\n    public partial class ResourceAttributesV1Beta1\n    {\n        /// <summary>\n        ///     Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"verb\")]\n        [JsonProperty(\"verb\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Verb { get; set; }\n\n        /// <summary>\n        ///     Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace is the namespace of the action being requested.  Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     Resource is one of the existing resource types.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Resource { get; set; }\n\n        /// <summary>\n        ///     Subresource is one of the existing resource types.  \"\" means none.\n        /// </summary>\n        [YamlMember(Alias = \"subresource\")]\n        [JsonProperty(\"subresource\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Subresource { get; set; }\n\n        /// <summary>\n        ///     Version is the API Version of the Resource.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"version\")]\n        [JsonProperty(\"version\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Version { get; set; }\n\n        /// <summary>\n        ///     Group is the API Group of the Resource.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimConsumerReferenceV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.\n    /// </summary>\n    public partial class ResourceClaimConsumerReferenceV1Alpha3\n    {\n        /// <summary>\n        ///     UID identifies exactly one incarnation of the resource.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Include)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     Name is the name of resource being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Resource is the type of resource being referenced, for example \"pods\".\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Include)]\n        public string Resource { get; set; }\n\n        /// <summary>\n        ///     APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimListV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaimList is a collection of claims.\n    /// </summary>\n    [KubeListItem(\"ResourceClaim\", \"resource.k8s.io/v1alpha3\")]\n    [KubeObject(\"ResourceClaimList\", \"resource.k8s.io/v1alpha3\")]\n    public partial class ResourceClaimListV1Alpha3 : KubeResourceListV1<ResourceClaimV1Alpha3>\n    {\n        /// <summary>\n        ///     Items is the list of resource claims.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ResourceClaimV1Alpha3> Items { get; } = new List<ResourceClaimV1Alpha3>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimSchedulingStatusV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with \"WaitForFirstConsumer\" allocation mode.\n    /// </summary>\n    public partial class ResourceClaimSchedulingStatusV1Alpha3\n    {\n        /// <summary>\n        ///     Name matches the pod.spec.resourceClaims[*].Name field.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.\n        ///     \n        ///     The size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.\n        /// </summary>\n        [YamlMember(Alias = \"unsuitableNodes\")]\n        [JsonProperty(\"unsuitableNodes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> UnsuitableNodes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"UnsuitableNodes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeUnsuitableNodes() => UnsuitableNodes.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimSpecV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.\n    /// </summary>\n    public partial class ResourceClaimSpecV1Alpha3\n    {\n        /// <summary>\n        ///     Controller is the name of the DRA driver that is meant to handle allocation of this claim. If empty, allocation is handled by the scheduler while scheduling a pod.\n        ///     \n        ///     Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.\n        ///     \n        ///     This is an alpha field and requires enabling the DRAControlPlaneController feature gate.\n        /// </summary>\n        [YamlMember(Alias = \"controller\")]\n        [JsonProperty(\"controller\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Controller { get; set; }\n\n        /// <summary>\n        ///     Devices defines how to request devices.\n        /// </summary>\n        [YamlMember(Alias = \"devices\")]\n        [JsonProperty(\"devices\", NullValueHandling = NullValueHandling.Ignore)]\n        public DeviceClaimV1Alpha3 Devices { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimStatusV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaimStatus tracks whether the resource has been allocated and what the result of that was.\n    /// </summary>\n    public partial class ResourceClaimStatusV1Alpha3\n    {\n        /// <summary>\n        ///     Indicates that a claim is to be deallocated. While this is set, no new consumers may be added to ReservedFor.\n        ///     \n        ///     This is only used if the claim needs to be deallocated by a DRA driver. That driver then must deallocate this claim and reset the field together with clearing the Allocation field.\n        ///     \n        ///     This is an alpha field and requires enabling the DRAControlPlaneController feature gate.\n        /// </summary>\n        [YamlMember(Alias = \"deallocationRequested\")]\n        [JsonProperty(\"deallocationRequested\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? DeallocationRequested { get; set; }\n\n        /// <summary>\n        ///     Allocation is set once the claim has been allocated successfully.\n        /// </summary>\n        [YamlMember(Alias = \"allocation\")]\n        [JsonProperty(\"allocation\", NullValueHandling = NullValueHandling.Ignore)]\n        public AllocationResultV1Alpha3 Allocation { get; set; }\n\n        /// <summary>\n        ///     ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. A claim that is in use or might be in use because it has been reserved must not get deallocated.\n        ///     \n        ///     In a cluster with multiple scheduler instances, two pods might get scheduled concurrently by different schedulers. When they reference the same ResourceClaim which already has reached its maximum number of consumers, only one pod can be scheduled.\n        ///     \n        ///     Both schedulers try to add their pod to the claim.status.reservedFor field, but only the update that reaches the API server first gets stored. The other one fails with an error and the scheduler which issued it knows that it must put the pod back into the queue, waiting for the ResourceClaim to become usable again.\n        ///     \n        ///     There can be at most 32 such reservations. This may get increased in the future, but not reduced.\n        /// </summary>\n        [MergeStrategy(Key = \"uid\")]\n        [YamlMember(Alias = \"reservedFor\")]\n        [JsonProperty(\"reservedFor\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourceClaimConsumerReferenceV1Alpha3> ReservedFor { get; } = new List<ResourceClaimConsumerReferenceV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ReservedFor\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeReservedFor() => ReservedFor.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimTemplateListV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaimTemplateList is a collection of claim templates.\n    /// </summary>\n    [KubeListItem(\"ResourceClaimTemplate\", \"resource.k8s.io/v1alpha3\")]\n    [KubeObject(\"ResourceClaimTemplateList\", \"resource.k8s.io/v1alpha3\")]\n    public partial class ResourceClaimTemplateListV1Alpha3 : KubeResourceListV1<ResourceClaimTemplateV1Alpha3>\n    {\n        /// <summary>\n        ///     Items is the list of resource claim templates.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ResourceClaimTemplateV1Alpha3> Items { get; } = new List<ResourceClaimTemplateV1Alpha3>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimTemplateSpecV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.\n    /// </summary>\n    public partial class ResourceClaimTemplateSpecV1Alpha3\n    {\n        /// <summary>\n        ///     ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\n        /// </summary>\n        [YamlMember(Alias = \"metadata\")]\n        [JsonProperty(\"metadata\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectMetaV1 Metadata { get; set; }\n\n        /// <summary>\n        ///     Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public ResourceClaimSpecV1Alpha3 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimTemplateV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaimTemplate is used to produce ResourceClaim objects.\n    ///     \n    ///     This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.\n    /// </summary>\n    [KubeObject(\"ResourceClaimTemplate\", \"resource.k8s.io/v1alpha3\")]\n    [KubeApi(KubeAction.List, \"apis/resource.k8s.io/v1alpha3/resourceclaimtemplates\")]\n    [KubeApi(KubeAction.WatchList, \"apis/resource.k8s.io/v1alpha3/watch/resourceclaimtemplates\")]\n    [KubeApi(KubeAction.List, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates\")]\n    [KubeApi(KubeAction.Create, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates\")]\n    [KubeApi(KubeAction.Get, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/resourceclaimtemplates\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates\")]\n    [KubeApi(KubeAction.Watch, \"apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/resourceclaimtemplates/{name}\")]\n    public partial class ResourceClaimTemplateV1Alpha3 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Describes the ResourceClaim that is to be generated.\n        ///     \n        ///     This field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public ResourceClaimTemplateSpecV1Alpha3 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaim references one entry in PodSpec.ResourceClaims.\n    /// </summary>\n    public partial class ResourceClaimV1\n    {\n        /// <summary>\n        ///     Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.\n        /// </summary>\n        [YamlMember(Alias = \"request\")]\n        [JsonProperty(\"request\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Request { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceClaimV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceClaim describes a request for access to resources in the cluster, for use by workloads. For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated.\n    ///     \n    ///     This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.\n    /// </summary>\n    [KubeObject(\"ResourceClaim\", \"resource.k8s.io/v1alpha3\")]\n    [KubeApi(KubeAction.List, \"apis/resource.k8s.io/v1alpha3/resourceclaims\")]\n    [KubeApi(KubeAction.WatchList, \"apis/resource.k8s.io/v1alpha3/watch/resourceclaims\")]\n    [KubeApi(KubeAction.List, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims\")]\n    [KubeApi(KubeAction.Create, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims\")]\n    [KubeApi(KubeAction.Get, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/resourceclaims\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims\")]\n    [KubeApi(KubeAction.Get, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/resourceclaims/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status\")]\n    public partial class ResourceClaimV1Alpha3 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec describes what is being requested and how to configure it. The spec is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public ResourceClaimSpecV1Alpha3 Spec { get; set; }\n\n        /// <summary>\n        ///     Status describes whether the claim is ready to use and what has been allocated.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceClaimStatusV1Alpha3 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceFieldSelectorV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceFieldSelector represents container resources (cpu, memory) and their output format\n    /// </summary>\n    public partial class ResourceFieldSelectorV1\n    {\n        /// <summary>\n        ///     Container name: required for volumes, optional for env vars\n        /// </summary>\n        [YamlMember(Alias = \"containerName\")]\n        [JsonProperty(\"containerName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ContainerName { get; set; }\n\n        /// <summary>\n        ///     Required: resource to select\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Include)]\n        public string Resource { get; set; }\n\n        /// <summary>\n        ///     Specifies the output format of the exposed resources, defaults to \"1\"\n        /// </summary>\n        [YamlMember(Alias = \"divisor\")]\n        [JsonProperty(\"divisor\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Divisor { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceHealthV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceHealth represents the health of a resource. It has the latest device health information. This is a part of KEP https://kep.k8s.io/4680 and historical health changes are planned to be added in future iterations of a KEP.\n    /// </summary>\n    public partial class ResourceHealthV1\n    {\n        /// <summary>\n        ///     ResourceID is the unique identifier of the resource. See the ResourceID type for more information.\n        /// </summary>\n        [YamlMember(Alias = \"resourceID\")]\n        [JsonProperty(\"resourceID\", NullValueHandling = NullValueHandling.Include)]\n        public string ResourceID { get; set; }\n\n        /// <summary>\n        ///     Health of the resource. can be one of:\n        ///      - Healthy: operates as normal\n        ///      - Unhealthy: reported unhealthy. We consider this a temporary health issue\n        ///                   since we do not have a mechanism today to distinguish\n        ///                   temporary and permanent issues.\n        ///      - Unknown: The status cannot be determined.\n        ///                 For example, Device Plugin got unregistered and hasn't been re-registered since.\n        ///     \n        ///     In future we may want to introduce the PermanentlyUnhealthy Status.\n        /// </summary>\n        [YamlMember(Alias = \"health\")]\n        [JsonProperty(\"health\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Health { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceMetricSourceV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory).  The values will be averaged together before being compared to the target.  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.  Only one \"target\" type should be set.\n    /// </summary>\n    public partial class ResourceMetricSourceV2\n    {\n        /// <summary>\n        ///     name is the name of the resource in question.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     target specifies the target value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"target\")]\n        [JsonProperty(\"target\", NullValueHandling = NullValueHandling.Include)]\n        public MetricTargetV2 Target { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceMetricSourceV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory).  The values will be averaged together before being compared to the target.  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.  Only one \"target\" type should be set.\n    /// </summary>\n    public partial class ResourceMetricSourceV2Beta1\n    {\n        /// <summary>\n        ///     name is the name of the resource in question.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     targetAverageValue is the target value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type.\n        /// </summary>\n        [YamlMember(Alias = \"targetAverageValue\")]\n        [JsonProperty(\"targetAverageValue\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TargetAverageValue { get; set; }\n\n        /// <summary>\n        ///     targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.\n        /// </summary>\n        [YamlMember(Alias = \"targetAverageUtilization\")]\n        [JsonProperty(\"targetAverageUtilization\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? TargetAverageUtilization { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceMetricStatusV2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory).  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.\n    /// </summary>\n    public partial class ResourceMetricStatusV2\n    {\n        /// <summary>\n        ///     name is the name of the resource in question.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     current contains the current value for the given metric\n        /// </summary>\n        [YamlMember(Alias = \"current\")]\n        [JsonProperty(\"current\", NullValueHandling = NullValueHandling.Include)]\n        public MetricValueStatusV2 Current { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceMetricStatusV2Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory).  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.\n    /// </summary>\n    public partial class ResourceMetricStatusV2Beta1\n    {\n        /// <summary>\n        ///     currentAverageValue is the current value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type. It will always be set, regardless of the corresponding metric specification.\n        /// </summary>\n        [YamlMember(Alias = \"currentAverageValue\")]\n        [JsonProperty(\"currentAverageValue\", NullValueHandling = NullValueHandling.Include)]\n        public string CurrentAverageValue { get; set; }\n\n        /// <summary>\n        ///     name is the name of the resource in question.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.  It will only be present if `targetAverageValue` was set in the corresponding metric specification.\n        /// </summary>\n        [YamlMember(Alias = \"currentAverageUtilization\")]\n        [JsonProperty(\"currentAverageUtilization\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CurrentAverageUtilization { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourcePolicyRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==\"\"`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace.\n    /// </summary>\n    public partial class ResourcePolicyRuleV1\n    {\n        /// <summary>\n        ///     `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list.\n        /// </summary>\n        [YamlMember(Alias = \"clusterScope\")]\n        [JsonProperty(\"clusterScope\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ClusterScope { get; set; }\n\n        /// <summary>\n        ///     `apiGroups` is a list of matching API groups and may not be empty. \"*\" matches all API groups and, if present, must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     `namespaces` is a list of target namespaces that restricts matches.  A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains \"*\".  Note that \"*\" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true.\n        /// </summary>\n        [YamlMember(Alias = \"namespaces\")]\n        [JsonProperty(\"namespaces\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Namespaces { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Namespaces\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNamespaces() => Namespaces.Count > 0;\n\n        /// <summary>\n        ///     `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource.  For example, [ \"services\", \"nodes/status\" ].  This list may not be empty. \"*\" matches all resources and, if present, must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs and, if present, must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourcePolicyRuleV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==\"\"`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace.\n    /// </summary>\n    public partial class ResourcePolicyRuleV1Beta3\n    {\n        /// <summary>\n        ///     `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list.\n        /// </summary>\n        [YamlMember(Alias = \"clusterScope\")]\n        [JsonProperty(\"clusterScope\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ClusterScope { get; set; }\n\n        /// <summary>\n        ///     `apiGroups` is a list of matching API groups and may not be empty. \"*\" matches all API groups and, if present, must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     `namespaces` is a list of target namespaces that restricts matches.  A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains \"*\".  Note that \"*\" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true.\n        /// </summary>\n        [YamlMember(Alias = \"namespaces\")]\n        [JsonProperty(\"namespaces\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Namespaces { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Namespaces\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNamespaces() => Namespaces.Count > 0;\n\n        /// <summary>\n        ///     `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource.  For example, [ \"services\", \"nodes/status\" ].  This list may not be empty. \"*\" matches all resources and, if present, must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     `verbs` is a list of matching verbs and may not be empty. \"*\" matches all verbs and, if present, must be the only entry. Required.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourcePoolV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourcePool describes the pool that ResourceSlices belong to.\n    /// </summary>\n    public partial class ResourcePoolV1Alpha3\n    {\n        /// <summary>\n        ///     Name is used to identify the pool. For node-local devices, this is often the node name, but this is not required.\n        ///     \n        ///     It must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Generation tracks the change in a pool over time. Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted.\n        ///     \n        ///     Combined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state.\n        /// </summary>\n        [YamlMember(Alias = \"generation\")]\n        [JsonProperty(\"generation\", NullValueHandling = NullValueHandling.Include)]\n        public long Generation { get; set; }\n\n        /// <summary>\n        ///     ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero.\n        ///     \n        ///     Consumers can use this to check whether they have seen all ResourceSlices belonging to the same pool.\n        /// </summary>\n        [YamlMember(Alias = \"resourceSliceCount\")]\n        [JsonProperty(\"resourceSliceCount\", NullValueHandling = NullValueHandling.Include)]\n        public long ResourceSliceCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceQuotaListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceQuotaList is a list of ResourceQuota items.\n    /// </summary>\n    [KubeListItem(\"ResourceQuota\", \"v1\")]\n    [KubeObject(\"ResourceQuotaList\", \"v1\")]\n    public partial class ResourceQuotaListV1 : KubeResourceListV1<ResourceQuotaV1>\n    {\n        /// <summary>\n        ///     Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ResourceQuotaV1> Items { get; } = new List<ResourceQuotaV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceQuotaSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceQuotaSpec defines the desired hard limits to enforce for Quota.\n    /// </summary>\n    public partial class ResourceQuotaSpecV1\n    {\n        /// <summary>\n        ///     hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n        /// </summary>\n        [YamlMember(Alias = \"hard\")]\n        [JsonProperty(\"hard\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Hard { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Hard\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHard() => Hard.Count > 0;\n\n        /// <summary>\n        ///     scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota but expressed using ScopeSelectorOperator in combination with possible values. For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.\n        /// </summary>\n        [YamlMember(Alias = \"scopeSelector\")]\n        [JsonProperty(\"scopeSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScopeSelectorV1 ScopeSelector { get; set; }\n\n        /// <summary>\n        ///     A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.\n        /// </summary>\n        [YamlMember(Alias = \"scopes\")]\n        [JsonProperty(\"scopes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Scopes { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Scopes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeScopes() => Scopes.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceQuotaStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceQuotaStatus defines the enforced hard limits and observed use.\n    /// </summary>\n    public partial class ResourceQuotaStatusV1\n    {\n        /// <summary>\n        ///     Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\n        /// </summary>\n        [YamlMember(Alias = \"hard\")]\n        [JsonProperty(\"hard\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Hard { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Hard\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeHard() => Hard.Count > 0;\n\n        /// <summary>\n        ///     Used is the current observed total usage of the resource in the namespace.\n        /// </summary>\n        [YamlMember(Alias = \"used\")]\n        [JsonProperty(\"used\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Used { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Used\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeUsed() => Used.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceQuotaV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceQuota sets aggregate quota restrictions enforced per namespace\n    /// </summary>\n    [KubeObject(\"ResourceQuota\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/resourcequotas\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/resourcequotas\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/resourcequotas\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/resourcequotas\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/resourcequotas/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/resourcequotas/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/resourcequotas/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/resourcequotas/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/resourcequotas\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/resourcequotas\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/resourcequotas/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/resourcequotas/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/resourcequotas/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/resourcequotas/{name}/status\")]\n    public partial class ResourceQuotaV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceQuotaSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status defines the actual enforced quota and its current usage. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceQuotaStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceRequirementsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceRequirements describes the compute resource requirements.\n    /// </summary>\n    public partial class ResourceRequirementsV1\n    {\n        /// <summary>\n        ///     Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.\n        ///     \n        ///     This is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n        ///     \n        ///     This field is immutable. It can only be set for containers.\n        /// </summary>\n        [YamlMember(Alias = \"claims\")]\n        [JsonProperty(\"claims\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourceClaimV1> Claims { get; } = new List<ResourceClaimV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Claims\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeClaims() => Claims.Count > 0;\n\n        /// <summary>\n        ///     Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n        /// </summary>\n        [YamlMember(Alias = \"limits\")]\n        [JsonProperty(\"limits\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Limits { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Limits\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeLimits() => Limits.Count > 0;\n\n        /// <summary>\n        ///     Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n        /// </summary>\n        [YamlMember(Alias = \"requests\")]\n        [JsonProperty(\"requests\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Requests { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Requests\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequests() => Requests.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n    /// </summary>\n    public partial class ResourceRuleV1\n    {\n        /// <summary>\n        ///     APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"resourceNames\")]\n        [JsonProperty(\"resourceNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ResourceNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceNames() => ResourceNames.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.  \"*\" means all in the specified apiGroups.\n        ///      \"*/foo\" represents the subresource 'foo' for all resources in the specified apiGroups.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n\n        /// <summary>\n        ///     Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceRuleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n    /// </summary>\n    public partial class ResourceRuleV1Beta1\n    {\n        /// <summary>\n        ///     APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"resourceNames\")]\n        [JsonProperty(\"resourceNames\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ResourceNames { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ResourceNames\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResourceNames() => ResourceNames.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.  \"*\" means all in the specified apiGroups.\n        ///      \"*/foo\" represents the subresource 'foo' for all resources in the specified apiGroups.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n\n        /// <summary>\n        ///     Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy.  \"*\" means all.\n        /// </summary>\n        [YamlMember(Alias = \"verbs\")]\n        [JsonProperty(\"verbs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Verbs { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceSliceListV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceSliceList is a collection of ResourceSlices.\n    /// </summary>\n    [KubeListItem(\"ResourceSlice\", \"resource.k8s.io/v1alpha3\")]\n    [KubeObject(\"ResourceSliceList\", \"resource.k8s.io/v1alpha3\")]\n    public partial class ResourceSliceListV1Alpha3 : KubeResourceListV1<ResourceSliceV1Alpha3>\n    {\n        /// <summary>\n        ///     Items is the list of resource ResourceSlices.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ResourceSliceV1Alpha3> Items { get; } = new List<ResourceSliceV1Alpha3>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceSliceSpecV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceSliceSpec contains the information published by the driver in one ResourceSlice.\n    /// </summary>\n    public partial class ResourceSliceSpecV1Alpha3\n    {\n        /// <summary>\n        ///     NodeName identifies the node which provides the resources in this pool. A field selector can be used to list only ResourceSlice objects belonging to a certain node.\n        ///     \n        ///     This field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available.\n        ///     \n        ///     Exactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"nodeName\")]\n        [JsonProperty(\"nodeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string NodeName { get; set; }\n\n        /// <summary>\n        ///     Pool describes the pool that this ResourceSlice belongs to.\n        /// </summary>\n        [YamlMember(Alias = \"pool\")]\n        [JsonProperty(\"pool\", NullValueHandling = NullValueHandling.Include)]\n        public ResourcePoolV1Alpha3 Pool { get; set; }\n\n        /// <summary>\n        ///     Driver identifies the DRA driver providing the capacity information. A field selector can be used to list only ResourceSlice objects with a certain driver name.\n        ///     \n        ///     Must be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"driver\")]\n        [JsonProperty(\"driver\", NullValueHandling = NullValueHandling.Include)]\n        public string Driver { get; set; }\n\n        /// <summary>\n        ///     NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node.\n        ///     \n        ///     Must use exactly one term.\n        ///     \n        ///     Exactly one of NodeName, NodeSelector and AllNodes must be set.\n        /// </summary>\n        [YamlMember(Alias = \"nodeSelector\")]\n        [JsonProperty(\"nodeSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeSelectorV1 NodeSelector { get; set; }\n\n        /// <summary>\n        ///     AllNodes indicates that all nodes have access to the resources in the pool.\n        ///     \n        ///     Exactly one of NodeName, NodeSelector and AllNodes must be set.\n        /// </summary>\n        [YamlMember(Alias = \"allNodes\")]\n        [JsonProperty(\"allNodes\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AllNodes { get; set; }\n\n        /// <summary>\n        ///     Devices lists some or all of the devices in this pool.\n        ///     \n        ///     Must not have more than 128 entries.\n        /// </summary>\n        [YamlMember(Alias = \"devices\")]\n        [JsonProperty(\"devices\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<DeviceV1Alpha3> Devices { get; } = new List<DeviceV1Alpha3>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Devices\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDevices() => Devices.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceSliceV1Alpha3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver.\n    ///     \n    ///     At the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple &lt;driver name&gt;, &lt;pool name&gt;, &lt;device name&gt;.\n    ///     \n    ///     Whenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others.\n    ///     \n    ///     When allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool.\n    ///     \n    ///     For resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available.\n    ///     \n    ///     This is an alpha type and requires enabling the DynamicResourceAllocation feature gate.\n    /// </summary>\n    [KubeObject(\"ResourceSlice\", \"resource.k8s.io/v1alpha3\")]\n    [KubeApi(KubeAction.List, \"apis/resource.k8s.io/v1alpha3/resourceslices\")]\n    [KubeApi(KubeAction.Create, \"apis/resource.k8s.io/v1alpha3/resourceslices\")]\n    [KubeApi(KubeAction.Get, \"apis/resource.k8s.io/v1alpha3/resourceslices/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/resource.k8s.io/v1alpha3/resourceslices/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/resource.k8s.io/v1alpha3/resourceslices/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/resource.k8s.io/v1alpha3/resourceslices/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/resource.k8s.io/v1alpha3/watch/resourceslices\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/resource.k8s.io/v1alpha3/resourceslices\")]\n    [KubeApi(KubeAction.Watch, \"apis/resource.k8s.io/v1alpha3/watch/resourceslices/{name}\")]\n    public partial class ResourceSliceV1Alpha3 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Contains the information published by the driver.\n        ///     \n        ///     Changing the spec automatically increments the metadata.generation number.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public ResourceSliceSpecV1Alpha3 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ResourceStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class ResourceStatusV1\n    {\n        /// <summary>\n        ///     Name of the resource. Must be unique within the pod and match one of the resources from the pod spec.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     List of unique Resources health. Each element in the list contains an unique resource ID and resource health. At a minimum, ResourceID must uniquely identify the Resource allocated to the Pod on the Node for the lifetime of a Pod. See ResourceID type for it's definition.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourceHealthV1> Resources { get; } = new List<ResourceHealthV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleBindingListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleBindingList is a collection of RoleBindings\n    /// </summary>\n    [KubeListItem(\"RoleBinding\", \"rbac.authorization.k8s.io/v1\")]\n    [KubeObject(\"RoleBindingList\", \"rbac.authorization.k8s.io/v1\")]\n    public partial class RoleBindingListV1 : KubeResourceListV1<RoleBindingV1>\n    {\n        /// <summary>\n        ///     Items is a list of RoleBindings\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<RoleBindingV1> Items { get; } = new List<RoleBindingV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleBindingListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleBindingList is a collection of RoleBindings\n    /// </summary>\n    [KubeListItem(\"RoleBinding\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    [KubeObject(\"RoleBindingList\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    public partial class RoleBindingListV1Alpha1 : KubeResourceListV1<RoleBindingV1Alpha1>\n    {\n        /// <summary>\n        ///     Items is a list of RoleBindings\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<RoleBindingV1Alpha1> Items { get; } = new List<RoleBindingV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleBindingListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleBindingList is a collection of RoleBindings\n    /// </summary>\n    [KubeListItem(\"RoleBinding\", \"rbac.authorization.k8s.io/v1beta1\")]\n    [KubeObject(\"RoleBindingList\", \"rbac.authorization.k8s.io/v1beta1\")]\n    public partial class RoleBindingListV1Beta1 : KubeResourceListV1<RoleBindingV1Beta1>\n    {\n        /// <summary>\n        ///     Items is a list of RoleBindings\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<RoleBindingV1Beta1> Items { get; } = new List<RoleBindingV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleBindingV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleBinding references a role, but does not contain it.  It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in.  RoleBindings in a given namespace only have effect in that namespace.\n    /// </summary>\n    [KubeObject(\"RoleBinding\", \"rbac.authorization.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1/rolebindings\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1/watch/rolebindings\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/rolebindings/{name}\")]\n    public partial class RoleBindingV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"roleRef\")]\n        [JsonProperty(\"roleRef\", NullValueHandling = NullValueHandling.Include)]\n        public RoleRefV1 RoleRef { get; set; }\n\n        /// <summary>\n        ///     Subjects holds references to the objects the role applies to.\n        /// </summary>\n        [YamlMember(Alias = \"subjects\")]\n        [JsonProperty(\"subjects\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SubjectV1> Subjects { get; } = new List<SubjectV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Subjects\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSubjects() => Subjects.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleBindingV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleBinding references a role, but does not contain it.  It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in.  RoleBindings in a given namespace only have effect in that namespace.\n    /// </summary>\n    [KubeObject(\"RoleBinding\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1alpha1/rolebindings\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/rolebindings\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/rolebindings/{name}\")]\n    public partial class RoleBindingV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.\n        /// </summary>\n        [YamlMember(Alias = \"roleRef\")]\n        [JsonProperty(\"roleRef\", NullValueHandling = NullValueHandling.Include)]\n        public RoleRefV1Alpha1 RoleRef { get; set; }\n\n        /// <summary>\n        ///     Subjects holds references to the objects the role applies to.\n        /// </summary>\n        [YamlMember(Alias = \"subjects\")]\n        [JsonProperty(\"subjects\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SubjectV1Alpha1> Subjects { get; } = new List<SubjectV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Subjects\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSubjects() => Subjects.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleBindingV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleBinding references a role, but does not contain it.  It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in.  RoleBindings in a given namespace only have effect in that namespace.\n    /// </summary>\n    [KubeObject(\"RoleBinding\", \"rbac.authorization.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1beta1/rolebindings\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1beta1/watch/rolebindings\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1beta1/watch/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1beta1/watch/namespaces/{namespace}/rolebindings/{name}\")]\n    public partial class RoleBindingV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.\n        /// </summary>\n        [YamlMember(Alias = \"roleRef\")]\n        [JsonProperty(\"roleRef\", NullValueHandling = NullValueHandling.Include)]\n        public RoleRefV1Beta1 RoleRef { get; set; }\n\n        /// <summary>\n        ///     Subjects holds references to the objects the role applies to.\n        /// </summary>\n        [YamlMember(Alias = \"subjects\")]\n        [JsonProperty(\"subjects\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SubjectV1Beta1> Subjects { get; } = new List<SubjectV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Subjects\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSubjects() => Subjects.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleList is a collection of Roles\n    /// </summary>\n    [KubeListItem(\"Role\", \"rbac.authorization.k8s.io/v1\")]\n    [KubeObject(\"RoleList\", \"rbac.authorization.k8s.io/v1\")]\n    public partial class RoleListV1 : KubeResourceListV1<RoleV1>\n    {\n        /// <summary>\n        ///     Items is a list of Roles\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<RoleV1> Items { get; } = new List<RoleV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleList is a collection of Roles\n    /// </summary>\n    [KubeListItem(\"Role\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    [KubeObject(\"RoleList\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    public partial class RoleListV1Alpha1 : KubeResourceListV1<RoleV1Alpha1>\n    {\n        /// <summary>\n        ///     Items is a list of Roles\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<RoleV1Alpha1> Items { get; } = new List<RoleV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleList is a collection of Roles\n    /// </summary>\n    [KubeListItem(\"Role\", \"rbac.authorization.k8s.io/v1beta1\")]\n    [KubeObject(\"RoleList\", \"rbac.authorization.k8s.io/v1beta1\")]\n    public partial class RoleListV1Beta1 : KubeResourceListV1<RoleV1Beta1>\n    {\n        /// <summary>\n        ///     Items is a list of Roles\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<RoleV1Beta1> Items { get; } = new List<RoleV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleRefV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleRef contains information that points to the role being used\n    /// </summary>\n    public partial class RoleRefV1\n    {\n        /// <summary>\n        ///     Kind is the type of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     Name is the name of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     APIGroup is the group for the resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Include)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleRefV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleRef contains information that points to the role being used\n    /// </summary>\n    public partial class RoleRefV1Alpha1\n    {\n        /// <summary>\n        ///     Kind is the type of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     Name is the name of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     APIGroup is the group for the resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Include)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleRefV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RoleRef contains information that points to the role being used\n    /// </summary>\n    public partial class RoleRefV1Beta1\n    {\n        /// <summary>\n        ///     Kind is the type of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     Name is the name of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     APIGroup is the group for the resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Include)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.\n    /// </summary>\n    [KubeObject(\"Role\", \"rbac.authorization.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1/roles\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1/watch/roles\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/roles/{name}\")]\n    public partial class RoleV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Rules holds all the PolicyRules for this Role\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PolicyRuleV1> Rules { get; } = new List<PolicyRuleV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.\n    /// </summary>\n    [KubeObject(\"Role\", \"rbac.authorization.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1alpha1/roles\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/roles\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/roles/{name}\")]\n    public partial class RoleV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Rules holds all the PolicyRules for this Role\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PolicyRuleV1Alpha1> Rules { get; } = new List<PolicyRuleV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RoleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.\n    /// </summary>\n    [KubeObject(\"Role\", \"rbac.authorization.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1beta1/roles\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1beta1/watch/roles\")]\n    [KubeApi(KubeAction.List, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Create, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Get, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/rbac.authorization.k8s.io/v1beta1/watch/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles\")]\n    [KubeApi(KubeAction.Watch, \"apis/rbac.authorization.k8s.io/v1beta1/watch/namespaces/{namespace}/roles/{name}\")]\n    public partial class RoleV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Rules holds all the PolicyRules for this Role\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PolicyRuleV1Beta1> Rules { get; } = new List<PolicyRuleV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollbackConfigV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED.\n    /// </summary>\n    public partial class RollbackConfigV1Beta1\n    {\n        /// <summary>\n        ///     The revision to rollback to. If set to 0, rollback to the last revision.\n        /// </summary>\n        [YamlMember(Alias = \"revision\")]\n        [JsonProperty(\"revision\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? Revision { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateDaemonSetV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Spec to control the desired behavior of daemon set rolling update.\n    /// </summary>\n    public partial class RollingUpdateDaemonSetV1\n    {\n        /// <summary>\n        ///     The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption.\n        /// </summary>\n        [YamlMember(Alias = \"maxSurge\")]\n        [JsonProperty(\"maxSurge\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxSurge { get; set; }\n\n        /// <summary>\n        ///     The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateDaemonSetV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Spec to control the desired behavior of daemon set rolling update.\n    /// </summary>\n    public partial class RollingUpdateDaemonSetV1Beta1\n    {\n        /// <summary>\n        ///     The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0. Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateDaemonSetV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Spec to control the desired behavior of daemon set rolling update.\n    /// </summary>\n    public partial class RollingUpdateDaemonSetV1Beta2\n    {\n        /// <summary>\n        ///     The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0. Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateDeploymentV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Spec to control the desired behavior of rolling update.\n    /// </summary>\n    public partial class RollingUpdateDeploymentV1\n    {\n        /// <summary>\n        ///     The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods.\n        /// </summary>\n        [YamlMember(Alias = \"maxSurge\")]\n        [JsonProperty(\"maxSurge\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxSurge { get; set; }\n\n        /// <summary>\n        ///     The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateDeploymentV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Spec to control the desired behavior of rolling update.\n    /// </summary>\n    public partial class RollingUpdateDeploymentV1Beta1\n    {\n        /// <summary>\n        ///     The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. By default, a value of 1 is used. Example: when this is set to 30%, the new RC can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new RC can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods.\n        /// </summary>\n        [YamlMember(Alias = \"maxSurge\")]\n        [JsonProperty(\"maxSurge\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxSurge { get; set; }\n\n        /// <summary>\n        ///     The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. By default, a fixed value of 1 is used. Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old RC can be scaled down further, followed by scaling up the new RC, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateDeploymentV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Spec to control the desired behavior of rolling update.\n    /// </summary>\n    public partial class RollingUpdateDeploymentV1Beta2\n    {\n        /// <summary>\n        ///     The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods.\n        /// </summary>\n        [YamlMember(Alias = \"maxSurge\")]\n        [JsonProperty(\"maxSurge\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxSurge { get; set; }\n\n        /// <summary>\n        ///     The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateStatefulSetStrategyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.\n    /// </summary>\n    public partial class RollingUpdateStatefulSetStrategyV1\n    {\n        /// <summary>\n        ///     The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable.\n        /// </summary>\n        [YamlMember(Alias = \"maxUnavailable\")]\n        [JsonProperty(\"maxUnavailable\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 MaxUnavailable { get; set; }\n\n        /// <summary>\n        ///     Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.\n        /// </summary>\n        [YamlMember(Alias = \"partition\")]\n        [JsonProperty(\"partition\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Partition { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateStatefulSetStrategyV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.\n    /// </summary>\n    public partial class RollingUpdateStatefulSetStrategyV1Beta1\n    {\n        /// <summary>\n        ///     Partition indicates the ordinal at which the StatefulSet should be partitioned.\n        /// </summary>\n        [YamlMember(Alias = \"partition\")]\n        [JsonProperty(\"partition\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Partition { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RollingUpdateStatefulSetStrategyV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.\n    /// </summary>\n    public partial class RollingUpdateStatefulSetStrategyV1Beta2\n    {\n        /// <summary>\n        ///     Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.\n        /// </summary>\n        [YamlMember(Alias = \"partition\")]\n        [JsonProperty(\"partition\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Partition { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RuleV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended to make sure that all the tuple expansions are valid.\n    /// </summary>\n    public partial class RuleV1Alpha1\n    {\n        /// <summary>\n        ///     APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiVersions\")]\n        [JsonProperty(\"apiVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiVersions() => ApiVersions.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.\n        ///     \n        ///     For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n        ///     \n        ///     If wildcard is present, the validation rule will ensure resources do not overlap with each other.\n        ///     \n        ///     Depending on the enclosing object, subresources might not be allowed. Required.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RuleWithOperationsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.\n    /// </summary>\n    public partial class RuleWithOperationsV1\n    {\n        /// <summary>\n        ///     scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\".\n        /// </summary>\n        [YamlMember(Alias = \"scope\")]\n        [JsonProperty(\"scope\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Scope { get; set; }\n\n        /// <summary>\n        ///     APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiVersions\")]\n        [JsonProperty(\"apiVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiVersions() => ApiVersions.Count > 0;\n\n        /// <summary>\n        ///     Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"operations\")]\n        [JsonProperty(\"operations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Operations { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Operations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOperations() => Operations.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.\n        ///     \n        ///     For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n        ///     \n        ///     If wildcard is present, the validation rule will ensure resources do not overlap with each other.\n        ///     \n        ///     Depending on the enclosing object, subresources might not be allowed. Required.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RuleWithOperationsV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.\n    /// </summary>\n    public partial class RuleWithOperationsV1Beta1\n    {\n        /// <summary>\n        ///     APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroups\")]\n        [JsonProperty(\"apiGroups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiGroups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiGroups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiGroups() => ApiGroups.Count > 0;\n\n        /// <summary>\n        ///     APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"apiVersions\")]\n        [JsonProperty(\"apiVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ApiVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ApiVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeApiVersions() => ApiVersions.Count > 0;\n\n        /// <summary>\n        ///     Operations is the operations the admission hook cares about - CREATE, UPDATE, or * for all operations. If '*' is present, the length of the slice must be one. Required.\n        /// </summary>\n        [YamlMember(Alias = \"operations\")]\n        [JsonProperty(\"operations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Operations { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Operations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeOperations() => Operations.Count > 0;\n\n        /// <summary>\n        ///     Resources is a list of resources this rule applies to.\n        ///     \n        ///     For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n        ///     \n        ///     If wildcard is present, the validation rule will ensure resources do not overlap with each other.\n        ///     \n        ///     Depending on the enclosing object, subresources might not be allowed. Required.\n        /// </summary>\n        [YamlMember(Alias = \"resources\")]\n        [JsonProperty(\"resources\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Resources { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Resources\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeResources() => Resources.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RunAsUserStrategyOptionsV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use RunAsUserStrategyOptions from policy API Group instead.\n    /// </summary>\n    public partial class RunAsUserStrategyOptionsV1Beta1\n    {\n        /// <summary>\n        ///     rule is the strategy that will dictate the allowable RunAsUser values that may be set.\n        /// </summary>\n        [YamlMember(Alias = \"rule\")]\n        [JsonProperty(\"rule\", NullValueHandling = NullValueHandling.Include)]\n        public string Rule { get; set; }\n\n        /// <summary>\n        ///     ranges are the allowed ranges of uids that may be used. If you would like to force a single uid then supply a single range with the same start and end. Required for MustRunAs.\n        /// </summary>\n        [YamlMember(Alias = \"ranges\")]\n        [JsonProperty(\"ranges\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IDRangeV1Beta1> Ranges { get; } = new List<IDRangeV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ranges\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRanges() => Ranges.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RuntimeClassListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RuntimeClassList is a list of RuntimeClass objects.\n    /// </summary>\n    [KubeListItem(\"RuntimeClass\", \"node.k8s.io/v1\")]\n    [KubeObject(\"RuntimeClassList\", \"node.k8s.io/v1\")]\n    public partial class RuntimeClassListV1 : KubeResourceListV1<RuntimeClassV1>\n    {\n        /// <summary>\n        ///     items is a list of schema objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<RuntimeClassV1> Items { get; } = new List<RuntimeClassV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/RuntimeClassV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     RuntimeClass defines a class of container runtime supported in the cluster. The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod.  For more details, see https://kubernetes.io/docs/concepts/containers/runtime-class/\n    /// </summary>\n    [KubeObject(\"RuntimeClass\", \"node.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/node.k8s.io/v1/runtimeclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/node.k8s.io/v1/runtimeclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/node.k8s.io/v1/runtimeclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/node.k8s.io/v1/runtimeclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/node.k8s.io/v1/runtimeclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/node.k8s.io/v1/runtimeclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/node.k8s.io/v1/watch/runtimeclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/node.k8s.io/v1/runtimeclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/node.k8s.io/v1/watch/runtimeclasses/{name}\")]\n    public partial class RuntimeClassV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     overhead represents the resource overhead associated with running a pod for a given RuntimeClass. For more details, see\n        ///      https://kubernetes.io/docs/concepts/scheduling-eviction/pod-overhead/\n        /// </summary>\n        [YamlMember(Alias = \"overhead\")]\n        [JsonProperty(\"overhead\", NullValueHandling = NullValueHandling.Ignore)]\n        public OverheadV1 Overhead { get; set; }\n\n        /// <summary>\n        ///     scheduling holds the scheduling constraints to ensure that pods running with this RuntimeClass are scheduled to nodes that support it. If scheduling is nil, this RuntimeClass is assumed to be supported by all nodes.\n        /// </summary>\n        [YamlMember(Alias = \"scheduling\")]\n        [JsonProperty(\"scheduling\", NullValueHandling = NullValueHandling.Ignore)]\n        public SchedulingV1 Scheduling { get; set; }\n\n        /// <summary>\n        ///     handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node &amp; CRI configuration.  It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called \"runc\" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"handler\")]\n        [JsonProperty(\"handler\", NullValueHandling = NullValueHandling.Include)]\n        public string Handler { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SELinuxOptionsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SELinuxOptions are the labels to be applied to the container\n    /// </summary>\n    public partial class SELinuxOptionsV1\n    {\n        /// <summary>\n        ///     Role is a SELinux role label that applies to the container.\n        /// </summary>\n        [YamlMember(Alias = \"role\")]\n        [JsonProperty(\"role\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Role { get; set; }\n\n        /// <summary>\n        ///     Type is a SELinux type label that applies to the container.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Level is SELinux level label that applies to the container.\n        /// </summary>\n        [YamlMember(Alias = \"level\")]\n        [JsonProperty(\"level\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Level { get; set; }\n\n        /// <summary>\n        ///     User is a SELinux user label that applies to the container.\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public string User { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SELinuxStrategyOptionsV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SELinuxStrategyOptions defines the strategy type and any options used to create the strategy. Deprecated: use SELinuxStrategyOptions from policy API Group instead.\n    /// </summary>\n    public partial class SELinuxStrategyOptionsV1Beta1\n    {\n        /// <summary>\n        ///     rule is the strategy that will dictate the allowable labels that may be set.\n        /// </summary>\n        [YamlMember(Alias = \"rule\")]\n        [JsonProperty(\"rule\", NullValueHandling = NullValueHandling.Include)]\n        public string Rule { get; set; }\n\n        /// <summary>\n        ///     seLinuxOptions required to run as; required for MustRunAs More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\n        /// </summary>\n        [YamlMember(Alias = \"seLinuxOptions\")]\n        [JsonProperty(\"seLinuxOptions\", NullValueHandling = NullValueHandling.Ignore)]\n        public SELinuxOptionsV1 SeLinuxOptions { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleIOPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume\n    /// </summary>\n    public partial class ScaleIOPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     sslEnabled is the flag to enable/disable SSL communication with Gateway, default false\n        /// </summary>\n        [YamlMember(Alias = \"sslEnabled\")]\n        [JsonProperty(\"sslEnabled\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? SslEnabled { get; set; }\n\n        /// <summary>\n        ///     fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\"\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\n        /// </summary>\n        [YamlMember(Alias = \"storageMode\")]\n        [JsonProperty(\"storageMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StorageMode { get; set; }\n\n        /// <summary>\n        ///     volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\n        /// </summary>\n        [YamlMember(Alias = \"volumeName\")]\n        [JsonProperty(\"volumeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeName { get; set; }\n\n        /// <summary>\n        ///     secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Include)]\n        public SecretReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     storagePool is the ScaleIO Storage Pool associated with the protection domain.\n        /// </summary>\n        [YamlMember(Alias = \"storagePool\")]\n        [JsonProperty(\"storagePool\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StoragePool { get; set; }\n\n        /// <summary>\n        ///     system is the name of the storage system as configured in ScaleIO.\n        /// </summary>\n        [YamlMember(Alias = \"system\")]\n        [JsonProperty(\"system\", NullValueHandling = NullValueHandling.Include)]\n        public string System { get; set; }\n\n        /// <summary>\n        ///     protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n        /// </summary>\n        [YamlMember(Alias = \"protectionDomain\")]\n        [JsonProperty(\"protectionDomain\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ProtectionDomain { get; set; }\n\n        /// <summary>\n        ///     gateway is the host address of the ScaleIO API Gateway.\n        /// </summary>\n        [YamlMember(Alias = \"gateway\")]\n        [JsonProperty(\"gateway\", NullValueHandling = NullValueHandling.Include)]\n        public string Gateway { get; set; }\n\n        /// <summary>\n        ///     readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleIOVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ScaleIOVolumeSource represents a persistent ScaleIO volume\n    /// </summary>\n    public partial class ScaleIOVolumeSourceV1\n    {\n        /// <summary>\n        ///     sslEnabled Flag enable/disable SSL communication with Gateway, default false\n        /// </summary>\n        [YamlMember(Alias = \"sslEnabled\")]\n        [JsonProperty(\"sslEnabled\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? SslEnabled { get; set; }\n\n        /// <summary>\n        ///     fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\n        /// </summary>\n        [YamlMember(Alias = \"storageMode\")]\n        [JsonProperty(\"storageMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StorageMode { get; set; }\n\n        /// <summary>\n        ///     volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\n        /// </summary>\n        [YamlMember(Alias = \"volumeName\")]\n        [JsonProperty(\"volumeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeName { get; set; }\n\n        /// <summary>\n        ///     secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Include)]\n        public LocalObjectReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     storagePool is the ScaleIO Storage Pool associated with the protection domain.\n        /// </summary>\n        [YamlMember(Alias = \"storagePool\")]\n        [JsonProperty(\"storagePool\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StoragePool { get; set; }\n\n        /// <summary>\n        ///     system is the name of the storage system as configured in ScaleIO.\n        /// </summary>\n        [YamlMember(Alias = \"system\")]\n        [JsonProperty(\"system\", NullValueHandling = NullValueHandling.Include)]\n        public string System { get; set; }\n\n        /// <summary>\n        ///     protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n        /// </summary>\n        [YamlMember(Alias = \"protectionDomain\")]\n        [JsonProperty(\"protectionDomain\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ProtectionDomain { get; set; }\n\n        /// <summary>\n        ///     gateway is the host address of the ScaleIO API Gateway.\n        /// </summary>\n        [YamlMember(Alias = \"gateway\")]\n        [JsonProperty(\"gateway\", NullValueHandling = NullValueHandling.Include)]\n        public string Gateway { get; set; }\n\n        /// <summary>\n        ///     readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ScaleSpec describes the attributes of a scale subresource.\n    /// </summary>\n    public partial class ScaleSpecV1\n    {\n        /// <summary>\n        ///     replicas is the desired number of instances for the scaled object.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     describes the attributes of a scale subresource\n    /// </summary>\n    public partial class ScaleSpecV1Beta1\n    {\n        /// <summary>\n        ///     desired number of instances for the scaled object.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleSpecV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ScaleSpec describes the attributes of a scale subresource\n    /// </summary>\n    public partial class ScaleSpecV1Beta2\n    {\n        /// <summary>\n        ///     desired number of instances for the scaled object.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ScaleStatus represents the current status of a scale subresource.\n    /// </summary>\n    public partial class ScaleStatusV1\n    {\n        /// <summary>\n        ///     selector is the label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Selector { get; set; }\n\n        /// <summary>\n        ///     replicas is the actual number of observed instances of the scaled object.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     represents the current status of a scale subresource.\n    /// </summary>\n    public partial class ScaleStatusV1Beta1\n    {\n        /// <summary>\n        ///     label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Selector { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Selector\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSelector() => Selector.Count > 0;\n\n        /// <summary>\n        ///     label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"targetSelector\")]\n        [JsonProperty(\"targetSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TargetSelector { get; set; }\n\n        /// <summary>\n        ///     actual number of observed instances of the scaled object.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleStatusV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ScaleStatus represents the current status of a scale subresource.\n    /// </summary>\n    public partial class ScaleStatusV1Beta2\n    {\n        /// <summary>\n        ///     label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Selector { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Selector\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSelector() => Selector.Count > 0;\n\n        /// <summary>\n        ///     label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"targetSelector\")]\n        [JsonProperty(\"targetSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TargetSelector { get; set; }\n\n        /// <summary>\n        ///     actual number of observed instances of the scaled object.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Scale represents a scaling request for a resource.\n    /// </summary>\n    [KubeObject(\"Scale\", \"autoscaling/v1\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale\")]\n    public partial class ScaleV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScaleSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     status is the current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScaleStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Scale represents a scaling request for a resource.\n    /// </summary>\n    [KubeObject(\"Scale\", \"apps/v1beta1\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    public partial class ScaleV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScaleSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScaleStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScaleV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Scale represents a scaling request for a resource.\n    /// </summary>\n    [KubeObject(\"Scale\", \"apps/v1beta2\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}/scale\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}/scale\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}/scale\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}/scale\")]\n    public partial class ScaleV1Beta2 : KubeResourceV1\n    {\n        /// <summary>\n        ///     defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScaleSpecV1Beta2 Spec { get; set; }\n\n        /// <summary>\n        ///     current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScaleStatusV1Beta2 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SchedulingV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.\n    /// </summary>\n    public partial class SchedulingV1\n    {\n        /// <summary>\n        ///     nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\n        /// </summary>\n        [YamlMember(Alias = \"nodeSelector\")]\n        [JsonProperty(\"nodeSelector\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> NodeSelector { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"NodeSelector\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeNodeSelector() => NodeSelector.Count > 0;\n\n        /// <summary>\n        ///     tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\n        /// </summary>\n        [YamlMember(Alias = \"tolerations\")]\n        [JsonProperty(\"tolerations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<TolerationV1> Tolerations { get; } = new List<TolerationV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Tolerations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeTolerations() => Tolerations.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScopeSelectorV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.\n    /// </summary>\n    public partial class ScopeSelectorV1\n    {\n        /// <summary>\n        ///     A list of scope selector requirements by scope of the resources.\n        /// </summary>\n        [YamlMember(Alias = \"matchExpressions\")]\n        [JsonProperty(\"matchExpressions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ScopedResourceSelectorRequirementV1> MatchExpressions { get; } = new List<ScopedResourceSelectorRequirementV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchExpressions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchExpressions() => MatchExpressions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ScopedResourceSelectorRequirementV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values.\n    /// </summary>\n    public partial class ScopedResourceSelectorRequirementV1\n    {\n        /// <summary>\n        ///     The name of the scope that the selector applies to.\n        /// </summary>\n        [YamlMember(Alias = \"scopeName\")]\n        [JsonProperty(\"scopeName\", NullValueHandling = NullValueHandling.Include)]\n        public string ScopeName { get; set; }\n\n        /// <summary>\n        ///     Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.\n        /// </summary>\n        [YamlMember(Alias = \"operator\")]\n        [JsonProperty(\"operator\", NullValueHandling = NullValueHandling.Include)]\n        public string Operator { get; set; }\n\n        /// <summary>\n        ///     An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\n        /// </summary>\n        [YamlMember(Alias = \"values\")]\n        [JsonProperty(\"values\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Values { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Values\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValues() => Values.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SeccompProfileV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.\n    /// </summary>\n    public partial class SeccompProfileV1\n    {\n        /// <summary>\n        ///     localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is \"Localhost\". Must NOT be set for any other type.\n        /// </summary>\n        [YamlMember(Alias = \"localhostProfile\")]\n        [JsonProperty(\"localhostProfile\", NullValueHandling = NullValueHandling.Ignore)]\n        public string LocalhostProfile { get; set; }\n\n        /// <summary>\n        ///     type indicates which kind of seccomp profile will be applied. Valid options are:\n        ///     \n        ///     Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SecretEnvSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SecretEnvSource selects a Secret to populate the environment variables with.\n    ///     \n    ///     The contents of the target Secret's Data field will represent the key-value pairs as environment variables.\n    /// </summary>\n    public partial class SecretEnvSourceV1\n    {\n        /// <summary>\n        ///     Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Specify whether the Secret must be defined\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SecretKeySelectorV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SecretKeySelector selects a key of a Secret.\n    /// </summary>\n    public partial class SecretKeySelectorV1\n    {\n        /// <summary>\n        ///     Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Specify whether the Secret or its key must be defined\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n\n        /// <summary>\n        ///     The key of the secret to select from.  Must be a valid secret key.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SecretListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SecretList is a list of Secret.\n    /// </summary>\n    [KubeListItem(\"Secret\", \"v1\")]\n    [KubeObject(\"SecretList\", \"v1\")]\n    public partial class SecretListV1 : KubeResourceListV1<SecretV1>\n    {\n        /// <summary>\n        ///     Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<SecretV1> Items { get; } = new List<SecretV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SecretProjectionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Adapts a secret into a projected volume.\n    ///     \n    ///     The contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.\n    /// </summary>\n    [KubeListItem(\"KeyToPath\", \"v1\")]\n    public partial class SecretProjectionV1\n    {\n        /// <summary>\n        ///     Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     optional field specify whether the Secret or its key must be defined\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n\n        /// <summary>\n        ///     items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n        /// </summary>\n        [YamlMember(Alias = \"items\")]\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<KeyToPathV1> Items { get; } = new List<KeyToPathV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Items\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeItems() => Items.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SecretReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace\n    /// </summary>\n    public partial class SecretReferenceV1\n    {\n        /// <summary>\n        ///     name is unique within a namespace to reference a secret resource.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     namespace defines the space within which the secret name must be unique.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SecretV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.\n    /// </summary>\n    [KubeObject(\"Secret\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/secrets\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/secrets\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/secrets\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/secrets\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/secrets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/secrets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/secrets/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/secrets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/secrets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/secrets\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/secrets/{name}\")]\n    public partial class SecretV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4\n        /// </summary>\n        [YamlMember(Alias = \"data\")]\n        [JsonProperty(\"data\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Data { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Data\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeData() => Data.Count > 0;\n\n        /// <summary>\n        ///     stringData allows specifying non-binary secret data in string form. It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API.\n        /// </summary>\n        [YamlMember(Alias = \"stringData\")]\n        [JsonProperty(\"stringData\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> StringData { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"StringData\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeStringData() => StringData.Count > 0;\n\n        /// <summary>\n        ///     Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.\n        /// </summary>\n        [YamlMember(Alias = \"immutable\")]\n        [JsonProperty(\"immutable\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Immutable { get; set; }\n\n        /// <summary>\n        ///     Used to facilitate programmatic handling of secret data. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SecretVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Adapts a Secret into a volume.\n    ///     \n    ///     The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.\n    /// </summary>\n    [KubeListItem(\"KeyToPath\", \"v1\")]\n    public partial class SecretVolumeSourceV1\n    {\n        /// <summary>\n        ///     defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\n        /// </summary>\n        [YamlMember(Alias = \"defaultMode\")]\n        [JsonProperty(\"defaultMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? DefaultMode { get; set; }\n\n        /// <summary>\n        ///     secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n        /// </summary>\n        [YamlMember(Alias = \"secretName\")]\n        [JsonProperty(\"secretName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SecretName { get; set; }\n\n        /// <summary>\n        ///     optional field specify whether the Secret or its keys must be defined\n        /// </summary>\n        [YamlMember(Alias = \"optional\")]\n        [JsonProperty(\"optional\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Optional { get; set; }\n\n        /// <summary>\n        ///     items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\n        /// </summary>\n        [YamlMember(Alias = \"items\")]\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<KeyToPathV1> Items { get; } = new List<KeyToPathV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Items\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeItems() => Items.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SecurityContextV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext.  When both are set, the values in SecurityContext take precedence.\n    /// </summary>\n    public partial class SecurityContextV1\n    {\n        /// <summary>\n        ///     Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"privileged\")]\n        [JsonProperty(\"privileged\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Privileged { get; set; }\n\n        /// <summary>\n        ///     appArmorProfile is the AppArmor options to use by this container. If set, this profile overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"appArmorProfile\")]\n        [JsonProperty(\"appArmorProfile\", NullValueHandling = NullValueHandling.Ignore)]\n        public AppArmorProfileV1 AppArmorProfile { get; set; }\n\n        /// <summary>\n        ///     The seccomp options to use by this container. If seccomp options are provided at both the pod &amp; container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"seccompProfile\")]\n        [JsonProperty(\"seccompProfile\", NullValueHandling = NullValueHandling.Ignore)]\n        public SeccompProfileV1 SeccompProfile { get; set; }\n\n        /// <summary>\n        ///     Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"readOnlyRootFilesystem\")]\n        [JsonProperty(\"readOnlyRootFilesystem\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnlyRootFilesystem { get; set; }\n\n        /// <summary>\n        ///     AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"allowPrivilegeEscalation\")]\n        [JsonProperty(\"allowPrivilegeEscalation\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AllowPrivilegeEscalation { get; set; }\n\n        /// <summary>\n        ///     The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"runAsGroup\")]\n        [JsonProperty(\"runAsGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? RunAsGroup { get; set; }\n\n        /// <summary>\n        ///     The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"runAsUser\")]\n        [JsonProperty(\"runAsUser\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? RunAsUser { get; set; }\n\n        /// <summary>\n        ///     The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"capabilities\")]\n        [JsonProperty(\"capabilities\", NullValueHandling = NullValueHandling.Ignore)]\n        public CapabilitiesV1 Capabilities { get; set; }\n\n        /// <summary>\n        ///     The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"seLinuxOptions\")]\n        [JsonProperty(\"seLinuxOptions\", NullValueHandling = NullValueHandling.Ignore)]\n        public SELinuxOptionsV1 SeLinuxOptions { get; set; }\n\n        /// <summary>\n        ///     The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\n        /// </summary>\n        [YamlMember(Alias = \"windowsOptions\")]\n        [JsonProperty(\"windowsOptions\", NullValueHandling = NullValueHandling.Ignore)]\n        public WindowsSecurityContextOptionsV1 WindowsOptions { get; set; }\n\n        /// <summary>\n        ///     procMount denotes the type of proc mount to use for the containers. The default value is Default which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\n        /// </summary>\n        [YamlMember(Alias = \"procMount\")]\n        [JsonProperty(\"procMount\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ProcMount { get; set; }\n\n        /// <summary>\n        ///     Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n        /// </summary>\n        [YamlMember(Alias = \"runAsNonRoot\")]\n        [JsonProperty(\"runAsNonRoot\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? RunAsNonRoot { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelectableFieldV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelectableField specifies the JSON path of a field that may be used with field selectors.\n    /// </summary>\n    public partial class SelectableFieldV1\n    {\n        /// <summary>\n        ///     jsonPath is a simple JSON path which is evaluated against each custom resource to produce a field selector value. Only JSON paths without the array notation are allowed. Must point to a field of type string, boolean or integer. Types with enum values and strings with formats are allowed. If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string. Must not point to metdata fields. Required.\n        /// </summary>\n        [YamlMember(Alias = \"jsonPath\")]\n        [JsonProperty(\"jsonPath\", NullValueHandling = NullValueHandling.Include)]\n        public string JsonPath { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectAccessReviewSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectAccessReviewSpec is a description of the access request.  Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set\n    /// </summary>\n    public partial class SelfSubjectAccessReviewSpecV1\n    {\n        /// <summary>\n        ///     NonResourceAttributes describes information for a non-resource access request\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceAttributes\")]\n        [JsonProperty(\"nonResourceAttributes\", NullValueHandling = NullValueHandling.Ignore)]\n        public NonResourceAttributesV1 NonResourceAttributes { get; set; }\n\n        /// <summary>\n        ///     ResourceAuthorizationAttributes describes information for a resource access request\n        /// </summary>\n        [YamlMember(Alias = \"resourceAttributes\")]\n        [JsonProperty(\"resourceAttributes\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceAttributesV1 ResourceAttributes { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectAccessReviewSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectAccessReviewSpec is a description of the access request.  Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set\n    /// </summary>\n    public partial class SelfSubjectAccessReviewSpecV1Beta1\n    {\n        /// <summary>\n        ///     NonResourceAttributes describes information for a non-resource access request\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceAttributes\")]\n        [JsonProperty(\"nonResourceAttributes\", NullValueHandling = NullValueHandling.Ignore)]\n        public NonResourceAttributesV1Beta1 NonResourceAttributes { get; set; }\n\n        /// <summary>\n        ///     ResourceAuthorizationAttributes describes information for a resource access request\n        /// </summary>\n        [YamlMember(Alias = \"resourceAttributes\")]\n        [JsonProperty(\"resourceAttributes\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceAttributesV1Beta1 ResourceAttributes { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectAccessReviewV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectAccessReview checks whether or the current user can perform an action.  Not filling in a spec.namespace means \"in all namespaces\".  Self is a special case, because users should always be able to check whether they can perform an action\n    /// </summary>\n    [KubeObject(\"SelfSubjectAccessReview\", \"authorization.k8s.io/v1\")]\n    [KubeApi(KubeAction.Create, \"apis/authorization.k8s.io/v1/selfsubjectaccessreviews\")]\n    public partial class SelfSubjectAccessReviewV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated.  user and groups must be empty\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public SelfSubjectAccessReviewSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates whether the request is allowed or not\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SubjectAccessReviewStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectAccessReviewV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectAccessReview checks whether or the current user can perform an action.  Not filling in a spec.namespace means \"in all namespaces\".  Self is a special case, because users should always be able to check whether they can perform an action\n    /// </summary>\n    [KubeObject(\"SelfSubjectAccessReview\", \"authorization.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.Create, \"apis/authorization.k8s.io/v1beta1/selfsubjectaccessreviews\")]\n    public partial class SelfSubjectAccessReviewV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated.  user and groups must be empty\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public SelfSubjectAccessReviewSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates whether the request is allowed or not\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SubjectAccessReviewStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectReviewStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectReviewStatus is filled by the kube-apiserver and sent back to a user.\n    /// </summary>\n    public partial class SelfSubjectReviewStatusV1\n    {\n        /// <summary>\n        ///     User attributes of the user making this request.\n        /// </summary>\n        [YamlMember(Alias = \"userInfo\")]\n        [JsonProperty(\"userInfo\", NullValueHandling = NullValueHandling.Ignore)]\n        public UserInfoV1 UserInfo { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectReviewStatusV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectReviewStatus is filled by the kube-apiserver and sent back to a user.\n    /// </summary>\n    public partial class SelfSubjectReviewStatusV1Alpha1\n    {\n        /// <summary>\n        ///     User attributes of the user making this request.\n        /// </summary>\n        [YamlMember(Alias = \"userInfo\")]\n        [JsonProperty(\"userInfo\", NullValueHandling = NullValueHandling.Ignore)]\n        public UserInfoV1 UserInfo { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectReviewStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectReviewStatus is filled by the kube-apiserver and sent back to a user.\n    /// </summary>\n    public partial class SelfSubjectReviewStatusV1Beta1\n    {\n        /// <summary>\n        ///     User attributes of the user making this request.\n        /// </summary>\n        [YamlMember(Alias = \"userInfo\")]\n        [JsonProperty(\"userInfo\", NullValueHandling = NullValueHandling.Ignore)]\n        public UserInfoV1 UserInfo { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectReviewV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated.  If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase.\n    /// </summary>\n    [KubeObject(\"SelfSubjectReview\", \"authentication.k8s.io/v1\")]\n    [KubeApi(KubeAction.Create, \"apis/authentication.k8s.io/v1/selfsubjectreviews\")]\n    public partial class SelfSubjectReviewV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Status is filled in by the server with the user attributes.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SelfSubjectReviewStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectReviewV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated.  If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase.\n    /// </summary>\n    [KubeObject(\"SelfSubjectReview\", \"authentication.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.Create, \"apis/authentication.k8s.io/v1alpha1/selfsubjectreviews\")]\n    public partial class SelfSubjectReviewV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Status is filled in by the server with the user attributes.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SelfSubjectReviewStatusV1Alpha1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectReviewV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated.  If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase.\n    /// </summary>\n    [KubeObject(\"SelfSubjectReview\", \"authentication.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.Create, \"apis/authentication.k8s.io/v1beta1/selfsubjectreviews\")]\n    public partial class SelfSubjectReviewV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Status is filled in by the server with the user attributes.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SelfSubjectReviewStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectRulesReviewSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectRulesReviewSpec defines the specification for SelfSubjectRulesReview.\n    /// </summary>\n    public partial class SelfSubjectRulesReviewSpecV1\n    {\n        /// <summary>\n        ///     Namespace to evaluate rules for. Required.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectRulesReviewSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class SelfSubjectRulesReviewSpecV1Beta1\n    {\n        /// <summary>\n        ///     Namespace to evaluate rules for. Required.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectRulesReviewV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server.\n    /// </summary>\n    [KubeObject(\"SelfSubjectRulesReview\", \"authorization.k8s.io/v1\")]\n    [KubeApi(KubeAction.Create, \"apis/authorization.k8s.io/v1/selfsubjectrulesreviews\")]\n    public partial class SelfSubjectRulesReviewV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public SelfSubjectRulesReviewSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates the set of actions a user can perform.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SubjectRulesReviewStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SelfSubjectRulesReviewV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server.\n    /// </summary>\n    [KubeObject(\"SelfSubjectRulesReview\", \"authorization.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.Create, \"apis/authorization.k8s.io/v1beta1/selfsubjectrulesreviews\")]\n    public partial class SelfSubjectRulesReviewV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public SelfSubjectRulesReviewSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates the set of actions a user can perform.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SubjectRulesReviewStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServerAddressByClientCIDRV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.\n    /// </summary>\n    public partial class ServerAddressByClientCIDRV1\n    {\n        /// <summary>\n        ///     The CIDR with which clients can match their IP to figure out the server address that they should use.\n        /// </summary>\n        [YamlMember(Alias = \"clientCIDR\")]\n        [JsonProperty(\"clientCIDR\", NullValueHandling = NullValueHandling.Include)]\n        public string ClientCIDR { get; set; }\n\n        /// <summary>\n        ///     Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port.\n        /// </summary>\n        [YamlMember(Alias = \"serverAddress\")]\n        [JsonProperty(\"serverAddress\", NullValueHandling = NullValueHandling.Include)]\n        public string ServerAddress { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServerStorageVersionV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     An API server instance reports the version it can decode and the version it encodes objects to when persisting objects in the backend.\n    /// </summary>\n    public partial class ServerStorageVersionV1Alpha1\n    {\n        /// <summary>\n        ///     The ID of the reporting API server.\n        /// </summary>\n        [YamlMember(Alias = \"apiServerID\")]\n        [JsonProperty(\"apiServerID\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiServerID { get; set; }\n\n        /// <summary>\n        ///     The API server encodes the object to this version when persisting it in the backend (e.g., etcd).\n        /// </summary>\n        [YamlMember(Alias = \"encodingVersion\")]\n        [JsonProperty(\"encodingVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string EncodingVersion { get; set; }\n\n        /// <summary>\n        ///     The API server can decode objects encoded in these versions. The encodingVersion must be included in the decodableVersions.\n        /// </summary>\n        [YamlMember(Alias = \"decodableVersions\")]\n        [JsonProperty(\"decodableVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> DecodableVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"DecodableVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeDecodableVersions() => DecodableVersions.Count > 0;\n\n        /// <summary>\n        ///     The API server can serve these versions. DecodableVersions must include all ServedVersions.\n        /// </summary>\n        [YamlMember(Alias = \"servedVersions\")]\n        [JsonProperty(\"servedVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ServedVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ServedVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeServedVersions() => ServedVersions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceAccountListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceAccountList is a list of ServiceAccount objects\n    /// </summary>\n    [KubeListItem(\"ServiceAccount\", \"v1\")]\n    [KubeObject(\"ServiceAccountList\", \"v1\")]\n    public partial class ServiceAccountListV1 : KubeResourceListV1<ServiceAccountV1>\n    {\n        /// <summary>\n        ///     List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ServiceAccountV1> Items { get; } = new List<ServiceAccountV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceAccountSubjectV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceAccountSubject holds detailed information for service-account-kind subject.\n    /// </summary>\n    public partial class ServiceAccountSubjectV1\n    {\n        /// <summary>\n        ///     `name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     `namespace` is the namespace of matching ServiceAccount objects. Required.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Include)]\n        public string Namespace { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceAccountSubjectV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceAccountSubject holds detailed information for service-account-kind subject.\n    /// </summary>\n    public partial class ServiceAccountSubjectV1Beta3\n    {\n        /// <summary>\n        ///     `name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     `namespace` is the namespace of matching ServiceAccount objects. Required.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Include)]\n        public string Namespace { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceAccountTokenProjectionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).\n    /// </summary>\n    public partial class ServiceAccountTokenProjectionV1\n    {\n        /// <summary>\n        ///     audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.\n        /// </summary>\n        [YamlMember(Alias = \"audience\")]\n        [JsonProperty(\"audience\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Audience { get; set; }\n\n        /// <summary>\n        ///     path is the path relative to the mount point of the file to project the token into.\n        /// </summary>\n        [YamlMember(Alias = \"path\")]\n        [JsonProperty(\"path\", NullValueHandling = NullValueHandling.Include)]\n        public string Path { get; set; }\n\n        /// <summary>\n        ///     expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.\n        /// </summary>\n        [YamlMember(Alias = \"expirationSeconds\")]\n        [JsonProperty(\"expirationSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ExpirationSeconds { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceAccountV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets\n    /// </summary>\n    [KubeObject(\"ServiceAccount\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/serviceaccounts\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/serviceaccounts\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/serviceaccounts\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/serviceaccounts\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/serviceaccounts/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/serviceaccounts/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/serviceaccounts/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/serviceaccounts/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/serviceaccounts\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/serviceaccounts\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}\")]\n    public partial class ServiceAccountV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.\n        /// </summary>\n        [YamlMember(Alias = \"automountServiceAccountToken\")]\n        [JsonProperty(\"automountServiceAccountToken\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AutomountServiceAccountToken { get; set; }\n\n        /// <summary>\n        ///     ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\n        /// </summary>\n        [YamlMember(Alias = \"imagePullSecrets\")]\n        [JsonProperty(\"imagePullSecrets\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<LocalObjectReferenceV1> ImagePullSecrets { get; } = new List<LocalObjectReferenceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ImagePullSecrets\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeImagePullSecrets() => ImagePullSecrets.Count > 0;\n\n        /// <summary>\n        ///     Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. Pods are only limited to this list if this service account has a \"kubernetes.io/enforce-mountable-secrets\" annotation set to \"true\". This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"secrets\")]\n        [JsonProperty(\"secrets\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ObjectReferenceV1> Secrets { get; } = new List<ObjectReferenceV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Secrets\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSecrets() => Secrets.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceBackendPortV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceBackendPort is the service port being referenced.\n    /// </summary>\n    public partial class ServiceBackendPortV1\n    {\n        /// <summary>\n        ///     name is the name of the port on the Service. This is a mutually exclusive setting with \"Number\".\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \"Name\".\n        /// </summary>\n        [YamlMember(Alias = \"number\")]\n        [JsonProperty(\"number\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Number { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceCIDRListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceCIDRList contains a list of ServiceCIDR objects.\n    /// </summary>\n    [KubeListItem(\"ServiceCIDR\", \"networking.k8s.io/v1beta1\")]\n    [KubeObject(\"ServiceCIDRList\", \"networking.k8s.io/v1beta1\")]\n    public partial class ServiceCIDRListV1Beta1 : KubeResourceListV1<ServiceCIDRV1Beta1>\n    {\n        /// <summary>\n        ///     items is the list of ServiceCIDRs.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ServiceCIDRV1Beta1> Items { get; } = new List<ServiceCIDRV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceCIDRSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.\n    /// </summary>\n    public partial class ServiceCIDRSpecV1Beta1\n    {\n        /// <summary>\n        ///     CIDRs defines the IP blocks in CIDR notation (e.g. \"192.168.0.0/24\" or \"2001:db8::/64\") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"cidrs\")]\n        [JsonProperty(\"cidrs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Cidrs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Cidrs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCidrs() => Cidrs.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceCIDRStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceCIDRStatus describes the current state of the ServiceCIDR.\n    /// </summary>\n    public partial class ServiceCIDRStatusV1Beta1\n    {\n        /// <summary>\n        ///     conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR. Current service state\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ConditionV1> Conditions { get; } = new List<ConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceCIDRV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects.\n    /// </summary>\n    [KubeObject(\"ServiceCIDR\", \"networking.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/networking.k8s.io/v1beta1/servicecidrs\")]\n    [KubeApi(KubeAction.Create, \"apis/networking.k8s.io/v1beta1/servicecidrs\")]\n    [KubeApi(KubeAction.Get, \"apis/networking.k8s.io/v1beta1/servicecidrs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/networking.k8s.io/v1beta1/servicecidrs/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/networking.k8s.io/v1beta1/servicecidrs/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/networking.k8s.io/v1beta1/servicecidrs/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/networking.k8s.io/v1beta1/watch/servicecidrs\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/networking.k8s.io/v1beta1/servicecidrs\")]\n    [KubeApi(KubeAction.Get, \"apis/networking.k8s.io/v1beta1/servicecidrs/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/networking.k8s.io/v1beta1/watch/servicecidrs/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/networking.k8s.io/v1beta1/servicecidrs/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/networking.k8s.io/v1beta1/servicecidrs/{name}/status\")]\n    public partial class ServiceCIDRV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec is the desired state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceCIDRSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     status represents the current state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceCIDRStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceList holds a list of services.\n    /// </summary>\n    [KubeListItem(\"Service\", \"v1\")]\n    [KubeObject(\"ServiceList\", \"v1\")]\n    public partial class ServiceListV1 : KubeResourceListV1<ServiceV1>\n    {\n        /// <summary>\n        ///     List of services\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ServiceV1> Items { get; } = new List<ServiceV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServicePortV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServicePort contains information on service's port.\n    /// </summary>\n    public partial class ServicePortV1\n    {\n        /// <summary>\n        ///     The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either:\n        ///     \n        ///     * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names).\n        ///     \n        ///     * Kubernetes-defined prefixed names:\n        ///       * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\n        ///       * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\n        ///       * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\n        ///     \n        ///     * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.\n        /// </summary>\n        [YamlMember(Alias = \"appProtocol\")]\n        [JsonProperty(\"appProtocol\", NullValueHandling = NullValueHandling.Ignore)]\n        public string AppProtocol { get; set; }\n\n        /// <summary>\n        ///     The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.\n        /// </summary>\n        [YamlMember(Alias = \"protocol\")]\n        [JsonProperty(\"protocol\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Protocol { get; set; }\n\n        /// <summary>\n        ///     The port on each node on which this service is exposed when type is NodePort or LoadBalancer.  Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail.  If not specified, a port will be allocated if this Service requires one.  If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\n        /// </summary>\n        [YamlMember(Alias = \"nodePort\")]\n        [JsonProperty(\"nodePort\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? NodePort { get; set; }\n\n        /// <summary>\n        ///     The port that will be exposed by this service.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Include)]\n        public int Port { get; set; }\n\n        /// <summary>\n        ///     Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\n        /// </summary>\n        [YamlMember(Alias = \"targetPort\")]\n        [JsonProperty(\"targetPort\", NullValueHandling = NullValueHandling.Ignore)]\n        public Int32OrStringV1 TargetPort { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceReference holds a reference to Service.legacy.k8s.io\n    /// </summary>\n    public partial class ServiceReferenceV1\n    {\n        /// <summary>\n        ///     Name is the name of the service\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace is the namespace of the service\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceReferenceV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceReference holds a reference to Service.legacy.k8s.io\n    /// </summary>\n    public partial class ServiceReferenceV1Beta1\n    {\n        /// <summary>\n        ///     Name is the name of the service\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace is the namespace of the service\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceSpec describes the attributes that a user creates on a service.\n    /// </summary>\n    public partial class ServiceSpecV1\n    {\n        /// <summary>\n        ///     clusterIP is the IP address of the service and is usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be blank) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above).  Valid values are \"None\", empty string (\"\"), or a valid IP address. Setting this to \"None\" makes a \"headless service\" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required.  Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n        /// </summary>\n        [YamlMember(Alias = \"clusterIP\")]\n        [JsonProperty(\"clusterIP\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ClusterIP { get; set; }\n\n        /// <summary>\n        ///     Only applies to Service Type: LoadBalancer. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature. Deprecated: This field was under-specified and its meaning varies across implementations. Using it is non-portable and it may not support dual-stack. Users are encouraged to use implementation-specific annotations when available.\n        /// </summary>\n        [YamlMember(Alias = \"loadBalancerIP\")]\n        [JsonProperty(\"loadBalancerIP\", NullValueHandling = NullValueHandling.Ignore)]\n        public string LoadBalancerIP { get; set; }\n\n        /// <summary>\n        ///     externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved.  Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be \"ExternalName\".\n        /// </summary>\n        [YamlMember(Alias = \"externalName\")]\n        [JsonProperty(\"externalName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ExternalName { get; set; }\n\n        /// <summary>\n        ///     type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \"ExternalName\" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     sessionAffinityConfig contains the configurations of session affinity.\n        /// </summary>\n        [YamlMember(Alias = \"sessionAffinityConfig\")]\n        [JsonProperty(\"sessionAffinityConfig\", NullValueHandling = NullValueHandling.Ignore)]\n        public SessionAffinityConfigV1 SessionAffinityConfig { get; set; }\n\n        /// <summary>\n        ///     TrafficDistribution offers a way to express preferences for how traffic is distributed to Service endpoints. Implementations can use this field as a hint, but are not required to guarantee strict adherence. If the field is not set, the implementation will apply its default routing strategy. If set to \"PreferClose\", implementations should prioritize endpoints that are topologically close (e.g., same zone). This is an alpha field and requires enabling ServiceTrafficDistribution feature.\n        /// </summary>\n        [YamlMember(Alias = \"trafficDistribution\")]\n        [JsonProperty(\"trafficDistribution\", NullValueHandling = NullValueHandling.Ignore)]\n        public string TrafficDistribution { get; set; }\n\n        /// <summary>\n        ///     Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Selector { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Selector\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSelector() => Selector.Count > 0;\n\n        /// <summary>\n        ///     allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer.  Default is \"true\". It may be set to \"false\" if the cluster load-balancer does not rely on NodePorts.  If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type.\n        /// </summary>\n        [YamlMember(Alias = \"allocateLoadBalancerNodePorts\")]\n        [JsonProperty(\"allocateLoadBalancerNodePorts\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AllocateLoadBalancerNodePorts { get; set; }\n\n        /// <summary>\n        ///     ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly.  If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above).  Valid values are \"None\", empty string (\"\"), or a valid IP address.  Setting this to \"None\" makes a \"headless service\" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required.  Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName.  If this field is not specified, it will be initialized from the clusterIP field.  If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value.\n        ///     \n        ///     This field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n        /// </summary>\n        [YamlMember(Alias = \"clusterIPs\")]\n        [JsonProperty(\"clusterIPs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ClusterIPs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ClusterIPs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeClusterIPs() => ClusterIPs.Count > 0;\n\n        /// <summary>\n        ///     externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service.  These IPs are not managed by Kubernetes.  The user is responsible for ensuring that traffic arrives at a node with this IP.  A common example is external load-balancers that are not part of the Kubernetes system.\n        /// </summary>\n        [YamlMember(Alias = \"externalIPs\")]\n        [JsonProperty(\"externalIPs\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ExternalIPs { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ExternalIPs\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExternalIPs() => ExternalIPs.Count > 0;\n\n        /// <summary>\n        ///     IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are \"IPv4\" and \"IPv6\".  This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to \"headless\" services. This field will be wiped when updating a Service to type ExternalName.\n        ///     \n        ///     This field may hold a maximum of two entries (dual-stack families, in either order).  These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\n        /// </summary>\n        [YamlMember(Alias = \"ipFamilies\")]\n        [JsonProperty(\"ipFamilies\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> IpFamilies { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"IpFamilies\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeIpFamilies() => IpFamilies.Count > 0;\n\n        /// <summary>\n        ///     loadBalancerClass is the class of the load balancer implementation this Service belongs to. If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. \"internal-vip\" or \"example.com/internal-vip\". Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\n        /// </summary>\n        [YamlMember(Alias = \"loadBalancerClass\")]\n        [JsonProperty(\"loadBalancerClass\", NullValueHandling = NullValueHandling.Ignore)]\n        public string LoadBalancerClass { get; set; }\n\n        /// <summary>\n        ///     If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\n        /// </summary>\n        [YamlMember(Alias = \"loadBalancerSourceRanges\")]\n        [JsonProperty(\"loadBalancerSourceRanges\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> LoadBalancerSourceRanges { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"LoadBalancerSourceRanges\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeLoadBalancerSourceRanges() => LoadBalancerSourceRanges.Count > 0;\n\n        /// <summary>\n        ///     The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n        /// </summary>\n        [MergeStrategy(Key = \"port\")]\n        [YamlMember(Alias = \"ports\")]\n        [JsonProperty(\"ports\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ServicePortV1> Ports { get; } = new List<ServicePortV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ports\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializePorts() => Ports.Count > 0;\n\n        /// <summary>\n        ///     publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered \"ready\" even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior.\n        /// </summary>\n        [YamlMember(Alias = \"publishNotReadyAddresses\")]\n        [JsonProperty(\"publishNotReadyAddresses\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? PublishNotReadyAddresses { get; set; }\n\n        /// <summary>\n        ///     healthCheckNodePort specifies the healthcheck nodePort for the service. This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used.  If not specified, a value will be automatically allocated.  External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not.  If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type). This field cannot be updated once set.\n        /// </summary>\n        [YamlMember(Alias = \"healthCheckNodePort\")]\n        [JsonProperty(\"healthCheckNodePort\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? HealthCheckNodePort { get; set; }\n\n        /// <summary>\n        ///     externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's \"externally-facing\" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). If set to \"Local\", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get \"Cluster\" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node.\n        /// </summary>\n        [YamlMember(Alias = \"externalTrafficPolicy\")]\n        [JsonProperty(\"externalTrafficPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ExternalTrafficPolicy { get; set; }\n\n        /// <summary>\n        ///     InternalTrafficPolicy describes how nodes distribute service traffic they receive on the ClusterIP. If set to \"Local\", the proxy will assume that pods only want to talk to endpoints of the service on the same node as the pod, dropping the traffic if there are no local endpoints. The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features).\n        /// </summary>\n        [YamlMember(Alias = \"internalTrafficPolicy\")]\n        [JsonProperty(\"internalTrafficPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string InternalTrafficPolicy { get; set; }\n\n        /// <summary>\n        ///     IPFamilyPolicy represents the dual-stack-ness requested or required by this Service. If there is no value provided, then this field will be set to SingleStack. Services can be \"SingleStack\" (a single IP family), \"PreferDualStack\" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or \"RequireDualStack\" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName.\n        /// </summary>\n        [YamlMember(Alias = \"ipFamilyPolicy\")]\n        [JsonProperty(\"ipFamilyPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string IpFamilyPolicy { get; set; }\n\n        /// <summary>\n        ///     Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n        /// </summary>\n        [YamlMember(Alias = \"sessionAffinity\")]\n        [JsonProperty(\"sessionAffinity\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SessionAffinity { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ServiceStatus represents the current status of a service.\n    /// </summary>\n    public partial class ServiceStatusV1\n    {\n        /// <summary>\n        ///     LoadBalancer contains the current status of the load-balancer, if one is present.\n        /// </summary>\n        [YamlMember(Alias = \"loadBalancer\")]\n        [JsonProperty(\"loadBalancer\", NullValueHandling = NullValueHandling.Ignore)]\n        public LoadBalancerStatusV1 LoadBalancer { get; set; }\n\n        /// <summary>\n        ///     Current service state\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ConditionV1> Conditions { get; } = new List<ConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ServiceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.\n    /// </summary>\n    [KubeObject(\"Service\", \"v1\")]\n    [KubeApi(KubeAction.List, \"api/v1/services\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/services\")]\n    [KubeApi(KubeAction.List, \"api/v1/namespaces/{namespace}/services\")]\n    [KubeApi(KubeAction.Create, \"api/v1/namespaces/{namespace}/services\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/services/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/services/{name}\")]\n    [KubeApi(KubeAction.Delete, \"api/v1/namespaces/{namespace}/services/{name}\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/services/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"api/v1/watch/namespaces/{namespace}/services\")]\n    [KubeApi(KubeAction.DeleteCollection, \"api/v1/namespaces/{namespace}/services\")]\n    [KubeApi(KubeAction.Get, \"api/v1/namespaces/{namespace}/services/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"api/v1/watch/namespaces/{namespace}/services/{name}\")]\n    [KubeApi(KubeAction.Patch, \"api/v1/namespaces/{namespace}/services/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"api/v1/namespaces/{namespace}/services/{name}/status\")]\n    public partial class ServiceV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Most recently observed status of the service. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SessionAffinityConfigV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SessionAffinityConfig represents the configurations of session affinity.\n    /// </summary>\n    public partial class SessionAffinityConfigV1\n    {\n        /// <summary>\n        ///     clientIP contains the configurations of Client IP based session affinity.\n        /// </summary>\n        [YamlMember(Alias = \"clientIP\")]\n        [JsonProperty(\"clientIP\", NullValueHandling = NullValueHandling.Ignore)]\n        public ClientIPConfigV1 ClientIP { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SleepActionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SleepAction describes a \"sleep\" action.\n    /// </summary>\n    public partial class SleepActionV1\n    {\n        /// <summary>\n        ///     Seconds is the number of seconds to sleep.\n        /// </summary>\n        [YamlMember(Alias = \"seconds\")]\n        [JsonProperty(\"seconds\", NullValueHandling = NullValueHandling.Include)]\n        public long Seconds { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetConditionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetCondition describes the state of a statefulset at a certain point.\n    /// </summary>\n    public partial class StatefulSetConditionV1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of statefulset condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetConditionV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetCondition describes the state of a statefulset at a certain point.\n    /// </summary>\n    public partial class StatefulSetConditionV1Beta1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of statefulset condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetConditionV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetCondition describes the state of a statefulset at a certain point.\n    /// </summary>\n    public partial class StatefulSetConditionV1Beta2\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of statefulset condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetList is a collection of StatefulSets.\n    /// </summary>\n    [KubeListItem(\"StatefulSet\", \"apps/v1\")]\n    [KubeObject(\"StatefulSetList\", \"apps/v1\")]\n    public partial class StatefulSetListV1 : KubeResourceListV1<StatefulSetV1>\n    {\n        /// <summary>\n        ///     Items is the list of stateful sets.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<StatefulSetV1> Items { get; } = new List<StatefulSetV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetList is a collection of StatefulSets.\n    /// </summary>\n    [KubeListItem(\"StatefulSet\", \"apps/v1beta1\")]\n    [KubeObject(\"StatefulSetList\", \"apps/v1beta1\")]\n    public partial class StatefulSetListV1Beta1 : KubeResourceListV1<StatefulSetV1Beta1>\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<StatefulSetV1Beta1> Items { get; } = new List<StatefulSetV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetListV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetList is a collection of StatefulSets.\n    /// </summary>\n    [KubeListItem(\"StatefulSet\", \"apps/v1beta2\")]\n    [KubeObject(\"StatefulSetList\", \"apps/v1beta2\")]\n    public partial class StatefulSetListV1Beta2 : KubeResourceListV1<StatefulSetV1Beta2>\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<StatefulSetV1Beta2> Items { get; } = new List<StatefulSetV1Beta2>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetOrdinalsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.\n    /// </summary>\n    public partial class StatefulSetOrdinalsV1\n    {\n        /// <summary>\n        ///     start is the number representing the first replica's index. It may be used to number replicas from an alternate index (eg: 1-indexed) over the default 0-indexed names, or to orchestrate progressive movement of replicas from one StatefulSet to another. If set, replica indices will be in the range:\n        ///       [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas).\n        ///     If unset, defaults to 0. Replica indices will be in the range:\n        ///       [0, .spec.replicas).\n        /// </summary>\n        [YamlMember(Alias = \"start\")]\n        [JsonProperty(\"start\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Start { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetPersistentVolumeClaimRetentionPolicyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.\n    /// </summary>\n    public partial class StatefulSetPersistentVolumeClaimRetentionPolicyV1\n    {\n        /// <summary>\n        ///     WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted.\n        /// </summary>\n        [YamlMember(Alias = \"whenDeleted\")]\n        [JsonProperty(\"whenDeleted\", NullValueHandling = NullValueHandling.Ignore)]\n        public string WhenDeleted { get; set; }\n\n        /// <summary>\n        ///     WhenScaled specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is scaled down. The default policy of `Retain` causes PVCs to not be affected by a scaledown. The `Delete` policy causes the associated PVCs for any excess pods above the replica count to be deleted.\n        /// </summary>\n        [YamlMember(Alias = \"whenScaled\")]\n        [JsonProperty(\"whenScaled\", NullValueHandling = NullValueHandling.Ignore)]\n        public string WhenScaled { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A StatefulSetSpec is the specification of a StatefulSet.\n    /// </summary>\n    public partial class StatefulSetSpecV1\n    {\n        /// <summary>\n        ///     serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.\n        /// </summary>\n        [YamlMember(Alias = \"serviceName\")]\n        [JsonProperty(\"serviceName\", NullValueHandling = NullValueHandling.Include)]\n        public string ServiceName { get; set; }\n\n        /// <summary>\n        ///     template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet. Each pod will be named with the format &lt;statefulsetname&gt;-&lt;podindex&gt;. For example, a pod in a StatefulSet named \"web\" with index number \"3\" would be named \"web-3\". The only allowed template.spec.restartPolicy value is \"Always\".\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     selector is a label query over pods that should match the replica count. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\n        /// </summary>\n        [YamlMember(Alias = \"minReadySeconds\")]\n        [JsonProperty(\"minReadySeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinReadySeconds { get; set; }\n\n        /// <summary>\n        ///     ordinals controls the numbering of replica indices in a StatefulSet. The default ordinals behavior assigns a \"0\" index to the first replica and increments the index by one for each additional replica requested.\n        /// </summary>\n        [YamlMember(Alias = \"ordinals\")]\n        [JsonProperty(\"ordinals\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetOrdinalsV1 Ordinals { get; set; }\n\n        /// <summary>\n        ///     replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n        /// </summary>\n        [YamlMember(Alias = \"volumeClaimTemplates\")]\n        [JsonProperty(\"volumeClaimTemplates\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PersistentVolumeClaimV1> VolumeClaimTemplates { get; } = new List<PersistentVolumeClaimV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeClaimTemplates\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeClaimTemplates() => VolumeClaimTemplates.Count > 0;\n\n        /// <summary>\n        ///     revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is beta.\n        /// </summary>\n        [YamlMember(Alias = \"persistentVolumeClaimRetentionPolicy\")]\n        [JsonProperty(\"persistentVolumeClaimRetentionPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetPersistentVolumeClaimRetentionPolicyV1 PersistentVolumeClaimRetentionPolicy { get; set; }\n\n        /// <summary>\n        ///     podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.\n        /// </summary>\n        [YamlMember(Alias = \"podManagementPolicy\")]\n        [JsonProperty(\"podManagementPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PodManagementPolicy { get; set; }\n\n        /// <summary>\n        ///     updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.\n        /// </summary>\n        [YamlMember(Alias = \"updateStrategy\")]\n        [JsonProperty(\"updateStrategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetUpdateStrategyV1 UpdateStrategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A StatefulSetSpec is the specification of a StatefulSet.\n    /// </summary>\n    public partial class StatefulSetSpecV1Beta1\n    {\n        /// <summary>\n        ///     serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.\n        /// </summary>\n        [YamlMember(Alias = \"serviceName\")]\n        [JsonProperty(\"serviceName\", NullValueHandling = NullValueHandling.Include)]\n        public string ServiceName { get; set; }\n\n        /// <summary>\n        ///     template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     selector is a label query over pods that should match the replica count. If empty, defaulted to labels on the pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n        /// </summary>\n        [YamlMember(Alias = \"volumeClaimTemplates\")]\n        [JsonProperty(\"volumeClaimTemplates\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PersistentVolumeClaimV1> VolumeClaimTemplates { get; } = new List<PersistentVolumeClaimV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeClaimTemplates\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeClaimTemplates() => VolumeClaimTemplates.Count > 0;\n\n        /// <summary>\n        ///     revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.\n        /// </summary>\n        [YamlMember(Alias = \"podManagementPolicy\")]\n        [JsonProperty(\"podManagementPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PodManagementPolicy { get; set; }\n\n        /// <summary>\n        ///     updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.\n        /// </summary>\n        [YamlMember(Alias = \"updateStrategy\")]\n        [JsonProperty(\"updateStrategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetUpdateStrategyV1Beta1 UpdateStrategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetSpecV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A StatefulSetSpec is the specification of a StatefulSet.\n    /// </summary>\n    public partial class StatefulSetSpecV1Beta2\n    {\n        /// <summary>\n        ///     serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.\n        /// </summary>\n        [YamlMember(Alias = \"serviceName\")]\n        [JsonProperty(\"serviceName\", NullValueHandling = NullValueHandling.Include)]\n        public string ServiceName { get; set; }\n\n        /// <summary>\n        ///     template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.\n        /// </summary>\n        [YamlMember(Alias = \"template\")]\n        [JsonProperty(\"template\", NullValueHandling = NullValueHandling.Include)]\n        public PodTemplateSpecV1 Template { get; set; }\n\n        /// <summary>\n        ///     selector is a label query over pods that should match the replica count. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\n        /// </summary>\n        [YamlMember(Alias = \"selector\")]\n        [JsonProperty(\"selector\", NullValueHandling = NullValueHandling.Include)]\n        public LabelSelectorV1 Selector { get; set; }\n\n        /// <summary>\n        ///     replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Replicas { get; set; }\n\n        /// <summary>\n        ///     volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\n        /// </summary>\n        [YamlMember(Alias = \"volumeClaimTemplates\")]\n        [JsonProperty(\"volumeClaimTemplates\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<PersistentVolumeClaimV1> VolumeClaimTemplates { get; } = new List<PersistentVolumeClaimV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"VolumeClaimTemplates\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVolumeClaimTemplates() => VolumeClaimTemplates.Count > 0;\n\n        /// <summary>\n        ///     revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.\n        /// </summary>\n        [YamlMember(Alias = \"revisionHistoryLimit\")]\n        [JsonProperty(\"revisionHistoryLimit\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RevisionHistoryLimit { get; set; }\n\n        /// <summary>\n        ///     podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.\n        /// </summary>\n        [YamlMember(Alias = \"podManagementPolicy\")]\n        [JsonProperty(\"podManagementPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PodManagementPolicy { get; set; }\n\n        /// <summary>\n        ///     updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.\n        /// </summary>\n        [YamlMember(Alias = \"updateStrategy\")]\n        [JsonProperty(\"updateStrategy\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetUpdateStrategyV1Beta2 UpdateStrategy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetStatus represents the current state of a StatefulSet.\n    /// </summary>\n    public partial class StatefulSetStatusV1\n    {\n        /// <summary>\n        ///     currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).\n        /// </summary>\n        [YamlMember(Alias = \"currentRevision\")]\n        [JsonProperty(\"currentRevision\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CurrentRevision { get; set; }\n\n        /// <summary>\n        ///     observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)\n        /// </summary>\n        [YamlMember(Alias = \"updateRevision\")]\n        [JsonProperty(\"updateRevision\", NullValueHandling = NullValueHandling.Ignore)]\n        public string UpdateRevision { get; set; }\n\n        /// <summary>\n        ///     Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset.\n        /// </summary>\n        [YamlMember(Alias = \"availableReplicas\")]\n        [JsonProperty(\"availableReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? AvailableReplicas { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a statefulset's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<StatefulSetConditionV1> Conditions { get; } = new List<StatefulSetConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.\n        /// </summary>\n        [YamlMember(Alias = \"currentReplicas\")]\n        [JsonProperty(\"currentReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CurrentReplicas { get; set; }\n\n        /// <summary>\n        ///     readyReplicas is the number of pods created for this StatefulSet with a Ready Condition.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     replicas is the number of Pods created by the StatefulSet controller.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n\n        /// <summary>\n        ///     updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.\n        /// </summary>\n        [YamlMember(Alias = \"updatedReplicas\")]\n        [JsonProperty(\"updatedReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedReplicas { get; set; }\n\n        /// <summary>\n        ///     collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetStatus represents the current state of a StatefulSet.\n    /// </summary>\n    public partial class StatefulSetStatusV1Beta1\n    {\n        /// <summary>\n        ///     currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).\n        /// </summary>\n        [YamlMember(Alias = \"currentRevision\")]\n        [JsonProperty(\"currentRevision\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CurrentRevision { get; set; }\n\n        /// <summary>\n        ///     observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)\n        /// </summary>\n        [YamlMember(Alias = \"updateRevision\")]\n        [JsonProperty(\"updateRevision\", NullValueHandling = NullValueHandling.Ignore)]\n        public string UpdateRevision { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a statefulset's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<StatefulSetConditionV1Beta1> Conditions { get; } = new List<StatefulSetConditionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.\n        /// </summary>\n        [YamlMember(Alias = \"currentReplicas\")]\n        [JsonProperty(\"currentReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CurrentReplicas { get; set; }\n\n        /// <summary>\n        ///     readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     replicas is the number of Pods created by the StatefulSet controller.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n\n        /// <summary>\n        ///     updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.\n        /// </summary>\n        [YamlMember(Alias = \"updatedReplicas\")]\n        [JsonProperty(\"updatedReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedReplicas { get; set; }\n\n        /// <summary>\n        ///     collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetStatusV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetStatus represents the current state of a StatefulSet.\n    /// </summary>\n    public partial class StatefulSetStatusV1Beta2\n    {\n        /// <summary>\n        ///     currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).\n        /// </summary>\n        [YamlMember(Alias = \"currentRevision\")]\n        [JsonProperty(\"currentRevision\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CurrentRevision { get; set; }\n\n        /// <summary>\n        ///     observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)\n        /// </summary>\n        [YamlMember(Alias = \"updateRevision\")]\n        [JsonProperty(\"updateRevision\", NullValueHandling = NullValueHandling.Ignore)]\n        public string UpdateRevision { get; set; }\n\n        /// <summary>\n        ///     Represents the latest available observations of a statefulset's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<StatefulSetConditionV1Beta2> Conditions { get; } = new List<StatefulSetConditionV1Beta2>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.\n        /// </summary>\n        [YamlMember(Alias = \"currentReplicas\")]\n        [JsonProperty(\"currentReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CurrentReplicas { get; set; }\n\n        /// <summary>\n        ///     readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.\n        /// </summary>\n        [YamlMember(Alias = \"readyReplicas\")]\n        [JsonProperty(\"readyReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? ReadyReplicas { get; set; }\n\n        /// <summary>\n        ///     replicas is the number of Pods created by the StatefulSet controller.\n        /// </summary>\n        [YamlMember(Alias = \"replicas\")]\n        [JsonProperty(\"replicas\", NullValueHandling = NullValueHandling.Include)]\n        public int Replicas { get; set; }\n\n        /// <summary>\n        ///     updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.\n        /// </summary>\n        [YamlMember(Alias = \"updatedReplicas\")]\n        [JsonProperty(\"updatedReplicas\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? UpdatedReplicas { get; set; }\n\n        /// <summary>\n        ///     collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.\n        /// </summary>\n        [YamlMember(Alias = \"collisionCount\")]\n        [JsonProperty(\"collisionCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? CollisionCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetUpdateStrategyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.\n    /// </summary>\n    public partial class StatefulSetUpdateStrategyV1\n    {\n        /// <summary>\n        ///     RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateStatefulSetStrategyV1 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetUpdateStrategyV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.\n    /// </summary>\n    public partial class StatefulSetUpdateStrategyV1Beta1\n    {\n        /// <summary>\n        ///     RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateStatefulSetStrategyV1Beta1 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type indicates the type of the StatefulSetUpdateStrategy.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetUpdateStrategyV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.\n    /// </summary>\n    public partial class StatefulSetUpdateStrategyV1Beta2\n    {\n        /// <summary>\n        ///     RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.\n        /// </summary>\n        [YamlMember(Alias = \"rollingUpdate\")]\n        [JsonProperty(\"rollingUpdate\", NullValueHandling = NullValueHandling.Ignore)]\n        public RollingUpdateStatefulSetStrategyV1Beta2 RollingUpdate { get; set; }\n\n        /// <summary>\n        ///     Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Type { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n    ///       - Network: A single stable DNS and hostname.\n    ///       - Storage: As many VolumeClaims as requested.\n    ///     \n    ///     The StatefulSet guarantees that a given network identity will always map to the same storage identity.\n    /// </summary>\n    [KubeObject(\"StatefulSet\", \"apps/v1\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/statefulsets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/statefulsets\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1/watch/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1/watch/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status\")]\n    public partial class StatefulSetV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the desired identities of pods in this set.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of StatefulSet is deprecated by apps/v1beta2/StatefulSet. See the release notes for more information. StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n    ///      - Network: A single stable DNS and hostname.\n    ///      - Storage: As many VolumeClaims as requested.\n    ///     The StatefulSet guarantees that a given network identity will always map to the same storage identity.\n    /// </summary>\n    [KubeObject(\"StatefulSet\", \"apps/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta1/statefulsets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta1/watch/statefulsets\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta1/watch/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1beta1/watch/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/status\")]\n    public partial class StatefulSetV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the desired identities of pods in this set.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatefulSetV1Beta2.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     DEPRECATED - This group version of StatefulSet is deprecated by apps/v1/StatefulSet. See the release notes for more information. StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n    ///      - Network: A single stable DNS and hostname.\n    ///      - Storage: As many VolumeClaims as requested.\n    ///     The StatefulSet guarantees that a given network identity will always map to the same storage identity.\n    /// </summary>\n    [KubeObject(\"StatefulSet\", \"apps/v1beta2\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/statefulsets\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/statefulsets\")]\n    [KubeApi(KubeAction.List, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Create, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/apps/v1beta2/watch/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets\")]\n    [KubeApi(KubeAction.Get, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/apps/v1beta2/watch/namespaces/{namespace}/statefulsets/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}/status\")]\n    public partial class StatefulSetV1Beta2 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec defines the desired identities of pods in this set.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetSpecV1Beta2 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatefulSetStatusV1Beta2 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatusCauseV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.\n    /// </summary>\n    public partial class StatusCauseV1\n    {\n        /// <summary>\n        ///     The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed.  Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n        ///     \n        ///     Examples:\n        ///       \"name\" - the field \"name\" on the current resource\n        ///       \"items[0].name\" - the field \"name\" on the first array entry in \"items\"\n        /// </summary>\n        [YamlMember(Alias = \"field\")]\n        [JsonProperty(\"field\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Field { get; set; }\n\n        /// <summary>\n        ///     A human-readable description of the cause of the error.  This field may be presented as-is to a reader.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     A machine-readable description of the cause of the error. If this value is empty there is no information available.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatusDetailsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.\n    /// </summary>\n    public partial class StatusDetailsV1\n    {\n        /// <summary>\n        ///     The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     UID of the resource. (when there is a single resource which can be described). More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The group attribute of the resource associated with the status StatusReason.\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Group { get; set; }\n\n        /// <summary>\n        ///     The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\n        /// </summary>\n        [YamlMember(Alias = \"causes\")]\n        [JsonProperty(\"causes\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<StatusCauseV1> Causes { get; } = new List<StatusCauseV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Causes\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeCauses() => Causes.Count > 0;\n\n        /// <summary>\n        ///     If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.\n        /// </summary>\n        [YamlMember(Alias = \"retryAfterSeconds\")]\n        [JsonProperty(\"retryAfterSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? RetryAfterSeconds { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Status is a return value for calls that don't return other objects.\n    /// </summary>\n    [KubeObject(\"Status\", \"v1\")]\n    public partial class StatusV1 : KubeResourceListV1\n    {\n        /// <summary>\n        ///     Suggested HTTP return code for this status, 0 if not set.\n        /// </summary>\n        [YamlMember(Alias = \"code\")]\n        [JsonProperty(\"code\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Code { get; set; }\n\n        /// <summary>\n        ///     A human-readable description of the status of this operation.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Extended data associated with the reason.  Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.\n        /// </summary>\n        [YamlMember(Alias = \"details\")]\n        [JsonProperty(\"details\", NullValueHandling = NullValueHandling.Ignore)]\n        public StatusDetailsV1 Details { get; set; }\n\n        /// <summary>\n        ///     Status of the operation. One of: \"Success\" or \"Failure\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageClassListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StorageClassList is a collection of storage classes.\n    /// </summary>\n    [KubeListItem(\"StorageClass\", \"storage.k8s.io/v1\")]\n    [KubeObject(\"StorageClassList\", \"storage.k8s.io/v1\")]\n    public partial class StorageClassListV1 : KubeResourceListV1<StorageClassV1>\n    {\n        /// <summary>\n        ///     items is the list of StorageClasses\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<StorageClassV1> Items { get; } = new List<StorageClassV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageClassListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StorageClassList is a collection of storage classes.\n    /// </summary>\n    [KubeListItem(\"StorageClass\", \"storage.k8s.io/v1beta1\")]\n    [KubeObject(\"StorageClassList\", \"storage.k8s.io/v1beta1\")]\n    public partial class StorageClassListV1Beta1 : KubeResourceListV1<StorageClassV1Beta1>\n    {\n        /// <summary>\n        ///     Items is the list of StorageClasses\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<StorageClassV1Beta1> Items { get; } = new List<StorageClassV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageClassV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n    ///     \n    ///     StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.\n    /// </summary>\n    [KubeObject(\"StorageClass\", \"storage.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1/storageclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1/storageclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1/storageclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1/storageclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1/storageclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1/storageclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1/watch/storageclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1/storageclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1/watch/storageclasses/{name}\")]\n    public partial class StorageClassV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     volumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound.  When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature.\n        /// </summary>\n        [YamlMember(Alias = \"volumeBindingMode\")]\n        [JsonProperty(\"volumeBindingMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeBindingMode { get; set; }\n\n        /// <summary>\n        ///     allowVolumeExpansion shows whether the storage class allow volume expand.\n        /// </summary>\n        [YamlMember(Alias = \"allowVolumeExpansion\")]\n        [JsonProperty(\"allowVolumeExpansion\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AllowVolumeExpansion { get; set; }\n\n        /// <summary>\n        ///     provisioner indicates the type of the provisioner.\n        /// </summary>\n        [YamlMember(Alias = \"provisioner\")]\n        [JsonProperty(\"provisioner\", NullValueHandling = NullValueHandling.Include)]\n        public string Provisioner { get; set; }\n\n        /// <summary>\n        ///     allowedTopologies restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.\n        /// </summary>\n        [YamlMember(Alias = \"allowedTopologies\")]\n        [JsonProperty(\"allowedTopologies\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<TopologySelectorTermV1> AllowedTopologies { get; } = new List<TopologySelectorTermV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllowedTopologies\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllowedTopologies() => AllowedTopologies.Count > 0;\n\n        /// <summary>\n        ///     mountOptions controls the mountOptions for dynamically provisioned PersistentVolumes of this storage class. e.g. [\"ro\", \"soft\"]. Not validated - mount of the PVs will simply fail if one is invalid.\n        /// </summary>\n        [YamlMember(Alias = \"mountOptions\")]\n        [JsonProperty(\"mountOptions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> MountOptions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MountOptions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMountOptions() => MountOptions.Count > 0;\n\n        /// <summary>\n        ///     parameters holds the parameters for the provisioner that should create volumes of this storage class.\n        /// </summary>\n        [YamlMember(Alias = \"parameters\")]\n        [JsonProperty(\"parameters\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Parameters { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Parameters\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeParameters() => Parameters.Count > 0;\n\n        /// <summary>\n        ///     reclaimPolicy controls the reclaimPolicy for dynamically provisioned PersistentVolumes of this storage class. Defaults to Delete.\n        /// </summary>\n        [YamlMember(Alias = \"reclaimPolicy\")]\n        [JsonProperty(\"reclaimPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ReclaimPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageClassV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n    ///     \n    ///     StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.\n    /// </summary>\n    [KubeObject(\"StorageClass\", \"storage.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1beta1/storageclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1beta1/storageclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1beta1/storageclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1beta1/storageclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1beta1/storageclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1beta1/storageclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1beta1/watch/storageclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1beta1/storageclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1beta1/watch/storageclasses/{name}\")]\n    public partial class StorageClassV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     VolumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound.  When unset, VolumeBindingImmediate is used. This field is alpha-level and is only honored by servers that enable the VolumeScheduling feature.\n        /// </summary>\n        [YamlMember(Alias = \"volumeBindingMode\")]\n        [JsonProperty(\"volumeBindingMode\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeBindingMode { get; set; }\n\n        /// <summary>\n        ///     AllowVolumeExpansion shows whether the storage class allow volume expand\n        /// </summary>\n        [YamlMember(Alias = \"allowVolumeExpansion\")]\n        [JsonProperty(\"allowVolumeExpansion\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? AllowVolumeExpansion { get; set; }\n\n        /// <summary>\n        ///     Provisioner indicates the type of the provisioner.\n        /// </summary>\n        [YamlMember(Alias = \"provisioner\")]\n        [JsonProperty(\"provisioner\", NullValueHandling = NullValueHandling.Include)]\n        public string Provisioner { get; set; }\n\n        /// <summary>\n        ///     Restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is alpha-level and is only honored by servers that enable the DynamicProvisioningScheduling feature.\n        /// </summary>\n        [YamlMember(Alias = \"allowedTopologies\")]\n        [JsonProperty(\"allowedTopologies\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<TopologySelectorTermV1> AllowedTopologies { get; } = new List<TopologySelectorTermV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AllowedTopologies\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAllowedTopologies() => AllowedTopologies.Count > 0;\n\n        /// <summary>\n        ///     Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. [\"ro\", \"soft\"]. Not validated - mount of the PVs will simply fail if one is invalid.\n        /// </summary>\n        [YamlMember(Alias = \"mountOptions\")]\n        [JsonProperty(\"mountOptions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> MountOptions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MountOptions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMountOptions() => MountOptions.Count > 0;\n\n        /// <summary>\n        ///     Parameters holds the parameters for the provisioner that should create volumes of this storage class.\n        /// </summary>\n        [YamlMember(Alias = \"parameters\")]\n        [JsonProperty(\"parameters\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Parameters { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Parameters\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeParameters() => Parameters.Count > 0;\n\n        /// <summary>\n        ///     Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.\n        /// </summary>\n        [YamlMember(Alias = \"reclaimPolicy\")]\n        [JsonProperty(\"reclaimPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ReclaimPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageOSPersistentVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a StorageOS persistent volume resource.\n    /// </summary>\n    public partial class StorageOSPersistentVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     volumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace.\n        /// </summary>\n        [YamlMember(Alias = \"volumeName\")]\n        [JsonProperty(\"volumeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeName { get; set; }\n\n        /// <summary>\n        ///     volumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.\n        /// </summary>\n        [YamlMember(Alias = \"volumeNamespace\")]\n        [JsonProperty(\"volumeNamespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeNamespace { get; set; }\n\n        /// <summary>\n        ///     secretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted.\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ObjectReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageOSVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a StorageOS persistent volume resource.\n    /// </summary>\n    public partial class StorageOSVolumeSourceV1\n    {\n        /// <summary>\n        ///     fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     volumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace.\n        /// </summary>\n        [YamlMember(Alias = \"volumeName\")]\n        [JsonProperty(\"volumeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeName { get; set; }\n\n        /// <summary>\n        ///     volumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.\n        /// </summary>\n        [YamlMember(Alias = \"volumeNamespace\")]\n        [JsonProperty(\"volumeNamespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string VolumeNamespace { get; set; }\n\n        /// <summary>\n        ///     secretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted.\n        /// </summary>\n        [YamlMember(Alias = \"secretRef\")]\n        [JsonProperty(\"secretRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public LocalObjectReferenceV1 SecretRef { get; set; }\n\n        /// <summary>\n        ///     readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionConditionV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Describes the state of the storageVersion at a certain point.\n    /// </summary>\n    public partial class StorageVersionConditionV1Alpha1\n    {\n        /// <summary>\n        ///     Last time the condition transitioned from one status to another.\n        /// </summary>\n        [YamlMember(Alias = \"lastTransitionTime\")]\n        [JsonProperty(\"lastTransitionTime\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? LastTransitionTime { get; set; }\n\n        /// <summary>\n        ///     A human readable message indicating details about the transition.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Include)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Type of the condition.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     If set, this represents the .metadata.generation that the condition was set based upon.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     The reason for the condition's last transition.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Include)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     Status of the condition, one of True, False, Unknown.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public string Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A list of StorageVersions.\n    /// </summary>\n    [KubeListItem(\"StorageVersion\", \"internal.apiserver.k8s.io/v1alpha1\")]\n    [KubeObject(\"StorageVersionList\", \"internal.apiserver.k8s.io/v1alpha1\")]\n    public partial class StorageVersionListV1Alpha1 : KubeResourceListV1<StorageVersionV1Alpha1>\n    {\n        /// <summary>\n        ///     Items holds a list of StorageVersion\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<StorageVersionV1Alpha1> Items { get; } = new List<StorageVersionV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionMigrationListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StorageVersionMigrationList is a collection of storage version migrations.\n    /// </summary>\n    [KubeListItem(\"StorageVersionMigration\", \"storagemigration.k8s.io/v1alpha1\")]\n    [KubeObject(\"StorageVersionMigrationList\", \"storagemigration.k8s.io/v1alpha1\")]\n    public partial class StorageVersionMigrationListV1Alpha1 : KubeResourceListV1<StorageVersionMigrationV1Alpha1>\n    {\n        /// <summary>\n        ///     Items is the list of StorageVersionMigration\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<StorageVersionMigrationV1Alpha1> Items { get; } = new List<StorageVersionMigrationV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionMigrationSpecV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Spec of the storage version migration.\n    /// </summary>\n    public partial class StorageVersionMigrationSpecV1Alpha1\n    {\n        /// <summary>\n        ///     The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.\n        /// </summary>\n        [YamlMember(Alias = \"resource\")]\n        [JsonProperty(\"resource\", NullValueHandling = NullValueHandling.Include)]\n        public GroupVersionResourceV1Alpha1 Resource { get; set; }\n\n        /// <summary>\n        ///     The token used in the list options to get the next chunk of objects to migrate. When the .status.conditions indicates the migration is \"Running\", users can use this token to check the progress of the migration.\n        /// </summary>\n        [YamlMember(Alias = \"continueToken\")]\n        [JsonProperty(\"continueToken\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ContinueToken { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionMigrationStatusV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Status of the storage version migration.\n    /// </summary>\n    public partial class StorageVersionMigrationStatusV1Alpha1\n    {\n        /// <summary>\n        ///     ResourceVersion to compare with the GC cache for performing the migration. This is the current resource version of given group, version and resource when kube-controller-manager first observes this StorageVersionMigration resource.\n        /// </summary>\n        [YamlMember(Alias = \"resourceVersion\")]\n        [JsonProperty(\"resourceVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ResourceVersion { get; set; }\n\n        /// <summary>\n        ///     The latest available observations of the migration's current state.\n        /// </summary>\n        [MergeStrategy(Key = \"type\")]\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MigrationConditionV1Alpha1> Conditions { get; } = new List<MigrationConditionV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionMigrationV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StorageVersionMigration represents a migration of stored data to the latest storage version.\n    /// </summary>\n    [KubeObject(\"StorageVersionMigration\", \"storagemigration.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations\")]\n    [KubeApi(KubeAction.Create, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations\")]\n    [KubeApi(KubeAction.Get, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storagemigration.k8s.io/v1alpha1/watch/storageversionmigrations\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations\")]\n    [KubeApi(KubeAction.Get, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/storagemigration.k8s.io/v1alpha1/watch/storageversionmigrations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}/status\")]\n    public partial class StorageVersionMigrationV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the migration.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public StorageVersionMigrationSpecV1Alpha1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status of the migration.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public StorageVersionMigrationStatusV1Alpha1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionSpecV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     StorageVersionSpec is an empty spec.\n    /// </summary>\n    public partial class StorageVersionSpecV1Alpha1\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionStatusV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     API server instances report the versions they can decode and the version they encode objects to when persisting objects in the backend.\n    /// </summary>\n    public partial class StorageVersionStatusV1Alpha1\n    {\n        /// <summary>\n        ///     If all API server instances agree on the same encoding storage version, then this field is set to that version. Otherwise this field is left empty. API servers should finish updating its storageVersionStatus entry before serving write operations, so that this field will be in sync with the reality.\n        /// </summary>\n        [YamlMember(Alias = \"commonEncodingVersion\")]\n        [JsonProperty(\"commonEncodingVersion\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CommonEncodingVersion { get; set; }\n\n        /// <summary>\n        ///     The latest available observations of the storageVersion's state.\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<StorageVersionConditionV1Alpha1> Conditions { get; } = new List<StorageVersionConditionV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n\n        /// <summary>\n        ///     The reported versions per API server instance.\n        /// </summary>\n        [YamlMember(Alias = \"storageVersions\")]\n        [JsonProperty(\"storageVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ServerStorageVersionV1Alpha1> StorageVersions { get; } = new List<ServerStorageVersionV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"StorageVersions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeStorageVersions() => StorageVersions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/StorageVersionV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Storage version of a specific resource.\n    /// </summary>\n    [KubeObject(\"StorageVersion\", \"internal.apiserver.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions\")]\n    [KubeApi(KubeAction.Create, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions\")]\n    [KubeApi(KubeAction.Get, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/internal.apiserver.k8s.io/v1alpha1/watch/storageversions\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions\")]\n    [KubeApi(KubeAction.Get, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/internal.apiserver.k8s.io/v1alpha1/watch/storageversions/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}/status\")]\n    public partial class StorageVersionV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec is an empty spec. It is here to comply with Kubernetes API style.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public StorageVersionSpecV1Alpha1 Spec { get; set; }\n\n        /// <summary>\n        ///     API server instances report the version they can decode and the version they encode objects to when persisting objects in the backend.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Include)]\n        public StorageVersionStatusV1Alpha1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectAccessReviewSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SubjectAccessReviewSpec is a description of the access request.  Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set\n    /// </summary>\n    public partial class SubjectAccessReviewSpecV1\n    {\n        /// <summary>\n        ///     Extra corresponds to the user.Info.GetExtra() method from the authenticator.  Since that is input to the authorizer it needs a reflection here.\n        /// </summary>\n        [YamlMember(Alias = \"extra\")]\n        [JsonProperty(\"extra\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, List<string>> Extra { get; } = new Dictionary<string, List<string>>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Extra\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExtra() => Extra.Count > 0;\n\n        /// <summary>\n        ///     UID information about the requesting user.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     User is the user you're testing for. If you specify \"User\" but not \"Groups\", then is it interpreted as \"What if User were not a member of any groups\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public string User { get; set; }\n\n        /// <summary>\n        ///     Groups is the groups you're testing for.\n        /// </summary>\n        [YamlMember(Alias = \"groups\")]\n        [JsonProperty(\"groups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Groups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Groups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeGroups() => Groups.Count > 0;\n\n        /// <summary>\n        ///     NonResourceAttributes describes information for a non-resource access request\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceAttributes\")]\n        [JsonProperty(\"nonResourceAttributes\", NullValueHandling = NullValueHandling.Ignore)]\n        public NonResourceAttributesV1 NonResourceAttributes { get; set; }\n\n        /// <summary>\n        ///     ResourceAuthorizationAttributes describes information for a resource access request\n        /// </summary>\n        [YamlMember(Alias = \"resourceAttributes\")]\n        [JsonProperty(\"resourceAttributes\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceAttributesV1 ResourceAttributes { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectAccessReviewSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SubjectAccessReviewSpec is a description of the access request.  Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set\n    /// </summary>\n    public partial class SubjectAccessReviewSpecV1Beta1\n    {\n        /// <summary>\n        ///     Extra corresponds to the user.Info.GetExtra() method from the authenticator.  Since that is input to the authorizer it needs a reflection here.\n        /// </summary>\n        [YamlMember(Alias = \"extra\")]\n        [JsonProperty(\"extra\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, List<string>> Extra { get; } = new Dictionary<string, List<string>>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Extra\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExtra() => Extra.Count > 0;\n\n        /// <summary>\n        ///     UID information about the requesting user.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     Groups is the groups you're testing for.\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Group { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Group\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeGroup() => Group.Count > 0;\n\n        /// <summary>\n        ///     User is the user you're testing for. If you specify \"User\" but not \"Group\", then is it interpreted as \"What if User were not a member of any groups\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public string User { get; set; }\n\n        /// <summary>\n        ///     NonResourceAttributes describes information for a non-resource access request\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceAttributes\")]\n        [JsonProperty(\"nonResourceAttributes\", NullValueHandling = NullValueHandling.Ignore)]\n        public NonResourceAttributesV1Beta1 NonResourceAttributes { get; set; }\n\n        /// <summary>\n        ///     ResourceAuthorizationAttributes describes information for a resource access request\n        /// </summary>\n        [YamlMember(Alias = \"resourceAttributes\")]\n        [JsonProperty(\"resourceAttributes\", NullValueHandling = NullValueHandling.Ignore)]\n        public ResourceAttributesV1Beta1 ResourceAttributes { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectAccessReviewStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SubjectAccessReviewStatus\n    /// </summary>\n    public partial class SubjectAccessReviewStatusV1\n    {\n        /// <summary>\n        ///     Allowed is required. True if the action would be allowed, false otherwise.\n        /// </summary>\n        [YamlMember(Alias = \"allowed\")]\n        [JsonProperty(\"allowed\", NullValueHandling = NullValueHandling.Include)]\n        public bool Allowed { get; set; }\n\n        /// <summary>\n        ///     Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true.\n        /// </summary>\n        [YamlMember(Alias = \"denied\")]\n        [JsonProperty(\"denied\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Denied { get; set; }\n\n        /// <summary>\n        ///     Reason is optional.  It indicates why a request was allowed or denied.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.\n        /// </summary>\n        [YamlMember(Alias = \"evaluationError\")]\n        [JsonProperty(\"evaluationError\", NullValueHandling = NullValueHandling.Ignore)]\n        public string EvaluationError { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectAccessReviewStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SubjectAccessReviewStatus\n    /// </summary>\n    public partial class SubjectAccessReviewStatusV1Beta1\n    {\n        /// <summary>\n        ///     Allowed is required. True if the action would be allowed, false otherwise.\n        /// </summary>\n        [YamlMember(Alias = \"allowed\")]\n        [JsonProperty(\"allowed\", NullValueHandling = NullValueHandling.Include)]\n        public bool Allowed { get; set; }\n\n        /// <summary>\n        ///     Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true.\n        /// </summary>\n        [YamlMember(Alias = \"denied\")]\n        [JsonProperty(\"denied\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Denied { get; set; }\n\n        /// <summary>\n        ///     Reason is optional.  It indicates why a request was allowed or denied.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n\n        /// <summary>\n        ///     EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.\n        /// </summary>\n        [YamlMember(Alias = \"evaluationError\")]\n        [JsonProperty(\"evaluationError\", NullValueHandling = NullValueHandling.Ignore)]\n        public string EvaluationError { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectAccessReviewV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SubjectAccessReview checks whether or not a user or group can perform an action.\n    /// </summary>\n    [KubeObject(\"SubjectAccessReview\", \"authorization.k8s.io/v1\")]\n    [KubeApi(KubeAction.Create, \"apis/authorization.k8s.io/v1/subjectaccessreviews\")]\n    public partial class SubjectAccessReviewV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public SubjectAccessReviewSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates whether the request is allowed or not\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SubjectAccessReviewStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectAccessReviewV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SubjectAccessReview checks whether or not a user or group can perform an action.\n    /// </summary>\n    [KubeObject(\"SubjectAccessReview\", \"authorization.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.Create, \"apis/authorization.k8s.io/v1beta1/subjectaccessreviews\")]\n    public partial class SubjectAccessReviewV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public SubjectAccessReviewSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates whether the request is allowed or not\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public SubjectAccessReviewStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectRulesReviewStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete.\n    /// </summary>\n    public partial class SubjectRulesReviewStatusV1\n    {\n        /// <summary>\n        ///     Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.\n        /// </summary>\n        [YamlMember(Alias = \"incomplete\")]\n        [JsonProperty(\"incomplete\", NullValueHandling = NullValueHandling.Include)]\n        public bool Incomplete { get; set; }\n\n        /// <summary>\n        ///     EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.\n        /// </summary>\n        [YamlMember(Alias = \"evaluationError\")]\n        [JsonProperty(\"evaluationError\", NullValueHandling = NullValueHandling.Ignore)]\n        public string EvaluationError { get; set; }\n\n        /// <summary>\n        ///     NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceRules\")]\n        [JsonProperty(\"nonResourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NonResourceRuleV1> NonResourceRules { get; } = new List<NonResourceRuleV1>();\n\n        /// <summary>\n        ///     ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n        /// </summary>\n        [YamlMember(Alias = \"resourceRules\")]\n        [JsonProperty(\"resourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourceRuleV1> ResourceRules { get; } = new List<ResourceRuleV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectRulesReviewStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete.\n    /// </summary>\n    public partial class SubjectRulesReviewStatusV1Beta1\n    {\n        /// <summary>\n        ///     Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.\n        /// </summary>\n        [YamlMember(Alias = \"incomplete\")]\n        [JsonProperty(\"incomplete\", NullValueHandling = NullValueHandling.Include)]\n        public bool Incomplete { get; set; }\n\n        /// <summary>\n        ///     EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.\n        /// </summary>\n        [YamlMember(Alias = \"evaluationError\")]\n        [JsonProperty(\"evaluationError\", NullValueHandling = NullValueHandling.Ignore)]\n        public string EvaluationError { get; set; }\n\n        /// <summary>\n        ///     NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n        /// </summary>\n        [YamlMember(Alias = \"nonResourceRules\")]\n        [JsonProperty(\"nonResourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<NonResourceRuleV1Beta1> NonResourceRules { get; } = new List<NonResourceRuleV1Beta1>();\n\n        /// <summary>\n        ///     ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\n        /// </summary>\n        [YamlMember(Alias = \"resourceRules\")]\n        [JsonProperty(\"resourceRules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ResourceRuleV1Beta1> ResourceRules { get; } = new List<ResourceRuleV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Subject contains a reference to the object or user identities a role binding applies to.  This can either hold a direct API object reference, or a value for non-objects such as user and group names.\n    /// </summary>\n    public partial class SubjectV1\n    {\n        /// <summary>\n        ///     Kind of object being referenced. Values defined by this API group are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized the kind value, the Authorizer should report an error.\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     Name of the object being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace of the referenced object.  If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     APIGroup holds the API group of the referenced subject. Defaults to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\" for User and Group subjects.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Subject contains a reference to the object or user identities a role binding applies to.  This can either hold a direct API object reference, or a value for non-objects such as user and group names.\n    /// </summary>\n    public partial class SubjectV1Alpha1 : KubeObjectV1\n    {\n        /// <summary>\n        ///     Name of the object being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace of the referenced object.  If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Subject contains a reference to the object or user identities a role binding applies to.  This can either hold a direct API object reference, or a value for non-objects such as user and group names.\n    /// </summary>\n    public partial class SubjectV1Beta1\n    {\n        /// <summary>\n        ///     Kind of object being referenced. Values defined by this API group are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized the kind value, the Authorizer should report an error.\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     Name of the object being referenced.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace of the referenced object.  If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     APIGroup holds the API group of the referenced subject. Defaults to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\" for User and Group subjects.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SubjectV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Subject matches the originator of a request, as identified by the request authentication system. There are three ways of matching an originator; by user, group, or service account.\n    /// </summary>\n    public partial class SubjectV1Beta3\n    {\n        /// <summary>\n        ///     `kind` indicates which one of the other fields is non-empty. Required\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     `group` matches based on user group name.\n        /// </summary>\n        [YamlMember(Alias = \"group\")]\n        [JsonProperty(\"group\", NullValueHandling = NullValueHandling.Ignore)]\n        public GroupSubjectV1Beta3 Group { get; set; }\n\n        /// <summary>\n        ///     `user` matches based on username.\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public UserSubjectV1Beta3 User { get; set; }\n\n        /// <summary>\n        ///     `serviceAccount` matches ServiceAccounts.\n        /// </summary>\n        [YamlMember(Alias = \"serviceAccount\")]\n        [JsonProperty(\"serviceAccount\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceAccountSubjectV1Beta3 ServiceAccount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SuccessPolicyRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SuccessPolicyRule describes rule for declaring a Job as succeeded. Each rule must have at least one of the \"succeededIndexes\" or \"succeededCount\" specified.\n    /// </summary>\n    public partial class SuccessPolicyRuleV1\n    {\n        /// <summary>\n        ///     succeededIndexes specifies the set of indexes which need to be contained in the actual set of the succeeded indexes for the Job. The list of indexes must be within 0 to \".spec.completions-1\" and must not contain duplicates. At least one element is required. The indexes are represented as intervals separated by commas. The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen. The number are listed in represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as \"1,3-5,7\". When this field is null, this field doesn't default to any value and is never evaluated at any time.\n        /// </summary>\n        [YamlMember(Alias = \"succeededIndexes\")]\n        [JsonProperty(\"succeededIndexes\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SucceededIndexes { get; set; }\n\n        /// <summary>\n        ///     succeededCount specifies the minimal required size of the actual set of the succeeded indexes for the Job. When succeededCount is used along with succeededIndexes, the check is constrained only to the set of indexes specified by succeededIndexes. For example, given that succeededIndexes is \"1-4\", succeededCount is \"3\", and completed indexes are \"1\", \"3\", and \"5\", the Job isn't declared as succeeded because only \"1\" and \"3\" indexes are considered in that rules. When this field is null, this doesn't default to any value and is never evaluated at any time. When specified it needs to be a positive integer.\n        /// </summary>\n        [YamlMember(Alias = \"succeededCount\")]\n        [JsonProperty(\"succeededCount\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? SucceededCount { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SuccessPolicyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes.\n    /// </summary>\n    public partial class SuccessPolicyV1\n    {\n        /// <summary>\n        ///     rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded &gt;= .spec.completions`. Once any of the rules are met, the \"SucceededCriteriaMet\" condition is added, and the lingering pods are removed. The terminal state for such a Job has the \"Complete\" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are allowed.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<SuccessPolicyRuleV1> Rules { get; } = new List<SuccessPolicyRuleV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SupplementalGroupsStrategyOptionsV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. Deprecated: use SupplementalGroupsStrategyOptions from policy API Group instead.\n    /// </summary>\n    public partial class SupplementalGroupsStrategyOptionsV1Beta1\n    {\n        /// <summary>\n        ///     rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.\n        /// </summary>\n        [YamlMember(Alias = \"rule\")]\n        [JsonProperty(\"rule\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Rule { get; set; }\n\n        /// <summary>\n        ///     ranges are the allowed ranges of supplemental groups.  If you would like to force a single supplemental group then supply a single range with the same start and end. Required for MustRunAs.\n        /// </summary>\n        [YamlMember(Alias = \"ranges\")]\n        [JsonProperty(\"ranges\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<IDRangeV1Beta1> Ranges { get; } = new List<IDRangeV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Ranges\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRanges() => Ranges.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/SysctlV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Sysctl defines a kernel parameter to be set\n    /// </summary>\n    public partial class SysctlV1\n    {\n        /// <summary>\n        ///     Name of a property to set\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Value of a property to set\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Include)]\n        public string Value { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TCPSocketActionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TCPSocketAction describes an action based on opening a socket\n    /// </summary>\n    public partial class TCPSocketActionV1\n    {\n        /// <summary>\n        ///     Optional: Host name to connect to, defaults to the pod IP.\n        /// </summary>\n        [YamlMember(Alias = \"host\")]\n        [JsonProperty(\"host\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Host { get; set; }\n\n        /// <summary>\n        ///     Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n        /// </summary>\n        [YamlMember(Alias = \"port\")]\n        [JsonProperty(\"port\", NullValueHandling = NullValueHandling.Include)]\n        public Int32OrStringV1 Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TaintV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The node this Taint is attached to has the \"effect\" on any pod that does not tolerate the Taint.\n    /// </summary>\n    public partial class TaintV1\n    {\n        /// <summary>\n        ///     TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.\n        /// </summary>\n        [YamlMember(Alias = \"timeAdded\")]\n        [JsonProperty(\"timeAdded\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? TimeAdded { get; set; }\n\n        /// <summary>\n        ///     The taint value corresponding to the taint key.\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Value { get; set; }\n\n        /// <summary>\n        ///     Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.\n        /// </summary>\n        [YamlMember(Alias = \"effect\")]\n        [JsonProperty(\"effect\", NullValueHandling = NullValueHandling.Include)]\n        public string Effect { get; set; }\n\n        /// <summary>\n        ///     Required. The taint key to be applied to a node.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenRequestSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenRequestSpec contains client provided parameters of a token request.\n    /// </summary>\n    public partial class TokenRequestSpecV1\n    {\n        /// <summary>\n        ///     BoundObjectRef is a reference to an object that the token will be bound to. The token will only be valid for as long as the bound object exists. NOTE: The API server's TokenReview endpoint will validate the BoundObjectRef, but other audiences may not. Keep ExpirationSeconds small if you want prompt revocation.\n        /// </summary>\n        [YamlMember(Alias = \"boundObjectRef\")]\n        [JsonProperty(\"boundObjectRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public BoundObjectReferenceV1 BoundObjectRef { get; set; }\n\n        /// <summary>\n        ///     Audiences are the intendend audiences of the token. A recipient of a token must identify themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences.\n        /// </summary>\n        [YamlMember(Alias = \"audiences\")]\n        [JsonProperty(\"audiences\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Audiences { get; } = new List<string>();\n\n        /// <summary>\n        ///     ExpirationSeconds is the requested duration of validity of the request. The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response.\n        /// </summary>\n        [YamlMember(Alias = \"expirationSeconds\")]\n        [JsonProperty(\"expirationSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ExpirationSeconds { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenRequestStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenRequestStatus is the result of a token request.\n    /// </summary>\n    public partial class TokenRequestStatusV1\n    {\n        /// <summary>\n        ///     Token is the opaque bearer token.\n        /// </summary>\n        [YamlMember(Alias = \"token\")]\n        [JsonProperty(\"token\", NullValueHandling = NullValueHandling.Include)]\n        public string Token { get; set; }\n\n        /// <summary>\n        ///     ExpirationTimestamp is the time of expiration of the returned token.\n        /// </summary>\n        [YamlMember(Alias = \"expirationTimestamp\")]\n        [JsonProperty(\"expirationTimestamp\", NullValueHandling = NullValueHandling.Include)]\n        public DateTime? ExpirationTimestamp { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenRequestV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenRequest contains parameters of a service account token.\n    /// </summary>\n    public partial class TokenRequestV1\n    {\n        /// <summary>\n        ///     audience is the intended audience of the token in \"TokenRequestSpec\". It will default to the audiences of kube apiserver.\n        /// </summary>\n        [YamlMember(Alias = \"audience\")]\n        [JsonProperty(\"audience\", NullValueHandling = NullValueHandling.Include)]\n        public string Audience { get; set; }\n\n        /// <summary>\n        ///     expirationSeconds is the duration of validity of the token in \"TokenRequestSpec\". It has the same default value of \"ExpirationSeconds\" in \"TokenRequestSpec\".\n        /// </summary>\n        [YamlMember(Alias = \"expirationSeconds\")]\n        [JsonProperty(\"expirationSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ExpirationSeconds { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenReviewSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenReviewSpec is a description of the token authentication request.\n    /// </summary>\n    public partial class TokenReviewSpecV1\n    {\n        /// <summary>\n        ///     Token is the opaque bearer token.\n        /// </summary>\n        [YamlMember(Alias = \"token\")]\n        [JsonProperty(\"token\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Token { get; set; }\n\n        /// <summary>\n        ///     Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\n        /// </summary>\n        [YamlMember(Alias = \"audiences\")]\n        [JsonProperty(\"audiences\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Audiences { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Audiences\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAudiences() => Audiences.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenReviewSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenReviewSpec is a description of the token authentication request.\n    /// </summary>\n    public partial class TokenReviewSpecV1Beta1\n    {\n        /// <summary>\n        ///     Token is the opaque bearer token.\n        /// </summary>\n        [YamlMember(Alias = \"token\")]\n        [JsonProperty(\"token\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Token { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenReviewStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenReviewStatus is the result of the token authentication request.\n    /// </summary>\n    public partial class TokenReviewStatusV1\n    {\n        /// <summary>\n        ///     Authenticated indicates that the token was associated with a known user.\n        /// </summary>\n        [YamlMember(Alias = \"authenticated\")]\n        [JsonProperty(\"authenticated\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Authenticated { get; set; }\n\n        /// <summary>\n        ///     Error indicates that the token couldn't be checked\n        /// </summary>\n        [YamlMember(Alias = \"error\")]\n        [JsonProperty(\"error\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Error { get; set; }\n\n        /// <summary>\n        ///     User is the UserInfo associated with the provided token.\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public UserInfoV1 User { get; set; }\n\n        /// <summary>\n        ///     Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is \"true\", the token is valid against the audience of the Kubernetes API server.\n        /// </summary>\n        [YamlMember(Alias = \"audiences\")]\n        [JsonProperty(\"audiences\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Audiences { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Audiences\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAudiences() => Audiences.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenReviewStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenReviewStatus is the result of the token authentication request.\n    /// </summary>\n    public partial class TokenReviewStatusV1Beta1\n    {\n        /// <summary>\n        ///     Authenticated indicates that the token was associated with a known user.\n        /// </summary>\n        [YamlMember(Alias = \"authenticated\")]\n        [JsonProperty(\"authenticated\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? Authenticated { get; set; }\n\n        /// <summary>\n        ///     Error indicates that the token couldn't be checked\n        /// </summary>\n        [YamlMember(Alias = \"error\")]\n        [JsonProperty(\"error\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Error { get; set; }\n\n        /// <summary>\n        ///     User is the UserInfo associated with the provided token.\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        [JsonProperty(\"user\", NullValueHandling = NullValueHandling.Ignore)]\n        public UserInfoV1Beta1 User { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenReviewV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.\n    /// </summary>\n    [KubeObject(\"TokenReview\", \"authentication.k8s.io/v1\")]\n    [KubeApi(KubeAction.Create, \"apis/authentication.k8s.io/v1/tokenreviews\")]\n    public partial class TokenReviewV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public TokenReviewSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates whether the request can be authenticated.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public TokenReviewStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TokenReviewV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.\n    /// </summary>\n    [KubeObject(\"TokenReview\", \"authentication.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.Create, \"apis/authentication.k8s.io/v1beta1/tokenreviews\")]\n    public partial class TokenReviewV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Spec holds information about the request being evaluated\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public TokenReviewSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status is filled in by the server and indicates whether the request can be authenticated.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public TokenReviewStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TolerationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The pod this Toleration is attached to tolerates any taint that matches the triple &lt;key,value,effect&gt; using the matching operator &lt;operator&gt;.\n    /// </summary>\n    public partial class TolerationV1\n    {\n        /// <summary>\n        ///     Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\n        /// </summary>\n        [YamlMember(Alias = \"value\")]\n        [JsonProperty(\"value\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Value { get; set; }\n\n        /// <summary>\n        ///     Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n        /// </summary>\n        [YamlMember(Alias = \"operator\")]\n        [JsonProperty(\"operator\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Operator { get; set; }\n\n        /// <summary>\n        ///     TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\n        /// </summary>\n        [YamlMember(Alias = \"tolerationSeconds\")]\n        [JsonProperty(\"tolerationSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? TolerationSeconds { get; set; }\n\n        /// <summary>\n        ///     Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n        /// </summary>\n        [YamlMember(Alias = \"effect\")]\n        [JsonProperty(\"effect\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Effect { get; set; }\n\n        /// <summary>\n        ///     Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TopologySelectorLabelRequirementV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A topology selector requirement is a selector that matches given label. This is an alpha feature and may change in the future.\n    /// </summary>\n    public partial class TopologySelectorLabelRequirementV1\n    {\n        /// <summary>\n        ///     An array of string values. One value must match the label to be selected. Each entry in Values is ORed.\n        /// </summary>\n        [YamlMember(Alias = \"values\")]\n        [JsonProperty(\"values\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Values { get; } = new List<string>();\n\n        /// <summary>\n        ///     The label key that the selector applies to.\n        /// </summary>\n        [YamlMember(Alias = \"key\")]\n        [JsonProperty(\"key\", NullValueHandling = NullValueHandling.Include)]\n        public string Key { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TopologySelectorTermV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     A topology selector term represents the result of label queries. A null or empty topology selector term matches no objects. The requirements of them are ANDed. It provides a subset of functionality as NodeSelectorTerm. This is an alpha feature and may change in the future.\n    /// </summary>\n    public partial class TopologySelectorTermV1\n    {\n        /// <summary>\n        ///     A list of topology selector requirements by labels.\n        /// </summary>\n        [YamlMember(Alias = \"matchLabelExpressions\")]\n        [JsonProperty(\"matchLabelExpressions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<TopologySelectorLabelRequirementV1> MatchLabelExpressions { get; } = new List<TopologySelectorLabelRequirementV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchLabelExpressions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchLabelExpressions() => MatchLabelExpressions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TopologySpreadConstraintV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TopologySpreadConstraint specifies how to spread matching pods among the given topology.\n    /// </summary>\n    public partial class TopologySpreadConstraintV1\n    {\n        /// <summary>\n        ///     WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n        ///       but giving higher precedence to topologies that would help reduce the\n        ///       skew.\n        ///     A constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.\n        /// </summary>\n        [YamlMember(Alias = \"whenUnsatisfiable\")]\n        [JsonProperty(\"whenUnsatisfiable\", NullValueHandling = NullValueHandling.Include)]\n        public string WhenUnsatisfiable { get; set; }\n\n        /// <summary>\n        ///     LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\n        /// </summary>\n        [YamlMember(Alias = \"labelSelector\")]\n        [JsonProperty(\"labelSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 LabelSelector { get; set; }\n\n        /// <summary>\n        ///     MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.\n        ///     \n        ///     This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\n        /// </summary>\n        [YamlMember(Alias = \"matchLabelKeys\")]\n        [JsonProperty(\"matchLabelKeys\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> MatchLabelKeys { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchLabelKeys\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchLabelKeys() => MatchLabelKeys.Count > 0;\n\n        /// <summary>\n        ///     MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n        ///     \n        ///     For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew.\n        /// </summary>\n        [YamlMember(Alias = \"minDomains\")]\n        [JsonProperty(\"minDomains\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? MinDomains { get; set; }\n\n        /// <summary>\n        ///     MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.\n        /// </summary>\n        [YamlMember(Alias = \"maxSkew\")]\n        [JsonProperty(\"maxSkew\", NullValueHandling = NullValueHandling.Include)]\n        public int MaxSkew { get; set; }\n\n        /// <summary>\n        ///     NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n        ///     \n        ///     If this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\n        /// </summary>\n        [YamlMember(Alias = \"nodeAffinityPolicy\")]\n        [JsonProperty(\"nodeAffinityPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string NodeAffinityPolicy { get; set; }\n\n        /// <summary>\n        ///     NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included.\n        ///     \n        ///     If this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\n        /// </summary>\n        [YamlMember(Alias = \"nodeTaintsPolicy\")]\n        [JsonProperty(\"nodeTaintsPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string NodeTaintsPolicy { get; set; }\n\n        /// <summary>\n        ///     TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each &lt;key, value&gt; as a \"bucket\", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology. And, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology. It's a required field.\n        /// </summary>\n        [YamlMember(Alias = \"topologyKey\")]\n        [JsonProperty(\"topologyKey\", NullValueHandling = NullValueHandling.Include)]\n        public string TopologyKey { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TypeCheckingV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TypeChecking contains results of type checking the expressions in the ValidatingAdmissionPolicy\n    /// </summary>\n    public partial class TypeCheckingV1\n    {\n        /// <summary>\n        ///     The type checking warnings for each expression.\n        /// </summary>\n        [YamlMember(Alias = \"expressionWarnings\")]\n        [JsonProperty(\"expressionWarnings\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ExpressionWarningV1> ExpressionWarnings { get; } = new List<ExpressionWarningV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ExpressionWarnings\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExpressionWarnings() => ExpressionWarnings.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TypeCheckingV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TypeChecking contains results of type checking the expressions in the ValidatingAdmissionPolicy\n    /// </summary>\n    public partial class TypeCheckingV1Alpha1\n    {\n        /// <summary>\n        ///     The type checking warnings for each expression.\n        /// </summary>\n        [YamlMember(Alias = \"expressionWarnings\")]\n        [JsonProperty(\"expressionWarnings\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ExpressionWarningV1Alpha1> ExpressionWarnings { get; } = new List<ExpressionWarningV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ExpressionWarnings\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExpressionWarnings() => ExpressionWarnings.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TypeCheckingV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TypeChecking contains results of type checking the expressions in the ValidatingAdmissionPolicy\n    /// </summary>\n    public partial class TypeCheckingV1Beta1\n    {\n        /// <summary>\n        ///     The type checking warnings for each expression.\n        /// </summary>\n        [YamlMember(Alias = \"expressionWarnings\")]\n        [JsonProperty(\"expressionWarnings\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ExpressionWarningV1Beta1> ExpressionWarnings { get; } = new List<ExpressionWarningV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ExpressionWarnings\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExpressionWarnings() => ExpressionWarnings.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TypedLocalObjectReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.\n    /// </summary>\n    public partial class TypedLocalObjectReferenceV1\n    {\n        /// <summary>\n        ///     Kind is the type of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     Name is the name of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/TypedObjectReferenceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     No description provided.\n    /// </summary>\n    public partial class TypedObjectReferenceV1\n    {\n        /// <summary>\n        ///     Kind is the type of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        [JsonProperty(\"kind\", NullValueHandling = NullValueHandling.Include)]\n        public string Kind { get; set; }\n\n        /// <summary>\n        ///     Name is the name of resource being referenced\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n        /// </summary>\n        [YamlMember(Alias = \"namespace\")]\n        [JsonProperty(\"namespace\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Namespace { get; set; }\n\n        /// <summary>\n        ///     APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\n        /// </summary>\n        [YamlMember(Alias = \"apiGroup\")]\n        [JsonProperty(\"apiGroup\", NullValueHandling = NullValueHandling.Ignore)]\n        public string ApiGroup { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/UncountedTerminatedPodsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.\n    /// </summary>\n    public partial class UncountedTerminatedPodsV1\n    {\n        /// <summary>\n        ///     failed holds UIDs of failed Pods.\n        /// </summary>\n        [YamlMember(Alias = \"failed\")]\n        [JsonProperty(\"failed\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Failed { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Failed\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeFailed() => Failed.Count > 0;\n\n        /// <summary>\n        ///     succeeded holds UIDs of succeeded Pods.\n        /// </summary>\n        [YamlMember(Alias = \"succeeded\")]\n        [JsonProperty(\"succeeded\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Succeeded { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Succeeded\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeSucceeded() => Succeeded.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/UserInfoV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     UserInfo holds the information about the user needed to implement the user.Info interface.\n    /// </summary>\n    public partial class UserInfoV1\n    {\n        /// <summary>\n        ///     Any additional information provided by the authenticator.\n        /// </summary>\n        [YamlMember(Alias = \"extra\")]\n        [JsonProperty(\"extra\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, List<string>> Extra { get; } = new Dictionary<string, List<string>>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Extra\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExtra() => Extra.Count > 0;\n\n        /// <summary>\n        ///     A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     The name that uniquely identifies this user among all active users.\n        /// </summary>\n        [YamlMember(Alias = \"username\")]\n        [JsonProperty(\"username\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Username { get; set; }\n\n        /// <summary>\n        ///     The names of groups this user is a part of.\n        /// </summary>\n        [YamlMember(Alias = \"groups\")]\n        [JsonProperty(\"groups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Groups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Groups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeGroups() => Groups.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/UserInfoV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     UserInfo holds the information about the user needed to implement the user.Info interface.\n    /// </summary>\n    public partial class UserInfoV1Beta1\n    {\n        /// <summary>\n        ///     Any additional information provided by the authenticator.\n        /// </summary>\n        [YamlMember(Alias = \"extra\")]\n        [JsonProperty(\"extra\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, List<string>> Extra { get; } = new Dictionary<string, List<string>>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Extra\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeExtra() => Extra.Count > 0;\n\n        /// <summary>\n        ///     A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.\n        /// </summary>\n        [YamlMember(Alias = \"uid\")]\n        [JsonProperty(\"uid\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Uid { get; set; }\n\n        /// <summary>\n        ///     The name that uniquely identifies this user among all active users.\n        /// </summary>\n        [YamlMember(Alias = \"username\")]\n        [JsonProperty(\"username\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Username { get; set; }\n\n        /// <summary>\n        ///     The names of groups this user is a part of.\n        /// </summary>\n        [YamlMember(Alias = \"groups\")]\n        [JsonProperty(\"groups\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> Groups { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Groups\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeGroups() => Groups.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/UserSubjectV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     UserSubject holds detailed information for user-kind subject.\n    /// </summary>\n    public partial class UserSubjectV1\n    {\n        /// <summary>\n        ///     `name` is the username that matches, or \"*\" to match all usernames. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/UserSubjectV1Beta3.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     UserSubject holds detailed information for user-kind subject.\n    /// </summary>\n    public partial class UserSubjectV1Beta3\n    {\n        /// <summary>\n        ///     `name` is the username that matches, or \"*\" to match all usernames. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.\n    /// </summary>\n    [KubeListItem(\"ValidatingAdmissionPolicyBinding\", \"admissionregistration.k8s.io/v1\")]\n    [KubeObject(\"ValidatingAdmissionPolicyBindingList\", \"admissionregistration.k8s.io/v1\")]\n    public partial class ValidatingAdmissionPolicyBindingListV1 : KubeResourceListV1<ValidatingAdmissionPolicyBindingV1>\n    {\n        /// <summary>\n        ///     List of PolicyBinding.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ValidatingAdmissionPolicyBindingV1> Items { get; } = new List<ValidatingAdmissionPolicyBindingV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.\n    /// </summary>\n    [KubeListItem(\"ValidatingAdmissionPolicyBinding\", \"admissionregistration.k8s.io/v1alpha1\")]\n    [KubeObject(\"ValidatingAdmissionPolicyBindingList\", \"admissionregistration.k8s.io/v1alpha1\")]\n    public partial class ValidatingAdmissionPolicyBindingListV1Alpha1 : KubeResourceListV1<ValidatingAdmissionPolicyBindingV1Alpha1>\n    {\n        /// <summary>\n        ///     List of PolicyBinding.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ValidatingAdmissionPolicyBindingV1Alpha1> Items { get; } = new List<ValidatingAdmissionPolicyBindingV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.\n    /// </summary>\n    [KubeListItem(\"ValidatingAdmissionPolicyBinding\", \"admissionregistration.k8s.io/v1beta1\")]\n    [KubeObject(\"ValidatingAdmissionPolicyBindingList\", \"admissionregistration.k8s.io/v1beta1\")]\n    public partial class ValidatingAdmissionPolicyBindingListV1Beta1 : KubeResourceListV1<ValidatingAdmissionPolicyBindingV1Beta1>\n    {\n        /// <summary>\n        ///     List of PolicyBinding.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ValidatingAdmissionPolicyBindingV1Beta1> Items { get; } = new List<ValidatingAdmissionPolicyBindingV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicyBindingSpecV1\n    {\n        /// <summary>\n        ///     PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.\n        /// </summary>\n        [YamlMember(Alias = \"policyName\")]\n        [JsonProperty(\"policyName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PolicyName { get; set; }\n\n        /// <summary>\n        ///     paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.\n        /// </summary>\n        [YamlMember(Alias = \"paramRef\")]\n        [JsonProperty(\"paramRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ParamRefV1 ParamRef { get; set; }\n\n        /// <summary>\n        ///     MatchResources declares what resources match this binding and will be validated by it. Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.\n        /// </summary>\n        [YamlMember(Alias = \"matchResources\")]\n        [JsonProperty(\"matchResources\", NullValueHandling = NullValueHandling.Ignore)]\n        public MatchResourcesV1 MatchResources { get; set; }\n\n        /// <summary>\n        ///     validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions.\n        ///     \n        ///     Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.\n        ///     \n        ///     validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action.\n        ///     \n        ///     The supported actions values are:\n        ///     \n        ///     \"Deny\" specifies that a validation failure results in a denied request.\n        ///     \n        ///     \"Warn\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses.\n        ///     \n        ///     \"Audit\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\"validation.policy.admission.k8s.io/validation_failure\": \"[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]\"`\n        ///     \n        ///     Clients should expect to handle additional values by ignoring any values not recognized.\n        ///     \n        ///     \"Deny\" and \"Warn\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"validationActions\")]\n        [JsonProperty(\"validationActions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ValidationActions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ValidationActions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValidationActions() => ValidationActions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingSpecV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicyBindingSpecV1Alpha1\n    {\n        /// <summary>\n        ///     PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.\n        /// </summary>\n        [YamlMember(Alias = \"policyName\")]\n        [JsonProperty(\"policyName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PolicyName { get; set; }\n\n        /// <summary>\n        ///     paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.\n        /// </summary>\n        [YamlMember(Alias = \"paramRef\")]\n        [JsonProperty(\"paramRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ParamRefV1Alpha1 ParamRef { get; set; }\n\n        /// <summary>\n        ///     MatchResources declares what resources match this binding and will be validated by it. Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.\n        /// </summary>\n        [YamlMember(Alias = \"matchResources\")]\n        [JsonProperty(\"matchResources\", NullValueHandling = NullValueHandling.Ignore)]\n        public MatchResourcesV1Alpha1 MatchResources { get; set; }\n\n        /// <summary>\n        ///     validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions.\n        ///     \n        ///     Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.\n        ///     \n        ///     validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action.\n        ///     \n        ///     The supported actions values are:\n        ///     \n        ///     \"Deny\" specifies that a validation failure results in a denied request.\n        ///     \n        ///     \"Warn\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses.\n        ///     \n        ///     \"Audit\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\"validation.policy.admission.k8s.io/validation_failure\": \"[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]\"`\n        ///     \n        ///     Clients should expect to handle additional values by ignoring any values not recognized.\n        ///     \n        ///     \"Deny\" and \"Warn\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"validationActions\")]\n        [JsonProperty(\"validationActions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ValidationActions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ValidationActions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValidationActions() => ValidationActions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicyBindingSpecV1Beta1\n    {\n        /// <summary>\n        ///     PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.\n        /// </summary>\n        [YamlMember(Alias = \"policyName\")]\n        [JsonProperty(\"policyName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PolicyName { get; set; }\n\n        /// <summary>\n        ///     paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.\n        /// </summary>\n        [YamlMember(Alias = \"paramRef\")]\n        [JsonProperty(\"paramRef\", NullValueHandling = NullValueHandling.Ignore)]\n        public ParamRefV1Beta1 ParamRef { get; set; }\n\n        /// <summary>\n        ///     MatchResources declares what resources match this binding and will be validated by it. Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.\n        /// </summary>\n        [YamlMember(Alias = \"matchResources\")]\n        [JsonProperty(\"matchResources\", NullValueHandling = NullValueHandling.Ignore)]\n        public MatchResourcesV1Beta1 MatchResources { get; set; }\n\n        /// <summary>\n        ///     validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions.\n        ///     \n        ///     Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.\n        ///     \n        ///     validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action.\n        ///     \n        ///     The supported actions values are:\n        ///     \n        ///     \"Deny\" specifies that a validation failure results in a denied request.\n        ///     \n        ///     \"Warn\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses.\n        ///     \n        ///     \"Audit\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\"validation.policy.admission.k8s.io/validation_failure\": \"[{\"message\": \"Invalid value\", {\"policy\": \"policy.example.com\", {\"binding\": \"policybinding.example.com\", {\"expressionIndex\": \"1\", {\"validationActions\": [\"Audit\"]}]\"`\n        ///     \n        ///     Clients should expect to handle additional values by ignoring any values not recognized.\n        ///     \n        ///     \"Deny\" and \"Warn\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers.\n        ///     \n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"validationActions\")]\n        [JsonProperty(\"validationActions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ValidationActions { get; } = new List<string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"ValidationActions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValidationActions() => ValidationActions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.\n    ///     \n    ///     For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding.\n    ///     \n    ///     The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.\n    /// </summary>\n    [KubeObject(\"ValidatingAdmissionPolicyBinding\", \"admissionregistration.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicybindings/{name}\")]\n    public partial class ValidatingAdmissionPolicyBindingV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicyBindingSpecV1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.\n    ///     \n    ///     For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding.\n    ///     \n    ///     The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.\n    /// </summary>\n    [KubeObject(\"ValidatingAdmissionPolicyBinding\", \"admissionregistration.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1alpha1/watch/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1alpha1/watch/validatingadmissionpolicybindings/{name}\")]\n    public partial class ValidatingAdmissionPolicyBindingV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicyBindingSpecV1Alpha1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyBindingV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.\n    ///     \n    ///     For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding.\n    ///     \n    ///     The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.\n    /// </summary>\n    [KubeObject(\"ValidatingAdmissionPolicyBinding\", \"admissionregistration.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1beta1/watch/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1beta1/watch/validatingadmissionpolicybindings/{name}\")]\n    public partial class ValidatingAdmissionPolicyBindingV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicyBindingSpecV1Beta1 Spec { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.\n    /// </summary>\n    [KubeListItem(\"ValidatingAdmissionPolicy\", \"admissionregistration.k8s.io/v1\")]\n    [KubeObject(\"ValidatingAdmissionPolicyList\", \"admissionregistration.k8s.io/v1\")]\n    public partial class ValidatingAdmissionPolicyListV1 : KubeResourceListV1<ValidatingAdmissionPolicyV1>\n    {\n        /// <summary>\n        ///     List of ValidatingAdmissionPolicy.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ValidatingAdmissionPolicyV1> Items { get; } = new List<ValidatingAdmissionPolicyV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.\n    /// </summary>\n    [KubeListItem(\"ValidatingAdmissionPolicy\", \"admissionregistration.k8s.io/v1alpha1\")]\n    [KubeObject(\"ValidatingAdmissionPolicyList\", \"admissionregistration.k8s.io/v1alpha1\")]\n    public partial class ValidatingAdmissionPolicyListV1Alpha1 : KubeResourceListV1<ValidatingAdmissionPolicyV1Alpha1>\n    {\n        /// <summary>\n        ///     List of ValidatingAdmissionPolicy.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ValidatingAdmissionPolicyV1Alpha1> Items { get; } = new List<ValidatingAdmissionPolicyV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.\n    /// </summary>\n    [KubeListItem(\"ValidatingAdmissionPolicy\", \"admissionregistration.k8s.io/v1beta1\")]\n    [KubeObject(\"ValidatingAdmissionPolicyList\", \"admissionregistration.k8s.io/v1beta1\")]\n    public partial class ValidatingAdmissionPolicyListV1Beta1 : KubeResourceListV1<ValidatingAdmissionPolicyV1Beta1>\n    {\n        /// <summary>\n        ///     List of ValidatingAdmissionPolicy.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ValidatingAdmissionPolicyV1Beta1> Items { get; } = new List<ValidatingAdmissionPolicyV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicySpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicySpecV1\n    {\n        /// <summary>\n        ///     ParamKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.\n        /// </summary>\n        [YamlMember(Alias = \"paramKind\")]\n        [JsonProperty(\"paramKind\", NullValueHandling = NullValueHandling.Ignore)]\n        public ParamKindV1 ParamKind { get; set; }\n\n        /// <summary>\n        ///     auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required.\n        /// </summary>\n        [YamlMember(Alias = \"auditAnnotations\")]\n        [JsonProperty(\"auditAnnotations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<AuditAnnotationV1> AuditAnnotations { get; } = new List<AuditAnnotationV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AuditAnnotations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAuditAnnotations() => AuditAnnotations.Count > 0;\n\n        /// <summary>\n        ///     MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n        ///     \n        ///     If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\n        ///     \n        ///     The exact matching logic is (in order):\n        ///       1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\n        ///       2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\n        ///       3. If any matchCondition evaluates to an error (but none are FALSE):\n        ///          - If failurePolicy=Fail, reject the request\n        ///          - If failurePolicy=Ignore, the policy is skipped\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"matchConditions\")]\n        [JsonProperty(\"matchConditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MatchConditionV1> MatchConditions { get; } = new List<MatchConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchConditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchConditions() => MatchConditions.Count > 0;\n\n        /// <summary>\n        ///     MatchConstraints specifies what resources this policy is designed to validate. The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required.\n        /// </summary>\n        [YamlMember(Alias = \"matchConstraints\")]\n        [JsonProperty(\"matchConstraints\", NullValueHandling = NullValueHandling.Ignore)]\n        public MatchResourcesV1 MatchConstraints { get; set; }\n\n        /// <summary>\n        ///     Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required.\n        /// </summary>\n        [YamlMember(Alias = \"validations\")]\n        [JsonProperty(\"validations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ValidationV1> Validations { get; } = new List<ValidationV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Validations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValidations() => Validations.Count > 0;\n\n        /// <summary>\n        ///     Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy.\n        ///     \n        ///     The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"variables\")]\n        [JsonProperty(\"variables\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VariableV1> Variables { get; } = new List<VariableV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Variables\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVariables() => Variables.Count > 0;\n\n        /// <summary>\n        ///     failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\n        ///     \n        ///     A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource.\n        ///     \n        ///     failurePolicy does not define how validations that evaluate to false are handled.\n        ///     \n        ///     When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced.\n        ///     \n        ///     Allowed values are Ignore or Fail. Defaults to Fail.\n        /// </summary>\n        [YamlMember(Alias = \"failurePolicy\")]\n        [JsonProperty(\"failurePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FailurePolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicySpecV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicySpecV1Alpha1\n    {\n        /// <summary>\n        ///     ParamKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.\n        /// </summary>\n        [YamlMember(Alias = \"paramKind\")]\n        [JsonProperty(\"paramKind\", NullValueHandling = NullValueHandling.Ignore)]\n        public ParamKindV1Alpha1 ParamKind { get; set; }\n\n        /// <summary>\n        ///     auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required.\n        /// </summary>\n        [YamlMember(Alias = \"auditAnnotations\")]\n        [JsonProperty(\"auditAnnotations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<AuditAnnotationV1Alpha1> AuditAnnotations { get; } = new List<AuditAnnotationV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AuditAnnotations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAuditAnnotations() => AuditAnnotations.Count > 0;\n\n        /// <summary>\n        ///     MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n        ///     \n        ///     If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\n        ///     \n        ///     The exact matching logic is (in order):\n        ///       1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\n        ///       2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\n        ///       3. If any matchCondition evaluates to an error (but none are FALSE):\n        ///          - If failurePolicy=Fail, reject the request\n        ///          - If failurePolicy=Ignore, the policy is skipped\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"matchConditions\")]\n        [JsonProperty(\"matchConditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MatchConditionV1Alpha1> MatchConditions { get; } = new List<MatchConditionV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchConditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchConditions() => MatchConditions.Count > 0;\n\n        /// <summary>\n        ///     MatchConstraints specifies what resources this policy is designed to validate. The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required.\n        /// </summary>\n        [YamlMember(Alias = \"matchConstraints\")]\n        [JsonProperty(\"matchConstraints\", NullValueHandling = NullValueHandling.Ignore)]\n        public MatchResourcesV1Alpha1 MatchConstraints { get; set; }\n\n        /// <summary>\n        ///     Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required.\n        /// </summary>\n        [YamlMember(Alias = \"validations\")]\n        [JsonProperty(\"validations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ValidationV1Alpha1> Validations { get; } = new List<ValidationV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Validations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValidations() => Validations.Count > 0;\n\n        /// <summary>\n        ///     Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy.\n        ///     \n        ///     The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"variables\")]\n        [JsonProperty(\"variables\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VariableV1Alpha1> Variables { get; } = new List<VariableV1Alpha1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Variables\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVariables() => Variables.Count > 0;\n\n        /// <summary>\n        ///     failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\n        ///     \n        ///     A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource.\n        ///     \n        ///     failurePolicy does not define how validations that evaluate to false are handled.\n        ///     \n        ///     When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced.\n        ///     \n        ///     Allowed values are Ignore or Fail. Defaults to Fail.\n        /// </summary>\n        [YamlMember(Alias = \"failurePolicy\")]\n        [JsonProperty(\"failurePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FailurePolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicySpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicySpecV1Beta1\n    {\n        /// <summary>\n        ///     ParamKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.\n        /// </summary>\n        [YamlMember(Alias = \"paramKind\")]\n        [JsonProperty(\"paramKind\", NullValueHandling = NullValueHandling.Ignore)]\n        public ParamKindV1Beta1 ParamKind { get; set; }\n\n        /// <summary>\n        ///     auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required.\n        /// </summary>\n        [YamlMember(Alias = \"auditAnnotations\")]\n        [JsonProperty(\"auditAnnotations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<AuditAnnotationV1Beta1> AuditAnnotations { get; } = new List<AuditAnnotationV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AuditAnnotations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAuditAnnotations() => AuditAnnotations.Count > 0;\n\n        /// <summary>\n        ///     MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n        ///     \n        ///     If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\n        ///     \n        ///     The exact matching logic is (in order):\n        ///       1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\n        ///       2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\n        ///       3. If any matchCondition evaluates to an error (but none are FALSE):\n        ///          - If failurePolicy=Fail, reject the request\n        ///          - If failurePolicy=Ignore, the policy is skipped\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"matchConditions\")]\n        [JsonProperty(\"matchConditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MatchConditionV1Beta1> MatchConditions { get; } = new List<MatchConditionV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchConditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchConditions() => MatchConditions.Count > 0;\n\n        /// <summary>\n        ///     MatchConstraints specifies what resources this policy is designed to validate. The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required.\n        /// </summary>\n        [YamlMember(Alias = \"matchConstraints\")]\n        [JsonProperty(\"matchConstraints\", NullValueHandling = NullValueHandling.Ignore)]\n        public MatchResourcesV1Beta1 MatchConstraints { get; set; }\n\n        /// <summary>\n        ///     Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required.\n        /// </summary>\n        [YamlMember(Alias = \"validations\")]\n        [JsonProperty(\"validations\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ValidationV1Beta1> Validations { get; } = new List<ValidationV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Validations\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeValidations() => Validations.Count > 0;\n\n        /// <summary>\n        ///     Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy.\n        ///     \n        ///     The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"variables\")]\n        [JsonProperty(\"variables\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<VariableV1Beta1> Variables { get; } = new List<VariableV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Variables\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeVariables() => Variables.Count > 0;\n\n        /// <summary>\n        ///     failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\n        ///     \n        ///     A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource.\n        ///     \n        ///     failurePolicy does not define how validations that evaluate to false are handled.\n        ///     \n        ///     When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced.\n        ///     \n        ///     Allowed values are Ignore or Fail. Defaults to Fail.\n        /// </summary>\n        [YamlMember(Alias = \"failurePolicy\")]\n        [JsonProperty(\"failurePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FailurePolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyStatus represents the status of an admission validation policy.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicyStatusV1\n    {\n        /// <summary>\n        ///     The results of type checking for each expression. Presence of this field indicates the completion of the type checking.\n        /// </summary>\n        [YamlMember(Alias = \"typeChecking\")]\n        [JsonProperty(\"typeChecking\", NullValueHandling = NullValueHandling.Ignore)]\n        public TypeCheckingV1 TypeChecking { get; set; }\n\n        /// <summary>\n        ///     The generation observed by the controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     The conditions represent the latest available observations of a policy's current state.\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ConditionV1> Conditions { get; } = new List<ConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyStatusV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyStatus represents the status of a ValidatingAdmissionPolicy.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicyStatusV1Alpha1\n    {\n        /// <summary>\n        ///     The results of type checking for each expression. Presence of this field indicates the completion of the type checking.\n        /// </summary>\n        [YamlMember(Alias = \"typeChecking\")]\n        [JsonProperty(\"typeChecking\", NullValueHandling = NullValueHandling.Ignore)]\n        public TypeCheckingV1Alpha1 TypeChecking { get; set; }\n\n        /// <summary>\n        ///     The generation observed by the controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     The conditions represent the latest available observations of a policy's current state.\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ConditionV1> Conditions { get; } = new List<ConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicyStatus represents the status of an admission validation policy.\n    /// </summary>\n    public partial class ValidatingAdmissionPolicyStatusV1Beta1\n    {\n        /// <summary>\n        ///     The results of type checking for each expression. Presence of this field indicates the completion of the type checking.\n        /// </summary>\n        [YamlMember(Alias = \"typeChecking\")]\n        [JsonProperty(\"typeChecking\", NullValueHandling = NullValueHandling.Ignore)]\n        public TypeCheckingV1Beta1 TypeChecking { get; set; }\n\n        /// <summary>\n        ///     The generation observed by the controller.\n        /// </summary>\n        [YamlMember(Alias = \"observedGeneration\")]\n        [JsonProperty(\"observedGeneration\", NullValueHandling = NullValueHandling.Ignore)]\n        public long? ObservedGeneration { get; set; }\n\n        /// <summary>\n        ///     The conditions represent the latest available observations of a policy's current state.\n        /// </summary>\n        [YamlMember(Alias = \"conditions\")]\n        [JsonProperty(\"conditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ConditionV1> Conditions { get; } = new List<ConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Conditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeConditions() => Conditions.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.\n    /// </summary>\n    [KubeObject(\"ValidatingAdmissionPolicy\", \"admissionregistration.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status\")]\n    public partial class ValidatingAdmissionPolicyV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the ValidatingAdmissionPolicy.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicySpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy behaves in the expected way. Populated by the system. Read-only.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicyStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.\n    /// </summary>\n    [KubeObject(\"ValidatingAdmissionPolicy\", \"admissionregistration.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1alpha1/watch/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1alpha1/watch/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}/status\")]\n    public partial class ValidatingAdmissionPolicyV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the ValidatingAdmissionPolicy.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicySpecV1Alpha1 Spec { get; set; }\n\n        /// <summary>\n        ///     The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy behaves in the expected way. Populated by the system. Read-only.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicyStatusV1Alpha1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingAdmissionPolicyV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.\n    /// </summary>\n    [KubeObject(\"ValidatingAdmissionPolicy\", \"admissionregistration.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1beta1/watch/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1beta1/watch/validatingadmissionpolicies/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}/status\")]\n    public partial class ValidatingAdmissionPolicyV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired behavior of the ValidatingAdmissionPolicy.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicySpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy behaves in the expected way. Populated by the system. Read-only.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public ValidatingAdmissionPolicyStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingWebhookConfigurationListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.\n    /// </summary>\n    [KubeListItem(\"ValidatingWebhookConfiguration\", \"admissionregistration.k8s.io/v1\")]\n    [KubeObject(\"ValidatingWebhookConfigurationList\", \"admissionregistration.k8s.io/v1\")]\n    public partial class ValidatingWebhookConfigurationListV1 : KubeResourceListV1<ValidatingWebhookConfigurationV1>\n    {\n        /// <summary>\n        ///     List of ValidatingWebhookConfiguration.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ValidatingWebhookConfigurationV1> Items { get; } = new List<ValidatingWebhookConfigurationV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingWebhookConfigurationListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.\n    /// </summary>\n    [KubeListItem(\"ValidatingWebhookConfiguration\", \"admissionregistration.k8s.io/v1beta1\")]\n    [KubeObject(\"ValidatingWebhookConfigurationList\", \"admissionregistration.k8s.io/v1beta1\")]\n    public partial class ValidatingWebhookConfigurationListV1Beta1 : KubeResourceListV1<ValidatingWebhookConfigurationV1Beta1>\n    {\n        /// <summary>\n        ///     List of ValidatingWebhookConfiguration.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<ValidatingWebhookConfigurationV1Beta1> Items { get; } = new List<ValidatingWebhookConfigurationV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingWebhookConfigurationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.\n    /// </summary>\n    [KubeObject(\"ValidatingWebhookConfiguration\", \"admissionregistration.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations/{name}\")]\n    public partial class ValidatingWebhookConfigurationV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Webhooks is a list of webhooks and the affected resources and operations.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"webhooks\")]\n        [JsonProperty(\"webhooks\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<ValidatingWebhookV1> Webhooks { get; } = new List<ValidatingWebhookV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Webhooks\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeWebhooks() => Webhooks.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingWebhookConfigurationV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.\n    /// </summary>\n    [KubeObject(\"ValidatingWebhookConfiguration\", \"admissionregistration.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Create, \"apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Get, \"apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/admissionregistration.k8s.io/v1beta1/watch/validatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations\")]\n    [KubeApi(KubeAction.Watch, \"apis/admissionregistration.k8s.io/v1beta1/watch/validatingwebhookconfigurations/{name}\")]\n    public partial class ValidatingWebhookConfigurationV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Webhooks is a list of webhooks and the affected resources and operations.\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"webhooks\")]\n        [JsonProperty(\"webhooks\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<WebhookV1Beta1> Webhooks { get; } = new List<WebhookV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Webhooks\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeWebhooks() => Webhooks.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidatingWebhookV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidatingWebhook describes an admission webhook and the resources and operations it applies to.\n    /// </summary>\n    public partial class ValidatingWebhookV1\n    {\n        /// <summary>\n        ///     The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     ClientConfig defines how to communicate with the hook. Required\n        /// </summary>\n        [YamlMember(Alias = \"clientConfig\")]\n        [JsonProperty(\"clientConfig\", NullValueHandling = NullValueHandling.Include)]\n        public WebhookClientConfigV1 ClientConfig { get; set; }\n\n        /// <summary>\n        ///     NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook.\n        ///     \n        ///     For example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\";  you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"runlevel\",\n        ///           \"operator\": \"NotIn\",\n        ///           \"values\": [\n        ///             \"0\",\n        ///             \"1\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     If instead you want to only run the webhook on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"environment\",\n        ///           \"operator\": \"In\",\n        ///           \"values\": [\n        ///             \"prod\",\n        ///             \"staging\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels for more examples of label selectors.\n        ///     \n        ///     Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     ObjectSelector decides whether to run the webhook based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the webhook, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"objectSelector\")]\n        [JsonProperty(\"objectSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 ObjectSelector { get; set; }\n\n        /// <summary>\n        ///     AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.\n        /// </summary>\n        [YamlMember(Alias = \"admissionReviewVersions\")]\n        [JsonProperty(\"admissionReviewVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> AdmissionReviewVersions { get; } = new List<string>();\n\n        /// <summary>\n        ///     MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n        ///     \n        ///     The exact matching logic is (in order):\n        ///       1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\n        ///       2. If ALL matchConditions evaluate to TRUE, the webhook is called.\n        ///       3. If any matchCondition evaluates to an error (but none are FALSE):\n        ///          - If failurePolicy=Fail, reject the request\n        ///          - If failurePolicy=Ignore, the error is ignored and the webhook is skipped\n        /// </summary>\n        [MergeStrategy(Key = \"name\")]\n        [YamlMember(Alias = \"matchConditions\")]\n        [JsonProperty(\"matchConditions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<MatchConditionV1> MatchConditions { get; } = new List<MatchConditionV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"MatchConditions\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeMatchConditions() => MatchConditions.Count > 0;\n\n        /// <summary>\n        ///     Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<RuleWithOperationsV1> Rules { get; } = new List<RuleWithOperationsV1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n\n        /// <summary>\n        ///     SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some.\n        /// </summary>\n        [YamlMember(Alias = \"sideEffects\")]\n        [JsonProperty(\"sideEffects\", NullValueHandling = NullValueHandling.Include)]\n        public string SideEffects { get; set; }\n\n        /// <summary>\n        ///     TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds.\n        /// </summary>\n        [YamlMember(Alias = \"timeoutSeconds\")]\n        [JsonProperty(\"timeoutSeconds\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? TimeoutSeconds { get; set; }\n\n        /// <summary>\n        ///     FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail.\n        /// </summary>\n        [YamlMember(Alias = \"failurePolicy\")]\n        [JsonProperty(\"failurePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FailurePolicy { get; set; }\n\n        /// <summary>\n        ///     matchPolicy defines how the \"rules\" list is used to match incoming requests. Allowed values are \"Exact\" or \"Equivalent\".\n        ///     \n        ///     - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook.\n        ///     \n        ///     - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \"rules\" only included `apiGroups:[\"apps\"], apiVersions:[\"v1\"], resources: [\"deployments\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook.\n        ///     \n        ///     Defaults to \"Equivalent\"\n        /// </summary>\n        [YamlMember(Alias = \"matchPolicy\")]\n        [JsonProperty(\"matchPolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MatchPolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidationRuleV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     ValidationRule describes a validation rule written in the CEL expression language.\n    /// </summary>\n    public partial class ValidationRuleV1\n    {\n        /// <summary>\n        ///     Message represents the message displayed when validation fails. The message is required if the Rule contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\"\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Rule represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. The `self` variable in the CEL expression is bound to the scoped value. Example: - Rule scoped to the root of a resource with a status subresource: {\"rule\": \"self.status.actual &lt;= self.spec.maxDesired\"}\n        ///     \n        ///     If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as absent fields in CEL expressions. If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map are accessible via CEL macros and functions such as `self.all(...)`. If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and functions. If the Rule is scoped to a scalar, `self` is bound to the scalar value. Examples: - Rule scoped to a map of objects: {\"rule\": \"self.components['Widget'].priority &lt; 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)\"} - Rule scoped to a string value: {\"rule\": \"self.startsWith('kube')\"}\n        ///     \n        ///     The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.\n        ///     \n        ///     Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL expressions. This includes: - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields. - Object properties where the property schema is of an \"unknown type\". An \"unknown type\" is recursively defined as:\n        ///       - A schema with no type and x-kubernetes-preserve-unknown-fields set to true\n        ///       - An array where the items schema is of an \"unknown type\"\n        ///       - An object where the additionalProperties schema is of an \"unknown type\"\n        ///     \n        ///     Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n        ///     \t  \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n        ///     \t  \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\n        ///     Examples:\n        ///       - Rule accessing a property named \"namespace\": {\"rule\": \"self.__namespace__ &gt; 0\"}\n        ///       - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop &gt; 0\"}\n        ///       - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d &gt; 0\"}\n        ///     \n        ///     Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\n        ///       - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\n        ///         non-intersecting elements in `Y` are appended, retaining their partial order.\n        ///       - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\n        ///         are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\n        ///         non-intersecting keys are appended, retaining their partial order.\n        ///     \n        ///     If `rule` makes use of the `oldSelf` variable it is implicitly a `transition rule`.\n        ///     \n        ///     By default, the `oldSelf` variable is the same type as `self`. When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional\n        ///      variable whose value() is the same type as `self`.\n        ///     See the documentation for the `optionalOldSelf` field for details.\n        ///     \n        ///     Transition rules by default are applied only on UPDATE requests and are skipped if an old value could not be found. You can opt a transition rule into unconditional evaluation by setting `optionalOldSelf` to true.\n        /// </summary>\n        [YamlMember(Alias = \"rule\")]\n        [JsonProperty(\"rule\", NullValueHandling = NullValueHandling.Include)]\n        public string Rule { get; set; }\n\n        /// <summary>\n        ///     optionalOldSelf is used to opt a transition rule into evaluation even when the object is first created, or if the old object is missing the value.\n        ///     \n        ///     When enabled `oldSelf` will be a CEL optional whose value will be `None` if there is no old value, or when the object is initially created.\n        ///     \n        ///     You may check for presence of oldSelf using `oldSelf.hasValue()` and unwrap it after checking using `oldSelf.value()`. Check the CEL documentation for Optional types for more information: https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes\n        ///     \n        ///     May not be set unless `oldSelf` is used in `rule`.\n        /// </summary>\n        [YamlMember(Alias = \"optionalOldSelf\")]\n        [JsonProperty(\"optionalOldSelf\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? OptionalOldSelf { get; set; }\n\n        /// <summary>\n        ///     fieldPath represents the field path returned when the validation fails. It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` It does not support list numeric index. It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info. Numeric index of array is not supported. For field name which contains special characters, use `['specialName']` to refer the field name. e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`\n        /// </summary>\n        [YamlMember(Alias = \"fieldPath\")]\n        [JsonProperty(\"fieldPath\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FieldPath { get; set; }\n\n        /// <summary>\n        ///     MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a rule, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the rule; the only difference is the return type. Example: \"x must be less than max (\"+string(self.max)+\")\"\n        /// </summary>\n        [YamlMember(Alias = \"messageExpression\")]\n        [JsonProperty(\"messageExpression\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MessageExpression { get; set; }\n\n        /// <summary>\n        ///     reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidationV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Validation specifies the CEL expression which is used to apply the validation.\n    /// </summary>\n    public partial class ValidationV1\n    {\n        /// <summary>\n        ///     Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \"failed Expression: {Expression}\".\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:\n        ///     \n        ///     - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\n        ///       For example, a variable named 'foo' can be accessed as 'variables.foo'.\n        ///     - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n        ///       See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n        ///     - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n        ///       request resource.\n        ///     \n        ///     The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\n        ///     \n        ///     Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n        ///     \t  \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n        ///     \t  \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\n        ///     Examples:\n        ///       - Expression accessing a property named \"namespace\": {\"Expression\": \"object.__namespace__ &gt; 0\"}\n        ///       - Expression accessing a property named \"x-prop\": {\"Expression\": \"object.x__dash__prop &gt; 0\"}\n        ///       - Expression accessing a property named \"redact__d\": {\"Expression\": \"object.redact__underscores__d &gt; 0\"}\n        ///     \n        ///     Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\n        ///       - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\n        ///         non-intersecting elements in `Y` are appended, retaining their partial order.\n        ///       - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\n        ///         are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\n        ///         non-intersecting keys are appended, retaining their partial order.\n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n\n        /// <summary>\n        ///     messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \"object.x must be less than max (\"+string(params.max)+\")\"\n        /// </summary>\n        [YamlMember(Alias = \"messageExpression\")]\n        [JsonProperty(\"messageExpression\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MessageExpression { get; set; }\n\n        /// <summary>\n        ///     Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \"Unauthorized\", \"Forbidden\", \"Invalid\", \"RequestEntityTooLarge\". If not set, StatusReasonInvalid is used in the response to the client.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidationV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Validation specifies the CEL expression which is used to apply the validation.\n    /// </summary>\n    public partial class ValidationV1Alpha1\n    {\n        /// <summary>\n        ///     Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \"failed Expression: {Expression}\".\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:\n        ///     \n        ///     - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\n        ///       For example, a variable named 'foo' can be accessed as 'variables.foo'.\n        ///     - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n        ///       See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n        ///     - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n        ///       request resource.\n        ///     \n        ///     The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\n        ///     \n        ///     Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n        ///     \t  \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n        ///     \t  \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\n        ///     Examples:\n        ///       - Expression accessing a property named \"namespace\": {\"Expression\": \"object.__namespace__ &gt; 0\"}\n        ///       - Expression accessing a property named \"x-prop\": {\"Expression\": \"object.x__dash__prop &gt; 0\"}\n        ///       - Expression accessing a property named \"redact__d\": {\"Expression\": \"object.redact__underscores__d &gt; 0\"}\n        ///     \n        ///     Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\n        ///       - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\n        ///         non-intersecting elements in `Y` are appended, retaining their partial order.\n        ///       - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\n        ///         are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\n        ///         non-intersecting keys are appended, retaining their partial order.\n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n\n        /// <summary>\n        ///     messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \"object.x must be less than max (\"+string(params.max)+\")\"\n        /// </summary>\n        [YamlMember(Alias = \"messageExpression\")]\n        [JsonProperty(\"messageExpression\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MessageExpression { get; set; }\n\n        /// <summary>\n        ///     Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \"Unauthorized\", \"Forbidden\", \"Invalid\", \"RequestEntityTooLarge\". If not set, StatusReasonInvalid is used in the response to the client.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/ValidationV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Validation specifies the CEL expression which is used to apply the validation.\n    /// </summary>\n    public partial class ValidationV1Beta1\n    {\n        /// <summary>\n        ///     Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \"failed rule: {Rule}\". e.g. \"must be a URL with the host matching spec.host\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \"failed Expression: {Expression}\".\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:\n        ///     \n        ///     - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\n        ///       For example, a variable named 'foo' can be accessed as 'variables.foo'.\n        ///     - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n        ///       See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n        ///     - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n        ///       request resource.\n        ///     \n        ///     The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\n        ///     \n        ///     Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n        ///     \t  \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n        ///     \t  \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\n        ///     Examples:\n        ///       - Expression accessing a property named \"namespace\": {\"Expression\": \"object.__namespace__ &gt; 0\"}\n        ///       - Expression accessing a property named \"x-prop\": {\"Expression\": \"object.x__dash__prop &gt; 0\"}\n        ///       - Expression accessing a property named \"redact__d\": {\"Expression\": \"object.redact__underscores__d &gt; 0\"}\n        ///     \n        ///     Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\n        ///       - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\n        ///         non-intersecting elements in `Y` are appended, retaining their partial order.\n        ///       - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\n        ///         are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\n        ///         non-intersecting keys are appended, retaining their partial order.\n        ///     Required.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n\n        /// <summary>\n        ///     messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \"object.x must be less than max (\"+string(params.max)+\")\"\n        /// </summary>\n        [YamlMember(Alias = \"messageExpression\")]\n        [JsonProperty(\"messageExpression\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MessageExpression { get; set; }\n\n        /// <summary>\n        ///     Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \"Unauthorized\", \"Forbidden\", \"Invalid\", \"RequestEntityTooLarge\". If not set, StatusReasonInvalid is used in the response to the client.\n        /// </summary>\n        [YamlMember(Alias = \"reason\")]\n        [JsonProperty(\"reason\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Reason { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VariableV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.\n    /// </summary>\n    public partial class VariableV1\n    {\n        /// <summary>\n        ///     Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo`\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VariableV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Variable is the definition of a variable that is used for composition.\n    /// </summary>\n    public partial class VariableV1Alpha1\n    {\n        /// <summary>\n        ///     Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo`\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VariableV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.\n    /// </summary>\n    public partial class VariableV1Beta1\n    {\n        /// <summary>\n        ///     Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \"foo\", the variable will be available as `variables.foo`\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.\n        /// </summary>\n        [YamlMember(Alias = \"expression\")]\n        [JsonProperty(\"expression\", NullValueHandling = NullValueHandling.Include)]\n        public string Expression { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentListV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentList is a collection of VolumeAttachment objects.\n    /// </summary>\n    [KubeListItem(\"VolumeAttachment\", \"storage.k8s.io/v1\")]\n    [KubeObject(\"VolumeAttachmentList\", \"storage.k8s.io/v1\")]\n    public partial class VolumeAttachmentListV1 : KubeResourceListV1<VolumeAttachmentV1>\n    {\n        /// <summary>\n        ///     items is the list of VolumeAttachments\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<VolumeAttachmentV1> Items { get; } = new List<VolumeAttachmentV1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentList is a collection of VolumeAttachment objects.\n    /// </summary>\n    [KubeListItem(\"VolumeAttachment\", \"storage.k8s.io/v1alpha1\")]\n    [KubeObject(\"VolumeAttachmentList\", \"storage.k8s.io/v1alpha1\")]\n    public partial class VolumeAttachmentListV1Alpha1 : KubeResourceListV1<VolumeAttachmentV1Alpha1>\n    {\n        /// <summary>\n        ///     Items is the list of VolumeAttachments\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<VolumeAttachmentV1Alpha1> Items { get; } = new List<VolumeAttachmentV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentList is a collection of VolumeAttachment objects.\n    /// </summary>\n    [KubeListItem(\"VolumeAttachment\", \"storage.k8s.io/v1beta1\")]\n    [KubeObject(\"VolumeAttachmentList\", \"storage.k8s.io/v1beta1\")]\n    public partial class VolumeAttachmentListV1Beta1 : KubeResourceListV1<VolumeAttachmentV1Beta1>\n    {\n        /// <summary>\n        ///     Items is the list of VolumeAttachments\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<VolumeAttachmentV1Beta1> Items { get; } = new List<VolumeAttachmentV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.\n    /// </summary>\n    public partial class VolumeAttachmentSourceV1\n    {\n        /// <summary>\n        ///     inlineVolumeSpec contains all the information necessary to attach a persistent volume defined by a pod's inline VolumeSource. This field is populated only for the CSIMigration feature. It contains translated fields from a pod's inline VolumeSource to a PersistentVolumeSpec. This field is beta-level and is only honored by servers that enabled the CSIMigration feature.\n        /// </summary>\n        [YamlMember(Alias = \"inlineVolumeSpec\")]\n        [JsonProperty(\"inlineVolumeSpec\", NullValueHandling = NullValueHandling.Ignore)]\n        public PersistentVolumeSpecV1 InlineVolumeSpec { get; set; }\n\n        /// <summary>\n        ///     persistentVolumeName represents the name of the persistent volume to attach.\n        /// </summary>\n        [YamlMember(Alias = \"persistentVolumeName\")]\n        [JsonProperty(\"persistentVolumeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PersistentVolumeName { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentSourceV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.\n    /// </summary>\n    public partial class VolumeAttachmentSourceV1Alpha1\n    {\n        /// <summary>\n        ///     Name of the persistent volume to attach.\n        /// </summary>\n        [YamlMember(Alias = \"persistentVolumeName\")]\n        [JsonProperty(\"persistentVolumeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PersistentVolumeName { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentSourceV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.\n    /// </summary>\n    public partial class VolumeAttachmentSourceV1Beta1\n    {\n        /// <summary>\n        ///     Name of the persistent volume to attach.\n        /// </summary>\n        [YamlMember(Alias = \"persistentVolumeName\")]\n        [JsonProperty(\"persistentVolumeName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string PersistentVolumeName { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentSpecV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentSpec is the specification of a VolumeAttachment request.\n    /// </summary>\n    public partial class VolumeAttachmentSpecV1\n    {\n        /// <summary>\n        ///     nodeName represents the node that the volume should be attached to.\n        /// </summary>\n        [YamlMember(Alias = \"nodeName\")]\n        [JsonProperty(\"nodeName\", NullValueHandling = NullValueHandling.Include)]\n        public string NodeName { get; set; }\n\n        /// <summary>\n        ///     source represents the volume that should be attached.\n        /// </summary>\n        [YamlMember(Alias = \"source\")]\n        [JsonProperty(\"source\", NullValueHandling = NullValueHandling.Include)]\n        public VolumeAttachmentSourceV1 Source { get; set; }\n\n        /// <summary>\n        ///     attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().\n        /// </summary>\n        [YamlMember(Alias = \"attacher\")]\n        [JsonProperty(\"attacher\", NullValueHandling = NullValueHandling.Include)]\n        public string Attacher { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentSpecV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentSpec is the specification of a VolumeAttachment request.\n    /// </summary>\n    public partial class VolumeAttachmentSpecV1Alpha1\n    {\n        /// <summary>\n        ///     The node that the volume should be attached to.\n        /// </summary>\n        [YamlMember(Alias = \"nodeName\")]\n        [JsonProperty(\"nodeName\", NullValueHandling = NullValueHandling.Include)]\n        public string NodeName { get; set; }\n\n        /// <summary>\n        ///     Source represents the volume that should be attached.\n        /// </summary>\n        [YamlMember(Alias = \"source\")]\n        [JsonProperty(\"source\", NullValueHandling = NullValueHandling.Include)]\n        public VolumeAttachmentSourceV1Alpha1 Source { get; set; }\n\n        /// <summary>\n        ///     Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().\n        /// </summary>\n        [YamlMember(Alias = \"attacher\")]\n        [JsonProperty(\"attacher\", NullValueHandling = NullValueHandling.Include)]\n        public string Attacher { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentSpecV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentSpec is the specification of a VolumeAttachment request.\n    /// </summary>\n    public partial class VolumeAttachmentSpecV1Beta1\n    {\n        /// <summary>\n        ///     The node that the volume should be attached to.\n        /// </summary>\n        [YamlMember(Alias = \"nodeName\")]\n        [JsonProperty(\"nodeName\", NullValueHandling = NullValueHandling.Include)]\n        public string NodeName { get; set; }\n\n        /// <summary>\n        ///     Source represents the volume that should be attached.\n        /// </summary>\n        [YamlMember(Alias = \"source\")]\n        [JsonProperty(\"source\", NullValueHandling = NullValueHandling.Include)]\n        public VolumeAttachmentSourceV1Beta1 Source { get; set; }\n\n        /// <summary>\n        ///     Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().\n        /// </summary>\n        [YamlMember(Alias = \"attacher\")]\n        [JsonProperty(\"attacher\", NullValueHandling = NullValueHandling.Include)]\n        public string Attacher { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentStatus is the status of a VolumeAttachment request.\n    /// </summary>\n    public partial class VolumeAttachmentStatusV1\n    {\n        /// <summary>\n        ///     attachmentMetadata is populated with any information returned by the attach operation, upon successful attach, that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attachmentMetadata\")]\n        [JsonProperty(\"attachmentMetadata\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> AttachmentMetadata { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AttachmentMetadata\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAttachmentMetadata() => AttachmentMetadata.Count > 0;\n\n        /// <summary>\n        ///     attached indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attached\")]\n        [JsonProperty(\"attached\", NullValueHandling = NullValueHandling.Include)]\n        public bool Attached { get; set; }\n\n        /// <summary>\n        ///     attachError represents the last error encountered during attach operation, if any. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attachError\")]\n        [JsonProperty(\"attachError\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeErrorV1 AttachError { get; set; }\n\n        /// <summary>\n        ///     detachError represents the last error encountered during detach operation, if any. This field must only be set by the entity completing the detach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"detachError\")]\n        [JsonProperty(\"detachError\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeErrorV1 DetachError { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentStatusV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentStatus is the status of a VolumeAttachment request.\n    /// </summary>\n    public partial class VolumeAttachmentStatusV1Alpha1\n    {\n        /// <summary>\n        ///     Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attachmentMetadata\")]\n        [JsonProperty(\"attachmentMetadata\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> AttachmentMetadata { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AttachmentMetadata\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAttachmentMetadata() => AttachmentMetadata.Count > 0;\n\n        /// <summary>\n        ///     Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attached\")]\n        [JsonProperty(\"attached\", NullValueHandling = NullValueHandling.Include)]\n        public bool Attached { get; set; }\n\n        /// <summary>\n        ///     The last error encountered during attach operation, if any. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attachError\")]\n        [JsonProperty(\"attachError\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeErrorV1Alpha1 AttachError { get; set; }\n\n        /// <summary>\n        ///     The last error encountered during detach operation, if any. This field must only be set by the entity completing the detach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"detachError\")]\n        [JsonProperty(\"detachError\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeErrorV1Alpha1 DetachError { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentStatusV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachmentStatus is the status of a VolumeAttachment request.\n    /// </summary>\n    public partial class VolumeAttachmentStatusV1Beta1\n    {\n        /// <summary>\n        ///     Upon successful attach, this field is populated with any information returned by the attach operation that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attachmentMetadata\")]\n        [JsonProperty(\"attachmentMetadata\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> AttachmentMetadata { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"AttachmentMetadata\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeAttachmentMetadata() => AttachmentMetadata.Count > 0;\n\n        /// <summary>\n        ///     Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attached\")]\n        [JsonProperty(\"attached\", NullValueHandling = NullValueHandling.Include)]\n        public bool Attached { get; set; }\n\n        /// <summary>\n        ///     The last error encountered during attach operation, if any. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"attachError\")]\n        [JsonProperty(\"attachError\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeErrorV1Beta1 AttachError { get; set; }\n\n        /// <summary>\n        ///     The last error encountered during detach operation, if any. This field must only be set by the entity completing the detach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"detachError\")]\n        [JsonProperty(\"detachError\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeErrorV1Beta1 DetachError { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n    ///     \n    ///     VolumeAttachment objects are non-namespaced.\n    /// </summary>\n    [KubeObject(\"VolumeAttachment\", \"storage.k8s.io/v1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1/volumeattachments\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1/volumeattachments\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1/watch/volumeattachments\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1/volumeattachments\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1/volumeattachments/{name}/status\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1/watch/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1/volumeattachments/{name}/status\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1/volumeattachments/{name}/status\")]\n    public partial class VolumeAttachmentV1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     spec represents specification of the desired attach/detach volume behavior. Populated by the Kubernetes system.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public VolumeAttachmentSpecV1 Spec { get; set; }\n\n        /// <summary>\n        ///     status represents status of the VolumeAttachment request. Populated by the entity completing the attach or detach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeAttachmentStatusV1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n    ///     \n    ///     VolumeAttachment objects are non-namespaced.\n    /// </summary>\n    [KubeObject(\"VolumeAttachment\", \"storage.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1alpha1/volumeattachments\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1alpha1/volumeattachments\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1alpha1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1alpha1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1alpha1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1alpha1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1alpha1/watch/volumeattachments\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1alpha1/volumeattachments\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1alpha1/watch/volumeattachments/{name}\")]\n    public partial class VolumeAttachmentV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired attach/detach volume behavior. Populated by the Kubernetes system.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public VolumeAttachmentSpecV1Alpha1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status of the VolumeAttachment request. Populated by the entity completing the attach or detach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeAttachmentStatusV1Alpha1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttachmentV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n    ///     \n    ///     VolumeAttachment objects are non-namespaced.\n    /// </summary>\n    [KubeObject(\"VolumeAttachment\", \"storage.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1beta1/volumeattachments\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1beta1/volumeattachments\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1beta1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1beta1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1beta1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1beta1/volumeattachments/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1beta1/watch/volumeattachments\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1beta1/volumeattachments\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1beta1/watch/volumeattachments/{name}\")]\n    public partial class VolumeAttachmentV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Specification of the desired attach/detach volume behavior. Populated by the Kubernetes system.\n        /// </summary>\n        [YamlMember(Alias = \"spec\")]\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Include)]\n        public VolumeAttachmentSpecV1Beta1 Spec { get; set; }\n\n        /// <summary>\n        ///     Status of the VolumeAttachment request. Populated by the entity completing the attach or detach operation, i.e. the external-attacher.\n        /// </summary>\n        [YamlMember(Alias = \"status\")]\n        [JsonProperty(\"status\", NullValueHandling = NullValueHandling.Ignore)]\n        public VolumeAttachmentStatusV1Beta1 Status { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttributesClassListV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttributesClassList is a collection of VolumeAttributesClass objects.\n    /// </summary>\n    [KubeListItem(\"VolumeAttributesClass\", \"storage.k8s.io/v1alpha1\")]\n    [KubeObject(\"VolumeAttributesClassList\", \"storage.k8s.io/v1alpha1\")]\n    public partial class VolumeAttributesClassListV1Alpha1 : KubeResourceListV1<VolumeAttributesClassV1Alpha1>\n    {\n        /// <summary>\n        ///     items is the list of VolumeAttributesClass objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<VolumeAttributesClassV1Alpha1> Items { get; } = new List<VolumeAttributesClassV1Alpha1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttributesClassListV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttributesClassList is a collection of VolumeAttributesClass objects.\n    /// </summary>\n    [KubeListItem(\"VolumeAttributesClass\", \"storage.k8s.io/v1beta1\")]\n    [KubeObject(\"VolumeAttributesClassList\", \"storage.k8s.io/v1beta1\")]\n    public partial class VolumeAttributesClassListV1Beta1 : KubeResourceListV1<VolumeAttributesClassV1Beta1>\n    {\n        /// <summary>\n        ///     items is the list of VolumeAttributesClass objects.\n        /// </summary>\n        [JsonProperty(\"items\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public override List<VolumeAttributesClassV1Beta1> Items { get; } = new List<VolumeAttributesClassV1Beta1>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttributesClassV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning.\n    /// </summary>\n    [KubeObject(\"VolumeAttributesClass\", \"storage.k8s.io/v1alpha1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1alpha1/volumeattributesclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1alpha1/volumeattributesclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1alpha1/watch/volumeattributesclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1alpha1/volumeattributesclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1alpha1/watch/volumeattributesclasses/{name}\")]\n    public partial class VolumeAttributesClassV1Alpha1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Name of the CSI driver This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"driverName\")]\n        [JsonProperty(\"driverName\", NullValueHandling = NullValueHandling.Include)]\n        public string DriverName { get; set; }\n\n        /// <summary>\n        ///     parameters hold volume attributes defined by the CSI driver. These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass.\n        ///     \n        ///     This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an \"Infeasible\" state in the modifyVolumeStatus field.\n        /// </summary>\n        [YamlMember(Alias = \"parameters\")]\n        [JsonProperty(\"parameters\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Parameters { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Parameters\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeParameters() => Parameters.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeAttributesClassV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning.\n    /// </summary>\n    [KubeObject(\"VolumeAttributesClass\", \"storage.k8s.io/v1beta1\")]\n    [KubeApi(KubeAction.List, \"apis/storage.k8s.io/v1beta1/volumeattributesclasses\")]\n    [KubeApi(KubeAction.Create, \"apis/storage.k8s.io/v1beta1/volumeattributesclasses\")]\n    [KubeApi(KubeAction.Get, \"apis/storage.k8s.io/v1beta1/volumeattributesclasses/{name}\")]\n    [KubeApi(KubeAction.Patch, \"apis/storage.k8s.io/v1beta1/volumeattributesclasses/{name}\")]\n    [KubeApi(KubeAction.Delete, \"apis/storage.k8s.io/v1beta1/volumeattributesclasses/{name}\")]\n    [KubeApi(KubeAction.Update, \"apis/storage.k8s.io/v1beta1/volumeattributesclasses/{name}\")]\n    [KubeApi(KubeAction.WatchList, \"apis/storage.k8s.io/v1beta1/watch/volumeattributesclasses\")]\n    [KubeApi(KubeAction.DeleteCollection, \"apis/storage.k8s.io/v1beta1/volumeattributesclasses\")]\n    [KubeApi(KubeAction.Watch, \"apis/storage.k8s.io/v1beta1/watch/volumeattributesclasses/{name}\")]\n    public partial class VolumeAttributesClassV1Beta1 : KubeResourceV1\n    {\n        /// <summary>\n        ///     Name of the CSI driver This field is immutable.\n        /// </summary>\n        [YamlMember(Alias = \"driverName\")]\n        [JsonProperty(\"driverName\", NullValueHandling = NullValueHandling.Include)]\n        public string DriverName { get; set; }\n\n        /// <summary>\n        ///     parameters hold volume attributes defined by the CSI driver. These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass.\n        ///     \n        ///     This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an \"Infeasible\" state in the modifyVolumeStatus field.\n        /// </summary>\n        [YamlMember(Alias = \"parameters\")]\n        [JsonProperty(\"parameters\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Parameters { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Parameters\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeParameters() => Parameters.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeDeviceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     volumeDevice describes a mapping of a raw block device within a container.\n    /// </summary>\n    public partial class VolumeDeviceV1\n    {\n        /// <summary>\n        ///     name must match the name of a persistentVolumeClaim in the pod\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     devicePath is the path inside of the container that the device will be mapped to.\n        /// </summary>\n        [YamlMember(Alias = \"devicePath\")]\n        [JsonProperty(\"devicePath\", NullValueHandling = NullValueHandling.Include)]\n        public string DevicePath { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeErrorV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeError captures an error encountered during a volume operation.\n    /// </summary>\n    public partial class VolumeErrorV1\n    {\n        /// <summary>\n        ///     message represents the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     time represents the time the error was encountered.\n        /// </summary>\n        [YamlMember(Alias = \"time\")]\n        [JsonProperty(\"time\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? Time { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeErrorV1Alpha1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeError captures an error encountered during a volume operation.\n    /// </summary>\n    public partial class VolumeErrorV1Alpha1\n    {\n        /// <summary>\n        ///     String detailing the error encountered during Attach or Detach operation. This string maybe logged, so it should not contain sensitive information.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Time the error was encountered.\n        /// </summary>\n        [YamlMember(Alias = \"time\")]\n        [JsonProperty(\"time\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? Time { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeErrorV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeError captures an error encountered during a volume operation.\n    /// </summary>\n    public partial class VolumeErrorV1Beta1\n    {\n        /// <summary>\n        ///     String detailing the error encountered during Attach or Detach operation. This string maybe logged, so it should not contain sensitive information.\n        /// </summary>\n        [YamlMember(Alias = \"message\")]\n        [JsonProperty(\"message\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Message { get; set; }\n\n        /// <summary>\n        ///     Time the error was encountered.\n        /// </summary>\n        [YamlMember(Alias = \"time\")]\n        [JsonProperty(\"time\", NullValueHandling = NullValueHandling.Ignore)]\n        public DateTime? Time { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeMountStatusV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeMountStatus shows status of volume mounts.\n    /// </summary>\n    public partial class VolumeMountStatusV1\n    {\n        /// <summary>\n        ///     Name corresponds to the name of the original VolumeMount.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     MountPath corresponds to the original VolumeMount.\n        /// </summary>\n        [YamlMember(Alias = \"mountPath\")]\n        [JsonProperty(\"mountPath\", NullValueHandling = NullValueHandling.Include)]\n        public string MountPath { get; set; }\n\n        /// <summary>\n        ///     ReadOnly corresponds to the original VolumeMount.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n\n        /// <summary>\n        ///     RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts). An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled, depending on the mount result.\n        /// </summary>\n        [YamlMember(Alias = \"recursiveReadOnly\")]\n        [JsonProperty(\"recursiveReadOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RecursiveReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeMountV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeMount describes a mounting of a Volume within a container.\n    /// </summary>\n    public partial class VolumeMountV1\n    {\n        /// <summary>\n        ///     This must match the Name of a Volume.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     Path within the container at which the volume should be mounted.  Must not contain ':'.\n        /// </summary>\n        [YamlMember(Alias = \"mountPath\")]\n        [JsonProperty(\"mountPath\", NullValueHandling = NullValueHandling.Include)]\n        public string MountPath { get; set; }\n\n        /// <summary>\n        ///     Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).\n        /// </summary>\n        [YamlMember(Alias = \"subPath\")]\n        [JsonProperty(\"subPath\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SubPath { get; set; }\n\n        /// <summary>\n        ///     mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified (which defaults to None).\n        /// </summary>\n        [YamlMember(Alias = \"mountPropagation\")]\n        [JsonProperty(\"mountPropagation\", NullValueHandling = NullValueHandling.Ignore)]\n        public string MountPropagation { get; set; }\n\n        /// <summary>\n        ///     Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\n        /// </summary>\n        [YamlMember(Alias = \"subPathExpr\")]\n        [JsonProperty(\"subPathExpr\", NullValueHandling = NullValueHandling.Ignore)]\n        public string SubPathExpr { get; set; }\n\n        /// <summary>\n        ///     Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\n        /// </summary>\n        [YamlMember(Alias = \"readOnly\")]\n        [JsonProperty(\"readOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? ReadOnly { get; set; }\n\n        /// <summary>\n        ///     RecursiveReadOnly specifies whether read-only mounts should be handled recursively.\n        ///     \n        ///     If ReadOnly is false, this field has no meaning and must be unspecified.\n        ///     \n        ///     If ReadOnly is true, and this field is set to Disabled, the mount is not made recursively read-only.  If this field is set to IfPossible, the mount is made recursively read-only, if it is supported by the container runtime.  If this field is set to Enabled, the mount is made recursively read-only if it is supported by the container runtime, otherwise the pod will not be started and an error will be generated to indicate the reason.\n        ///     \n        ///     If this field is set to IfPossible or Enabled, MountPropagation must be set to None (or be unspecified, which defaults to None).\n        ///     \n        ///     If this field is not specified, it is treated as an equivalent of Disabled.\n        /// </summary>\n        [YamlMember(Alias = \"recursiveReadOnly\")]\n        [JsonProperty(\"recursiveReadOnly\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RecursiveReadOnly { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeNodeAffinityV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.\n    /// </summary>\n    public partial class VolumeNodeAffinityV1\n    {\n        /// <summary>\n        ///     required specifies hard node constraints that must be met.\n        /// </summary>\n        [YamlMember(Alias = \"required\")]\n        [JsonProperty(\"required\", NullValueHandling = NullValueHandling.Ignore)]\n        public NodeSelectorV1 Required { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeNodeResourcesV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeNodeResources is a set of resource limits for scheduling of volumes.\n    /// </summary>\n    public partial class VolumeNodeResourcesV1\n    {\n        /// <summary>\n        ///     count indicates the maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded.\n        /// </summary>\n        [YamlMember(Alias = \"count\")]\n        [JsonProperty(\"count\", NullValueHandling = NullValueHandling.Ignore)]\n        public int? Count { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeProjectionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Projection that may be projected along with other supported volume types. Exactly one of these fields must be set.\n    /// </summary>\n    public partial class VolumeProjectionV1\n    {\n        /// <summary>\n        ///     downwardAPI information about the downwardAPI data to project\n        /// </summary>\n        [YamlMember(Alias = \"downwardAPI\")]\n        [JsonProperty(\"downwardAPI\", NullValueHandling = NullValueHandling.Ignore)]\n        public DownwardAPIProjectionV1 DownwardAPI { get; set; }\n\n        /// <summary>\n        ///     ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file.\n        ///     \n        ///     Alpha, gated by the ClusterTrustBundleProjection feature gate.\n        ///     \n        ///     ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector.\n        ///     \n        ///     Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem.  Esoteric PEM features such as inter-block comments and block headers are stripped.  Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.\n        /// </summary>\n        [YamlMember(Alias = \"clusterTrustBundle\")]\n        [JsonProperty(\"clusterTrustBundle\", NullValueHandling = NullValueHandling.Ignore)]\n        public ClusterTrustBundleProjectionV1 ClusterTrustBundle { get; set; }\n\n        /// <summary>\n        ///     serviceAccountToken is information about the serviceAccountToken data to project\n        /// </summary>\n        [YamlMember(Alias = \"serviceAccountToken\")]\n        [JsonProperty(\"serviceAccountToken\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceAccountTokenProjectionV1 ServiceAccountToken { get; set; }\n\n        /// <summary>\n        ///     configMap information about the configMap data to project\n        /// </summary>\n        [YamlMember(Alias = \"configMap\")]\n        [JsonProperty(\"configMap\", NullValueHandling = NullValueHandling.Ignore)]\n        public ConfigMapProjectionV1 ConfigMap { get; set; }\n\n        /// <summary>\n        ///     secret information about the secret data to project\n        /// </summary>\n        [YamlMember(Alias = \"secret\")]\n        [JsonProperty(\"secret\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretProjectionV1 Secret { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeResourceRequirementsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     VolumeResourceRequirements describes the storage resource requirements for a volume.\n    /// </summary>\n    public partial class VolumeResourceRequirementsV1\n    {\n        /// <summary>\n        ///     Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n        /// </summary>\n        [YamlMember(Alias = \"limits\")]\n        [JsonProperty(\"limits\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Limits { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Limits\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeLimits() => Limits.Count > 0;\n\n        /// <summary>\n        ///     Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\n        /// </summary>\n        [YamlMember(Alias = \"requests\")]\n        [JsonProperty(\"requests\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public Dictionary<string, string> Requests { get; } = new Dictionary<string, string>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Requests\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRequests() => Requests.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VolumeV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Volume represents a named volume in a pod that may be accessed by any container in the pod.\n    /// </summary>\n    public partial class VolumeV1\n    {\n        /// <summary>\n        ///     downwardAPI represents downward API about the pod that should populate this volume\n        /// </summary>\n        [YamlMember(Alias = \"downwardAPI\")]\n        [JsonProperty(\"downwardAPI\", NullValueHandling = NullValueHandling.Ignore)]\n        public DownwardAPIVolumeSourceV1 DownwardAPI { get; set; }\n\n        /// <summary>\n        ///     scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\n        /// </summary>\n        [YamlMember(Alias = \"scaleIO\")]\n        [JsonProperty(\"scaleIO\", NullValueHandling = NullValueHandling.Ignore)]\n        public ScaleIOVolumeSourceV1 ScaleIO { get; set; }\n\n        /// <summary>\n        ///     fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\n        /// </summary>\n        [YamlMember(Alias = \"fc\")]\n        [JsonProperty(\"fc\", NullValueHandling = NullValueHandling.Ignore)]\n        public FCVolumeSourceV1 Fc { get; set; }\n\n        /// <summary>\n        ///     projected items for all in one resources secrets, configmaps, and downward API\n        /// </summary>\n        [YamlMember(Alias = \"projected\")]\n        [JsonProperty(\"projected\", NullValueHandling = NullValueHandling.Ignore)]\n        public ProjectedVolumeSourceV1 Projected { get; set; }\n\n        /// <summary>\n        ///     rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"rbd\")]\n        [JsonProperty(\"rbd\", NullValueHandling = NullValueHandling.Ignore)]\n        public RBDVolumeSourceV1 Rbd { get; set; }\n\n        /// <summary>\n        ///     awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n        /// </summary>\n        [YamlMember(Alias = \"awsElasticBlockStore\")]\n        [JsonProperty(\"awsElasticBlockStore\", NullValueHandling = NullValueHandling.Ignore)]\n        public AWSElasticBlockStoreVolumeSourceV1 AwsElasticBlockStore { get; set; }\n\n        /// <summary>\n        ///     azureFile represents an Azure File Service mount on the host and bind mount to the pod.\n        /// </summary>\n        [YamlMember(Alias = \"azureFile\")]\n        [JsonProperty(\"azureFile\", NullValueHandling = NullValueHandling.Ignore)]\n        public AzureFileVolumeSourceV1 AzureFile { get; set; }\n\n        /// <summary>\n        ///     flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\n        /// </summary>\n        [YamlMember(Alias = \"flexVolume\")]\n        [JsonProperty(\"flexVolume\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlexVolumeSourceV1 FlexVolume { get; set; }\n\n        /// <summary>\n        ///     image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. The volume is resolved at pod startup depending on which PullPolicy value is provided:\n        ///     \n        ///     - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n        ///     \n        ///     The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. The volume will be mounted read-only (ro) and non-executable files (noexec). Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.\n        /// </summary>\n        [YamlMember(Alias = \"image\")]\n        [JsonProperty(\"image\", NullValueHandling = NullValueHandling.Ignore)]\n        public ImageVolumeSourceV1 Image { get; set; }\n\n        /// <summary>\n        ///     name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     portworxVolume represents a portworx volume attached and mounted on kubelets host machine\n        /// </summary>\n        [YamlMember(Alias = \"portworxVolume\")]\n        [JsonProperty(\"portworxVolume\", NullValueHandling = NullValueHandling.Ignore)]\n        public PortworxVolumeSourceV1 PortworxVolume { get; set; }\n\n        /// <summary>\n        ///     quobyte represents a Quobyte mount on the host that shares a pod's lifetime\n        /// </summary>\n        [YamlMember(Alias = \"quobyte\")]\n        [JsonProperty(\"quobyte\", NullValueHandling = NullValueHandling.Ignore)]\n        public QuobyteVolumeSourceV1 Quobyte { get; set; }\n\n        /// <summary>\n        ///     vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\n        /// </summary>\n        [YamlMember(Alias = \"vsphereVolume\")]\n        [JsonProperty(\"vsphereVolume\", NullValueHandling = NullValueHandling.Ignore)]\n        public VsphereVirtualDiskVolumeSourceV1 VsphereVolume { get; set; }\n\n        /// <summary>\n        ///     hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n        /// </summary>\n        [YamlMember(Alias = \"hostPath\")]\n        [JsonProperty(\"hostPath\", NullValueHandling = NullValueHandling.Ignore)]\n        public HostPathVolumeSourceV1 HostPath { get; set; }\n\n        /// <summary>\n        ///     csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\n        /// </summary>\n        [YamlMember(Alias = \"csi\")]\n        [JsonProperty(\"csi\", NullValueHandling = NullValueHandling.Ignore)]\n        public CSIVolumeSourceV1 Csi { get; set; }\n\n        /// <summary>\n        ///     iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md\n        /// </summary>\n        [YamlMember(Alias = \"iscsi\")]\n        [JsonProperty(\"iscsi\", NullValueHandling = NullValueHandling.Ignore)]\n        public ISCSIVolumeSourceV1 Iscsi { get; set; }\n\n        /// <summary>\n        ///     azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\n        /// </summary>\n        [YamlMember(Alias = \"azureDisk\")]\n        [JsonProperty(\"azureDisk\", NullValueHandling = NullValueHandling.Ignore)]\n        public AzureDiskVolumeSourceV1 AzureDisk { get; set; }\n\n        /// <summary>\n        ///     gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n        /// </summary>\n        [YamlMember(Alias = \"gcePersistentDisk\")]\n        [JsonProperty(\"gcePersistentDisk\", NullValueHandling = NullValueHandling.Ignore)]\n        public GCEPersistentDiskVolumeSourceV1 GcePersistentDisk { get; set; }\n\n        /// <summary>\n        ///     photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\n        /// </summary>\n        [YamlMember(Alias = \"photonPersistentDisk\")]\n        [JsonProperty(\"photonPersistentDisk\", NullValueHandling = NullValueHandling.Ignore)]\n        public PhotonPersistentDiskVolumeSourceV1 PhotonPersistentDisk { get; set; }\n\n        /// <summary>\n        ///     ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.\n        ///     \n        ///     Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity\n        ///        tracking are needed,\n        ///     c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through\n        ///        a PersistentVolumeClaim (see EphemeralVolumeSource for more\n        ///        information on the connection between this volume type\n        ///        and PersistentVolumeClaim).\n        ///     \n        ///     Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod.\n        ///     \n        ///     Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information.\n        ///     \n        ///     A pod can use both types of ephemeral volumes and persistent volumes at the same time.\n        /// </summary>\n        [YamlMember(Alias = \"ephemeral\")]\n        [JsonProperty(\"ephemeral\", NullValueHandling = NullValueHandling.Ignore)]\n        public EphemeralVolumeSourceV1 Ephemeral { get; set; }\n\n        /// <summary>\n        ///     persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\n        /// </summary>\n        [YamlMember(Alias = \"persistentVolumeClaim\")]\n        [JsonProperty(\"persistentVolumeClaim\", NullValueHandling = NullValueHandling.Ignore)]\n        public PersistentVolumeClaimVolumeSourceV1 PersistentVolumeClaim { get; set; }\n\n        /// <summary>\n        ///     gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.\n        /// </summary>\n        [YamlMember(Alias = \"gitRepo\")]\n        [JsonProperty(\"gitRepo\", NullValueHandling = NullValueHandling.Ignore)]\n        public GitRepoVolumeSourceV1 GitRepo { get; set; }\n\n        /// <summary>\n        ///     configMap represents a configMap that should populate this volume\n        /// </summary>\n        [YamlMember(Alias = \"configMap\")]\n        [JsonProperty(\"configMap\", NullValueHandling = NullValueHandling.Ignore)]\n        public ConfigMapVolumeSourceV1 ConfigMap { get; set; }\n\n        /// <summary>\n        ///     cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\n        /// </summary>\n        [YamlMember(Alias = \"cinder\")]\n        [JsonProperty(\"cinder\", NullValueHandling = NullValueHandling.Ignore)]\n        public CinderVolumeSourceV1 Cinder { get; set; }\n\n        /// <summary>\n        ///     emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\n        /// </summary>\n        [YamlMember(Alias = \"emptyDir\")]\n        [JsonProperty(\"emptyDir\", NullValueHandling = NullValueHandling.Ignore)]\n        public EmptyDirVolumeSourceV1 EmptyDir { get; set; }\n\n        /// <summary>\n        ///     flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\n        /// </summary>\n        [YamlMember(Alias = \"flocker\")]\n        [JsonProperty(\"flocker\", NullValueHandling = NullValueHandling.Ignore)]\n        public FlockerVolumeSourceV1 Flocker { get; set; }\n\n        /// <summary>\n        ///     cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\n        /// </summary>\n        [YamlMember(Alias = \"cephfs\")]\n        [JsonProperty(\"cephfs\", NullValueHandling = NullValueHandling.Ignore)]\n        public CephFSVolumeSourceV1 Cephfs { get; set; }\n\n        /// <summary>\n        ///     glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md\n        /// </summary>\n        [YamlMember(Alias = \"glusterfs\")]\n        [JsonProperty(\"glusterfs\", NullValueHandling = NullValueHandling.Ignore)]\n        public GlusterfsVolumeSourceV1 Glusterfs { get; set; }\n\n        /// <summary>\n        ///     nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n        /// </summary>\n        [YamlMember(Alias = \"nfs\")]\n        [JsonProperty(\"nfs\", NullValueHandling = NullValueHandling.Ignore)]\n        public NFSVolumeSourceV1 Nfs { get; set; }\n\n        /// <summary>\n        ///     storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\n        /// </summary>\n        [YamlMember(Alias = \"storageos\")]\n        [JsonProperty(\"storageos\", NullValueHandling = NullValueHandling.Ignore)]\n        public StorageOSVolumeSourceV1 Storageos { get; set; }\n\n        /// <summary>\n        ///     secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n        /// </summary>\n        [YamlMember(Alias = \"secret\")]\n        [JsonProperty(\"secret\", NullValueHandling = NullValueHandling.Ignore)]\n        public SecretVolumeSourceV1 Secret { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/VsphereVirtualDiskVolumeSourceV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Represents a vSphere volume resource.\n    /// </summary>\n    public partial class VsphereVirtualDiskVolumeSourceV1\n    {\n        /// <summary>\n        ///     storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n        /// </summary>\n        [YamlMember(Alias = \"storagePolicyID\")]\n        [JsonProperty(\"storagePolicyID\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StoragePolicyID { get; set; }\n\n        /// <summary>\n        ///     fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n        /// </summary>\n        [YamlMember(Alias = \"fsType\")]\n        [JsonProperty(\"fsType\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FsType { get; set; }\n\n        /// <summary>\n        ///     storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n        /// </summary>\n        [YamlMember(Alias = \"storagePolicyName\")]\n        [JsonProperty(\"storagePolicyName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string StoragePolicyName { get; set; }\n\n        /// <summary>\n        ///     volumePath is the path that identifies vSphere volume vmdk\n        /// </summary>\n        [YamlMember(Alias = \"volumePath\")]\n        [JsonProperty(\"volumePath\", NullValueHandling = NullValueHandling.Include)]\n        public string VolumePath { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/WatchEventV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Event represents a single event to a watched resource.\n    /// </summary>\n    public partial class WatchEventV1\n    {\n        /// <summary>\n        ///     Description not provided.\n        /// </summary>\n        [YamlMember(Alias = \"type\")]\n        [JsonProperty(\"type\", NullValueHandling = NullValueHandling.Include)]\n        public string Type { get; set; }\n\n        /// <summary>\n        ///     Object is:\n        ///      * If Type is Added or Modified: the new state of the object.\n        ///      * If Type is Deleted: the state of the object immediately before deletion.\n        ///      * If Type is Error: *Status is recommended; other types may make sense\n        ///        depending on context.\n        /// </summary>\n        [YamlMember(Alias = \"object\")]\n        [JsonProperty(\"object\", NullValueHandling = NullValueHandling.Include)]\n        public RawExtensionRuntime Object { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/WebhookClientConfigV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     WebhookClientConfig contains the information to make a TLS connection with the webhook.\n    /// </summary>\n    public partial class WebhookClientConfigV1\n    {\n        /// <summary>\n        ///     caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.\n        /// </summary>\n        [YamlMember(Alias = \"caBundle\")]\n        [JsonProperty(\"caBundle\", NullValueHandling = NullValueHandling.Ignore)]\n        public string CaBundle { get; set; }\n\n        /// <summary>\n        ///     service is a reference to the service for this webhook. Either service or url must be specified.\n        ///     \n        ///     If the webhook is running within the cluster, then you should use `service`.\n        /// </summary>\n        [YamlMember(Alias = \"service\")]\n        [JsonProperty(\"service\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceReferenceV1 Service { get; set; }\n\n        /// <summary>\n        ///     url gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n        ///     \n        ///     The `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n        ///     \n        ///     Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n        ///     \n        ///     The scheme must be \"https\"; the URL must begin with \"https://\".\n        ///     \n        ///     A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n        ///     \n        ///     Attempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either.\n        /// </summary>\n        [YamlMember(Alias = \"url\")]\n        [JsonProperty(\"url\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Url { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/WebhookClientConfigV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     WebhookClientConfig contains the information to make a TLS connection with the webhook\n    /// </summary>\n    public partial class WebhookClientConfigV1Beta1\n    {\n        /// <summary>\n        ///     `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. Required.\n        /// </summary>\n        [YamlMember(Alias = \"caBundle\")]\n        [JsonProperty(\"caBundle\", NullValueHandling = NullValueHandling.Include)]\n        public string CaBundle { get; set; }\n\n        /// <summary>\n        ///     `service` is a reference to the service for this webhook. Either `service` or `url` must be specified.\n        ///     \n        ///     If the webhook is running within the cluster, then you should use `service`.\n        ///     \n        ///     Port 443 will be used if it is open, otherwise it is an error.\n        /// </summary>\n        [YamlMember(Alias = \"service\")]\n        [JsonProperty(\"service\", NullValueHandling = NullValueHandling.Ignore)]\n        public ServiceReferenceV1Beta1 Service { get; set; }\n\n        /// <summary>\n        ///     `url` gives the location of the webhook, in standard URL form (`[scheme://]host:port/path`). Exactly one of `url` or `service` must be specified.\n        ///     \n        ///     The `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n        ///     \n        ///     Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n        ///     \n        ///     The scheme must be \"https\"; the URL must begin with \"https://\".\n        ///     \n        ///     A path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n        ///     \n        ///     Attempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either.\n        /// </summary>\n        [YamlMember(Alias = \"url\")]\n        [JsonProperty(\"url\", NullValueHandling = NullValueHandling.Ignore)]\n        public string Url { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/WebhookConversionV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     WebhookConversion describes how to call a conversion webhook\n    /// </summary>\n    public partial class WebhookConversionV1\n    {\n        /// <summary>\n        ///     clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.\n        /// </summary>\n        [YamlMember(Alias = \"clientConfig\")]\n        [JsonProperty(\"clientConfig\", NullValueHandling = NullValueHandling.Ignore)]\n        public WebhookClientConfigV1 ClientConfig { get; set; }\n\n        /// <summary>\n        ///     conversionReviewVersions is an ordered list of preferred `ConversionReview` versions the Webhook expects. The API server will use the first version in the list which it supports. If none of the versions specified in this list are supported by API server, conversion will fail for the custom resource. If a persisted Webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail.\n        /// </summary>\n        [YamlMember(Alias = \"conversionReviewVersions\")]\n        [JsonProperty(\"conversionReviewVersions\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<string> ConversionReviewVersions { get; } = new List<string>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/WebhookV1Beta1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     Webhook describes an admission webhook and the resources and operations it applies to.\n    /// </summary>\n    public partial class WebhookV1Beta1\n    {\n        /// <summary>\n        ///     The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        [JsonProperty(\"name\", NullValueHandling = NullValueHandling.Include)]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     ClientConfig defines how to communicate with the hook. Required\n        /// </summary>\n        [YamlMember(Alias = \"clientConfig\")]\n        [JsonProperty(\"clientConfig\", NullValueHandling = NullValueHandling.Include)]\n        public WebhookClientConfigV1Beta1 ClientConfig { get; set; }\n\n        /// <summary>\n        ///     NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook.\n        ///     \n        ///     For example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\";  you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"runlevel\",\n        ///           \"operator\": \"NotIn\",\n        ///           \"values\": [\n        ///             \"0\",\n        ///             \"1\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     If instead you want to only run the webhook on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n        ///       \"matchExpressions\": [\n        ///         {\n        ///           \"key\": \"environment\",\n        ///           \"operator\": \"In\",\n        ///           \"values\": [\n        ///             \"prod\",\n        ///             \"staging\"\n        ///           ]\n        ///         }\n        ///       ]\n        ///     }\n        ///     \n        ///     See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n        ///     \n        ///     Default to the empty LabelSelector, which matches everything.\n        /// </summary>\n        [YamlMember(Alias = \"namespaceSelector\")]\n        [JsonProperty(\"namespaceSelector\", NullValueHandling = NullValueHandling.Ignore)]\n        public LabelSelectorV1 NamespaceSelector { get; set; }\n\n        /// <summary>\n        ///     Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n        /// </summary>\n        [YamlMember(Alias = \"rules\")]\n        [JsonProperty(\"rules\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]\n        public List<RuleWithOperationsV1Beta1> Rules { get; } = new List<RuleWithOperationsV1Beta1>();\n\n        /// <summary>\n        ///     Determine whether the <see cref=\"Rules\"/> property should be serialised.\n        /// </summary>\n        public bool ShouldSerializeRules() => Rules.Count > 0;\n\n        /// <summary>\n        ///     FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.\n        /// </summary>\n        [YamlMember(Alias = \"failurePolicy\")]\n        [JsonProperty(\"failurePolicy\", NullValueHandling = NullValueHandling.Ignore)]\n        public string FailurePolicy { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/WeightedPodAffinityTermV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\n    /// </summary>\n    public partial class WeightedPodAffinityTermV1\n    {\n        /// <summary>\n        ///     Required. A pod affinity term, associated with the corresponding weight.\n        /// </summary>\n        [YamlMember(Alias = \"podAffinityTerm\")]\n        [JsonProperty(\"podAffinityTerm\", NullValueHandling = NullValueHandling.Include)]\n        public PodAffinityTermV1 PodAffinityTerm { get; set; }\n\n        /// <summary>\n        ///     weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\n        /// </summary>\n        [YamlMember(Alias = \"weight\")]\n        [JsonProperty(\"weight\", NullValueHandling = NullValueHandling.Include)]\n        public int Weight { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Models/generated/WindowsSecurityContextOptionsV1.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     WindowsSecurityContextOptions contain Windows-specific options and credentials.\n    /// </summary>\n    public partial class WindowsSecurityContextOptionsV1\n    {\n        /// <summary>\n        ///     GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\n        /// </summary>\n        [YamlMember(Alias = \"gmsaCredentialSpec\")]\n        [JsonProperty(\"gmsaCredentialSpec\", NullValueHandling = NullValueHandling.Ignore)]\n        public string GmsaCredentialSpec { get; set; }\n\n        /// <summary>\n        ///     GMSACredentialSpecName is the name of the GMSA credential spec to use.\n        /// </summary>\n        [YamlMember(Alias = \"gmsaCredentialSpecName\")]\n        [JsonProperty(\"gmsaCredentialSpecName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string GmsaCredentialSpecName { get; set; }\n\n        /// <summary>\n        ///     The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\n        /// </summary>\n        [YamlMember(Alias = \"runAsUserName\")]\n        [JsonProperty(\"runAsUserName\", NullValueHandling = NullValueHandling.Ignore)]\n        public string RunAsUserName { get; set; }\n\n        /// <summary>\n        ///     HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\n        /// </summary>\n        [YamlMember(Alias = \"hostProcess\")]\n        [JsonProperty(\"hostProcess\", NullValueHandling = NullValueHandling.Ignore)]\n        public bool? HostProcess { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClientExtensions.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient\n{\n    using ApiMetadata;\n    using Models;\n    using ResourceClients;\n    using System.Text;\n\n    /// <summary>\n    ///     Extension methods for various K8s resource clients.\n    /// </summary>\n    public static class ResourceClientExtensions\n    {\n        /// <summary>\n        ///     Update (PATCH) an existing Deployment.\n        /// </summary>\n        /// <param name=\"deploymentClient\">\n        ///     The Kubernetes Deployment (v1) API client.\n        /// </param>\n        /// <param name=\"existingDeployment\">\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment to update.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment's current state.\n        /// </returns>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <remarks>\n        ///     The state of <paramref name=\"existingDeployment\"/> is not used for update; it is simply convenient shorthand for specifying the deployment's name and namespace.\n        /// </remarks>\n        public static async Task<DeploymentV1> UpdateDeployment(this IDeploymentClientV1 deploymentClient, DeploymentV1 existingDeployment, Action<JsonPatchDocument<DeploymentV1>> patchAction, CancellationToken cancellationToken = default)\n        {\n            if (deploymentClient == null)\n                throw new ArgumentNullException(nameof(deploymentClient));\n\n            if (existingDeployment == null)\n                throw new ArgumentNullException(nameof(existingDeployment));\n            \n            DeploymentV1 updatedDeployment = await deploymentClient.Update(existingDeployment.Metadata.Name, patchAction, existingDeployment.Metadata.Namespace, cancellationToken);\n\n            // Re-fetch Deployment state so we pick up annotations added or updated by the controller.\n            updatedDeployment = await deploymentClient.Get(updatedDeployment.Metadata.Name, updatedDeployment.Metadata.Namespace, cancellationToken);\n\n            return updatedDeployment;\n        }\n\n        /// <summary>\n        ///     Find the ReplicaSet that corresponds to the specified revision of the specified Deployment.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"deployment\">\n        ///     The target Deployment.\n        /// </param>\n        /// <param name=\"targetRevision\">\n        ///     The target revision.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the ReplicaSet's current state; <c>null</c>, if no corresponding ReplicaSet was found.\n        /// </returns>\n        public static async Task<ReplicaSetV1> FindReplicaSetForRevision(IKubeApiClient client, DeploymentV1 deployment, int targetRevision, CancellationToken cancellationToken = default)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (deployment == null)\n                throw new ArgumentNullException(nameof(deployment));\n\n            string matchLabelSelector = deployment.GetLabelSelector();\n            \n            ReplicaSetListV1 replicaSets = await client.ReplicaSetsV1().List(matchLabelSelector, deployment.Metadata.Namespace, cancellationToken);\n            ReplicaSetV1 targetRevisionReplicaSet = replicaSets.Items.FirstOrDefault(\n                replicaSet => replicaSet.GetRevision() == targetRevision\n            );\n\n            return targetRevisionReplicaSet;\n        }\n\n        /// <summary>\n        ///     Roll back a Deployment to the revision represented by the specified ReplicaSet.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"existingDeployment\">\n        ///     The target Deployment.\n        /// </param>\n        /// <param name=\"targetRevisionReplicaSet\">\n        ///     The ReplicaSet that represents the target revision.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment's current state.\n        /// </returns>\n        public static async Task<DeploymentV1> RollbackDeployment(IKubeApiClient client, DeploymentV1 existingDeployment, ReplicaSetV1 targetRevisionReplicaSet, CancellationToken cancellationToken = default)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (existingDeployment == null)\n                throw new ArgumentNullException(nameof(existingDeployment));\n            \n            if (targetRevisionReplicaSet == null)\n                throw new ArgumentNullException(nameof(targetRevisionReplicaSet));\n\n            int? targetRevision = targetRevisionReplicaSet.GetRevision();\n            if (targetRevision == null)\n                throw new InvalidOperationException($\"Cannot determine Deployment revision represented by ReplicaSet '{targetRevisionReplicaSet.Metadata.Name}' in namespace '{targetRevisionReplicaSet.Metadata.Namespace}'.\");\n            \n            DeploymentV1 rolledBackDeployment = await client.DeploymentsV1().Update(existingDeployment.Metadata.Name, kubeNamespace: existingDeployment.Metadata.Namespace, cancellationToken: cancellationToken, patchAction: patch =>\n            {\n                // Restore Deployment's Pod-template specification to the one used by the target ReplicaSet.\n                patch.Replace(deployment =>\n                    deployment.Spec.Template.Spec,\n                    value: targetRevisionReplicaSet.Spec.Template.Spec\n                );\n\n                // Since the old Rollback API is obsolete (as of v1beta2), we have to update the Deployment's revision by hand.\n                patch.Replace(deployment =>\n                    deployment.Metadata.Annotations, // Due to JSON-PATCH limitations in the K8s API, we have to replace the entire Annotations property, not attempt to update individual items within the dictionary.\n                    value: new Dictionary<string, string>(existingDeployment.Metadata.Annotations)\n                    {\n                        [K8sAnnotations.Deployment.Revision] = targetRevision.Value.ToString()\n                    }\n                );\n            });\n\n            // Re-fetch Deployment state so we pick up annotations added or updated by the controller.\n            rolledBackDeployment = await client.DeploymentsV1().Get(rolledBackDeployment.Metadata.Name, rolledBackDeployment.Metadata.Namespace, cancellationToken);\n\n            return rolledBackDeployment;\n        }\n\n        /// <summary>\n        /// Get the Kubernetes resource represented by the specified object reference.\n        /// </summary>\n        /// <param name=\"dynamicResourceClient\">The Kubernetes dynamic resource client.</param>\n        /// <param name=\"resourceReference\">The <see cref=\"ObjectReferenceV1\"/>.</param>\n        /// <param name=\"cancellationToken\">An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.</param>\n        /// <returns>The resource, as a <see cref=\"KubeResourceV1\"/>.</returns>\n        /// <exception cref=\"ArgumentException\">\n        ///     <paramref name=\"resourceReference\"/> has a <c>null</c> name or kind.\n        /// </exception>\n        public static Task<KubeResourceV1> Get(this IDynamicResourceClient dynamicResourceClient, ObjectReferenceV1 resourceReference, CancellationToken cancellationToken = default)\n        {\n            if (dynamicResourceClient == null)\n                throw new ArgumentNullException(nameof(dynamicResourceClient));\n            \n            if (resourceReference == null)\n                throw new ArgumentNullException(nameof(resourceReference));\n            \n            if (String.IsNullOrWhiteSpace(resourceReference.Kind))\n                throw new ArgumentException($\"{nameof(ObjectReferenceV1)} does not specify 'kind' field.\", nameof(resourceReference));\n\n            if (String.IsNullOrWhiteSpace(resourceReference.ApiVersion))\n                resourceReference.ApiVersion = \"v1\";\n\n            if (String.IsNullOrWhiteSpace(resourceReference.Name))\n                throw new ArgumentException($\"{nameof(ObjectReferenceV1)} does not specify 'name' field.\", nameof(resourceReference));\n\n            return dynamicResourceClient.Get(resourceReference.Name, resourceReference.Kind, resourceReference.ApiVersion, resourceReference.Namespace, cancellationToken);\n        }\n\n        /// <summary>\n        /// List events that apply to the specified Kubernetes resource.\n        /// </summary>\n        /// <param name=\"eventClient\">The Kubernetes API client.</param>\n        /// <param name=\"resource\">The <see cref=\"KubeResourceV1\"/>.</param>\n        /// <param name=\"onlyNewEvents\">Only return events newer than the <paramref name=\"resource\"/>'s ResourceVersion?</param>\n        /// <param name=\"cancellationToken\">An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.</param>\n        /// <returns>An <see cref=\"EventListV1\"/> containing the relevant events.</returns>\n        public static Task<EventListV1> List(this IEventClientV1 eventClient, KubeResourceV1 resource, bool onlyNewEvents = false, CancellationToken cancellationToken = default)\n        {\n            if (eventClient == null)\n                throw new ArgumentNullException(nameof(eventClient));\n\n            if (resource == null)\n                throw new ArgumentNullException(nameof(resource));\n\n            string fieldSelector = BuildInvolvedObjectFieldSelector(resource);\n\n            return eventClient.List(\n                fieldSelector: fieldSelector,\n                resourceVersion: onlyNewEvents ? resource.Metadata.ResourceVersion : null,\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        /// Watch for events that apply to the specified Kubernetes resource.\n        /// </summary>\n        /// <param name=\"eventClient\">The Kubernetes API client.</param>\n        /// <param name=\"resource\">The <see cref=\"KubeResourceV1\"/>.</param>\n        /// <returns>An <see cref=\"EventListV1\"/> containing the relevant events.</returns>\n        public static IObservable<IResourceEventV1<EventV1>> WatchAll(this IEventClientV1 eventClient, KubeResourceV1 resource)\n        {\n            if (eventClient == null)\n                throw new ArgumentNullException(nameof(eventClient));\n\n            if (resource == null)\n                throw new ArgumentNullException(nameof(resource));\n\n            string fieldSelector = BuildInvolvedObjectFieldSelector(resource);\n\n            return eventClient.WatchAll(\n                fieldSelector: fieldSelector,\n                resourceVersion: resource.Metadata.ResourceVersion\n            );\n        }\n\n        /// <summary>\n        /// Build a Kubernetes field selector for <see cref=\"EventV1.InvolvedObject\"/> that targets the specified resource.\n        /// </summary>\n        /// <param name=\"resource\">The <see cref=\"KubeResourceV1\"/>.</param>\n        /// <returns>The field selector.</returns>\n        /// <exception cref=\"ArgumentNullException\">\n        ///     <paramref name=\"resource\"/> is <c>null</c>.\n        /// </exception>\n        /// <exception cref=\"ArgumentException\">\n        ///     <paramref name=\"resource\"/> has <c>null</c> <see cref=\"KubeResourceV1.Metadata\"/>.\n        /// </exception>\n        static string BuildInvolvedObjectFieldSelector(KubeResourceV1 resource)\n        {\n            if (resource == null)\n                throw new ArgumentNullException(nameof(resource));\n\n            if (resource.Metadata == null)\n                throw new ArgumentException($\"{resource.GetType().Name} has null metadata.\", nameof(resource));\n\n            StringBuilder fieldSelector = new StringBuilder()\n                .AppendFormat(\"involvedObject.kind={0}\", resource.Kind)\n                .Append(',')\n                .AppendFormat(\"involvedObject.apiVersion={0}\", resource.ApiVersion)\n                .Append(',')\n                .AppendFormat(\"involvedObject.name={0}\", resource.Metadata.Name);\n\n            if (!String.IsNullOrWhiteSpace(resource.Metadata.Uid))\n            {\n                fieldSelector\n                    .Append(',')\n                    .AppendFormat(\"involvedObject.uid={0}\", resource.Metadata.Uid);\n            }\n\n            if (!String.IsNullOrWhiteSpace(resource.Metadata.Namespace))\n            {\n                fieldSelector\n                    .Append(',')\n                    .AppendFormat(\"involvedObject.namespace={0}\", resource.Metadata.Namespace);\n            }\n\n            return fieldSelector.ToString();\n        }\n\n    }\n}"
  },
  {
    "path": "src/KubeClient/ResourceClients/APIGroupClientV1.cs",
    "content": "using System;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes APIGroups (v1) API.\n    /// </summary>\n    public class APIGroupClientV1\n        : KubeResourceClient, IAPIGroupClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"APIGroupClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public APIGroupClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get all APIGroups with the specified prefix.\n        /// </summary>\n        /// <param name=\"prefix\">\n        ///     The prefix for the API groups (usually \"api/v1\" for core APIs or \"apis\" for all other APIs).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"APIGroupListV1\"/> containing the APIGroups.\n        /// </returns>\n        public async Task<APIGroupListV1> List(string prefix = \"apis\", CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(prefix))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'prefix'.\", nameof(prefix));\n\n            HttpRequest request = Requests.Collection.WithTemplateParameter(\"Prefix\", prefix);\n\n            using (HttpResponseMessage responseMessage = await Http.GetAsync(request, cancellationToken).ConfigureAwait(false))\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                    return await responseMessage.ReadContentAsAsync<APIGroupListV1>().ConfigureAwait(false);\n\n                throw new KubeClientException($\"Unable to list API groups (HTTP status {responseMessage.StatusCode}).\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode,\n                        response: await responseMessage.ReadContentAsStatusV1Async(responseMessage.StatusCode).ConfigureAwait(false)\n                    )\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Request templates for the APIGroup (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level APIGroup (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"{Prefix}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes APIGroups (v1) API.\n    /// </summary>\n    public interface IAPIGroupClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get all APIGroups.\n        /// </summary>\n        /// <param name=\"prefix\">\n        ///     The prefix for the API groups (usually \"api/v1\" for core APIs or \"/apis\" for all other APIs).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"APIGroupListV1\"/> containing the APIGroups.\n        /// </returns>\n        Task<APIGroupListV1> List(string prefix = \"apis\", CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/APIResourceClientV1.cs",
    "content": "using System;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes APIResources (v1) API.\n    /// </summary>\n    public class APIResourceClientV1\n        : KubeResourceClient, IAPIResourceClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"APIResourceClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public APIResourceClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get all APIResources with the specified prefix.\n        /// </summary>\n        /// <param name=\"prefix\">\n        ///     The prefix for the API groups (usually \"api/v1\" for core APIs or \"apis\" for all other APIs).\n        /// </param>\n        /// <param name=\"groupVersion\">\n        ///     The API group version.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"APIResourceListV1\"/> containing the APIResources.\n        /// </returns>\n        public async Task<APIResourceListV1> List(string prefix, string groupVersion, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(prefix))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'prefix'.\", nameof(prefix));\n\n            HttpRequest request = Requests.Collection\n                .WithTemplateParameters(new\n                {\n                    Prefix = prefix,\n                    GroupVersion = groupVersion\n                });\n\n            using (HttpResponseMessage responseMessage = await Http.GetAsync(request, cancellationToken).ConfigureAwait(false))\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                    return await responseMessage.ReadContentAsAsync<APIResourceListV1>().ConfigureAwait(false);\n\n                throw new KubeClientException($\"Unable to list API resource types for '{prefix}/{groupVersion}' (HTTP status {responseMessage.StatusCode}).\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode,\n                        response: await responseMessage.ReadContentAsStatusV1Async(responseMessage.StatusCode).ConfigureAwait(false)\n                    )\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Request templates for the APIResource (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level APIResource (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"{Prefix}/{GroupVersion}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes APIResources (v1) API.\n    /// </summary>\n    public interface IAPIResourceClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get all APIResources.\n        /// </summary>\n        /// <param name=\"prefix\">\n        ///     The prefix for the API groups (usually \"api/v1\" for core APIs or \"apis\" for all other APIs).\n        /// </param>\n        /// <param name=\"groupVersion\">\n        ///     The API group version.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"APIResourceListV1\"/> containing the APIResources.\n        /// </returns>\n        Task<APIResourceListV1> List(string prefix, string groupVersion, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/ConfigMapClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes ConfigMaps (v1) API.\n    /// </summary>\n    public class ConfigMapClientV1\n        : KubeResourceClient, IConfigMapClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"ConfigMapClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public ConfigMapClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the ConfigMap with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ConfigMap to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapV1\"/> representing the current state for the ConfigMap, or <c>null</c> if no ConfigMap was found with the specified name and namespace.\n        /// </returns>\n        public async Task<ConfigMapV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<ConfigMapV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all ConfigMaps in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ConfigMaps.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapListV1\"/> containing the ConfigMaps.\n        /// </returns>\n        public async Task<ConfigMapListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<ConfigMapListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific ConfigMap.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ConfigMap to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<ConfigMapV1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<ConfigMapV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/ConfigMap '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to ConfigMaps.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ConfigMaps.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<ConfigMapV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<ConfigMapV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/ConfigMaps with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ConfigMapV1\"/>.\n        /// </summary>\n        /// <param name=\"newConfigMap\">\n        ///     A <see cref=\"ConfigMapV1\"/> representing the ConfigMap to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapV1\"/> representing the current state for the newly-created ConfigMap.\n        /// </returns>\n        public async Task<ConfigMapV1> Create(ConfigMapV1 newConfigMap, CancellationToken cancellationToken = default)\n        {\n            if (newConfigMap == null)\n                throw new ArgumentNullException(nameof(newConfigMap));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newConfigMap?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newConfigMap,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<ConfigMapV1>(\n                    operationDescription: \"create v1/ConfigMap resource\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ConfigMapV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target ConfigMap.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapV1\"/> representing the current state for the updated ConfigMap.\n        /// </returns>\n        public async Task<ConfigMapV1> Update(string name, Action<JsonPatchDocument<ConfigMapV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified ConfigMap.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ConfigMap to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name,\n                        Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\"delete v1/ConfigMap resource\", HttpStatusCode.OK, HttpStatusCode.NotFound);\n        }\n\n        /// <summary>\n        ///     Request templates for the ConfigMap (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level ConfigMap (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/configmaps?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name ConfigMap (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/configmaps/{Name}\");\n\n            /// <summary>\n            ///     A watch-by-name ConfigMap (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"api/v1/watch/namespaces/{Namespace}/configmaps/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes ConfigMaps (v1) API.\n    /// </summary>\n    public interface IConfigMapClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the ConfigMap with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ConfigMap to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapV1\"/> representing the current state for the ConfigMap, or <c>null</c> if no ConfigMap was found with the specified name and namespace.\n        /// </returns>\n        Task<ConfigMapV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all ConfigMaps in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ConfigMaps.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapListV1\"/> containing the ConfigMaps.\n        /// </returns>\n        Task<ConfigMapListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific ConfigMap.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ConfigMap to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<ConfigMapV1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Watch for events relating to ConfigMaps.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ConfigMaps.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<ConfigMapV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ConfigMapV1\"/>.\n        /// </summary>\n        /// <param name=\"newConfigMap\">\n        ///     A <see cref=\"ConfigMapV1\"/> representing the ConfigMap to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapV1\"/> representing the current state for the newly-created ConfigMap.\n        /// </returns>\n        Task<ConfigMapV1> Create(ConfigMapV1 newConfigMap, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ConfigMapV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target ConfigMap.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ConfigMapV1\"/> representing the current state for the updated ConfigMap.\n        /// </returns>\n        Task<ConfigMapV1> Update(string name, Action<JsonPatchDocument<ConfigMapV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified ConfigMap.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ConfigMap to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/DaemonSetClientV1.cs",
    "content": "﻿using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes DaemonSets (v1) API.\n    /// </summary>\n    public class DaemonSetClientV1\n        : KubeResourceClient, IDaemonSetClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"DaemonSetClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public DaemonSetClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the DaemonSet with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the DaemonSet to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetV1\"/> representing the current state for the DaemonSet, or <c>null</c> if no DaemonSet was found with the specified name and namespace.\n        /// </returns>\n        public async Task<DaemonSetV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (string.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<DaemonSetV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all DaemonSets in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the DaemonSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetListV1\"/> containing the DaemonSets.\n        /// </returns>\n        public async Task<DaemonSetListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<DaemonSetListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to DaemonSets.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the DaemonSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<DaemonSetV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<DaemonSetV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/DaemonSets with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"DaemonSetV1\"/>.\n        /// </summary>\n        /// <param name=\"newDaemonSet\">\n        ///     A <see cref=\"DaemonSetV1\"/> representing the DaemonSet to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetV1\"/> representing the current state for the newly-created DaemonSet.\n        /// </returns>\n        public async Task<DaemonSetV1> Create(DaemonSetV1 newDaemonSet, CancellationToken cancellationToken = default)\n        {\n            if (newDaemonSet == null)\n                throw new ArgumentNullException(nameof(newDaemonSet));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newDaemonSet?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newDaemonSet,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<DaemonSetV1>(\"create v1/DaemonSet resource\");\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"DaemonSetV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target DaemonSet.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetV1\"/> representing the current state for the updated DaemonSet.\n        /// </returns>\n        public async Task<DaemonSetV1> Update(string name, Action<JsonPatchDocument<DaemonSetV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified DaemonSet.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the DaemonSet to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetV1\"/> representing the DaemonSet's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<DaemonSetV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<DaemonSetV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the DaemonSets (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level DaemonSet (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/apps/v1/namespaces/{Namespace}/daemonsets?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name DaemonSet (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/apps/v1/namespaces/{Namespace}/daemonsets/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes DaemonSets (v1) API.\n    /// </summary>\n    public interface IDaemonSetClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the DaemonSet with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the DaemonSet to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetV1\"/> representing the current state for the DaemonSet, or <c>null</c> if no DaemonSet was found with the specified name and namespace.\n        /// </returns>\n        Task<DaemonSetV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all DaemonSets in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the DaemonSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetListV1\"/> containing the DaemonSets.\n        /// </returns>\n        Task<DaemonSetListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to DaemonSets.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the DaemonSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<DaemonSetV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"DaemonSetV1\"/>.\n        /// </summary>\n        /// <param name=\"newDaemonSet\">\n        ///     A <see cref=\"DaemonSetV1\"/> representing the DaemonSet to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetV1\"/> representing the current state for the newly-created DaemonSet.\n        /// </returns>\n        Task<DaemonSetV1> Create(DaemonSetV1 newDaemonSet, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"DaemonSetV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target DaemonSet.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetV1\"/> representing the current state for the updated DaemonSet.\n        /// </returns>\n        Task<DaemonSetV1> Update(string name, Action<JsonPatchDocument<DaemonSetV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified DaemonSet.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the DaemonSet to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DaemonSetV1\"/> representing the DaemonSet's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<DaemonSetV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}"
  },
  {
    "path": "src/KubeClient/ResourceClients/DeploymentClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Deployments (v1) API.\n    /// </summary>\n    public class DeploymentClientV1\n        : KubeResourceClient, IDeploymentClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"DeploymentClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public DeploymentClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Deployment with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Deployment to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the current state for the Deployment, or <c>null</c> if no Deployment was found with the specified name and namespace.\n        /// </returns>\n        public async Task<DeploymentV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<DeploymentV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Deployments in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Deployments.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentListV1\"/> containing the Deployments.\n        /// </returns>\n        public async Task<DeploymentListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<DeploymentListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Deployments.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Deployments.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<DeploymentV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<DeploymentV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/Deployments with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"DeploymentV1\"/>.\n        /// </summary>\n        /// <param name=\"newDeployment\">\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the current state for the newly-created Deployment.\n        /// </returns>\n        public async Task<DeploymentV1> Create(DeploymentV1 newDeployment, CancellationToken cancellationToken = default)\n        {\n            if (newDeployment == null)\n                throw new ArgumentNullException(nameof(newDeployment));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newDeployment?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newDeployment,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<DeploymentV1>(\"create v1/Deployment resource\");\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"DeploymentV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Deployment.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the current state for the updated Deployment.\n        /// </returns>\n        public async Task<DeploymentV1> Update(string name, Action<JsonPatchDocument<DeploymentV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Deployment.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Deployment to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the deployment's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<DeploymentV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<DeploymentV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the Deployments (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Deployment (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/apps/v1/namespaces/{Namespace}/deployments?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name Deployment (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/apps/v1/namespaces/{Namespace}/deployments/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Deployments (v1) API.\n    /// </summary>\n    public interface IDeploymentClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Deployment with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Deployment to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the current state for the Deployment, or <c>null</c> if no Deployment was found with the specified name and namespace.\n        /// </returns>\n        Task<DeploymentV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Deployments in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Deployments.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentListV1\"/> containing the Deployments.\n        /// </returns>\n        Task<DeploymentListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to Deployments.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Deployments.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<DeploymentV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"DeploymentV1\"/>.\n        /// </summary>\n        /// <param name=\"newDeployment\">\n        ///     A <see cref=\"DeploymentV1\"/> representing the Deployment to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the current state for the newly-created Deployment.\n        /// </returns>\n        Task<DeploymentV1> Create(DeploymentV1 newDeployment, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"DeploymentV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Deployment.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the current state for the updated Deployment.\n        /// </returns>\n        Task<DeploymentV1> Update(string name, Action<JsonPatchDocument<DeploymentV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Deployment.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Deployment to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1\"/> representing the deployment's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<DeploymentV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/DeploymentClientV1Beta1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Deployments (v1beta2) API.\n    /// </summary>\n    public class DeploymentClientV1Beta1\n        : KubeResourceClient, IDeploymentClientV1Beta1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"DeploymentClientV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public DeploymentClientV1Beta1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Deployment with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Deployment to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the current state for the Deployment, or <c>null</c> if no Deployment was found with the specified name and namespace.\n        /// </returns>\n        public async Task<DeploymentV1Beta1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<DeploymentV1Beta1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Deployments in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Deployments.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentListV1Beta1\"/> containing the Deployments.\n        /// </returns>\n        public async Task<DeploymentListV1Beta1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<DeploymentListV1Beta1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Deployments.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Deployments.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<DeploymentV1Beta1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<DeploymentV1Beta1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1beta1/Deployments with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"DeploymentV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"newDeployment\">\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the Deployment to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the current state for the newly-created Deployment.\n        /// </returns>\n        public async Task<DeploymentV1Beta1> Create(DeploymentV1Beta1 newDeployment, CancellationToken cancellationToken = default)\n        {\n            if (newDeployment == null)\n                throw new ArgumentNullException(nameof(newDeployment));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newDeployment?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newDeployment,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<DeploymentV1Beta1>(\"create v1beta1/Deployment resource\");\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"DeploymentV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Deployment.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the current state for the updated Deployment.\n        /// </returns>\n        public async Task<DeploymentV1Beta1> Update(string name, Action<JsonPatchDocument<DeploymentV1Beta1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Deployment.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Deployment to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the deployment's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<DeploymentV1Beta1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<DeploymentV1Beta1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the Deployment (v1beta2) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Deployment (v1beta2) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/apps/v1beta1/namespaces/{Namespace}/deployments?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name Deployment (v1beta2) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/apps/v1beta1/namespaces/{Namespace}/deployments/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Deployments (v1beta2) API.\n    /// </summary>\n    public interface IDeploymentClientV1Beta1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Deployment with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Deployment to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the current state for the Deployment, or <c>null</c> if no Deployment was found with the specified name and namespace.\n        /// </returns>\n        Task<DeploymentV1Beta1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Deployments in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Deployments.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentListV1Beta1\"/> containing the Deployments.\n        /// </returns>\n        Task<DeploymentListV1Beta1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to Deployments.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Deployments.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<DeploymentV1Beta1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"DeploymentV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"newDeployment\">\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the Deployment to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the current state for the newly-created Deployment.\n        /// </returns>\n        Task<DeploymentV1Beta1> Create(DeploymentV1Beta1 newDeployment, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"DeploymentV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Deployment.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the current state for the updated Deployment.\n        /// </returns>\n        Task<DeploymentV1Beta1> Update(string name, Action<JsonPatchDocument<DeploymentV1Beta1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Deployment.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Deployment to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"DeploymentV1Beta1\"/> representing the deployment's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<DeploymentV1Beta1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/DynamicResourceClient.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Net;\nusing System.Net.Http;\nusing System.Reflection;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using ApiMetadata;\n    using Http;\n    using Models;\n\n    // TODO: Always prefer namespaced API paths (except for List operations) and use client's default namespace.\n\n    /// <summary>\n    ///     A client for dynamic access to Kubernetes resource APIs.\n    /// </summary>\n    public sealed class DynamicResourceClient\n        : KubeResourceClient, IDynamicResourceClient\n    {\n        /// <summary>\n        ///     Model CLR types, keyed by resource kind and API version.\n        /// </summary>\n        readonly Dictionary<(string kind, string apiVersion), Type> _modelTypeLookup = ModelMetadata.KubeObject.BuildKindToTypeLookup(\n            typeof(KubeObjectV1).GetTypeInfo().Assembly\n        );\n\n        /// <summary>\n        ///     Model CLR types, keyed by resource kind and API version.\n        /// </summary>\n        readonly Dictionary<(string kind, string apiVersion), Type> _listModelTypeLookup = ModelMetadata.KubeObject.BuildKindToListTypeLookup(\n            typeof(KubeObjectV1).GetTypeInfo().Assembly\n        );\n\n        /// <summary>\n        ///     Create a new <see cref=\"DynamicResourceClient\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public DynamicResourceClient(IKubeApiClient client)\n            : base(client)\n        {\n            // Register metadata for additional model types (if any).\n            IReadOnlyList<Assembly> modelTypeAssemblies = KubeClient.GetClientOptions().ModelTypeAssemblies;\n\n            var assemblyModelTypeLookup = ModelMetadata.KubeObject.BuildKindToTypeLookup(modelTypeAssemblies);\n            foreach (var key in assemblyModelTypeLookup.Keys)\n                _modelTypeLookup[key] = assemblyModelTypeLookup[key];\n\n            var assemblyListModelTypeLookup = ModelMetadata.KubeObject.BuildKindToListTypeLookup(modelTypeAssemblies);\n            foreach (var key in assemblyListModelTypeLookup.Keys)\n                _modelTypeLookup[key] = assemblyListModelTypeLookup[key];\n        }\n\n        /// <summary>\n        ///     Metadata for Kubernetes resource APIs.\n        /// </summary>\n        public KubeApiMetadataCache ApiMetadata { get; } = new KubeApiMetadataCache();\n\n        /// <summary>\n        ///     Retrieve a single resource by name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The resource name.\n        /// </param>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The (optional) name of a Kubernetes namespace containing the resource.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional cancellation token that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     The resource, or <c>null</c> if the resource was not found.\n        /// </returns>\n        public async Task<KubeResourceV1> Get(string name, string kind, string apiVersion, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            bool isNamespaced = !String.IsNullOrWhiteSpace(kubeNamespace);\n\n            await EnsureApiMetadata(cancellationToken);\n            string apiPath = GetApiPath(kind, apiVersion, isNamespaced);\n\n            Type modelType = GetModelType(kind, apiVersion);\n\n            HttpRequest request = KubeRequest.Create(apiPath).WithRelativeUri(\"{name}\")\n                .WithTemplateParameters(new\n                {\n                    name,\n                    @namespace = kubeNamespace\n                });\n\n            using (HttpResponseMessage responseMessage = await Http.GetAsync(request, cancellationToken).ConfigureAwait(false))\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                {\n                    // Code is slightly ugly for types only known at runtime; see if KubeClient.Http could be improved here.\n                    using (Stream responseStream = await responseMessage.Content.ReadAsStreamAsync().ConfigureAwait(false))\n                    using (TextReader responseReader = new StreamReader(responseStream))\n                    {\n                        JsonSerializer serializer = responseMessage.GetJsonSerializer();\n\n                        return (KubeResourceV1)serializer.Deserialize(responseReader, modelType);\n                    }\n                }\n\n                // Ensure that HttpStatusCode.NotFound actually refers to the target resource.\n                StatusV1 status = await responseMessage.ReadContentAsStatusV1Async(HttpStatusCode.NotFound).ConfigureAwait(false);\n                if (status.Reason == \"NotFound\")\n                    return null;\n\n                throw new KubeClientException($\"Unable to retrieve {apiVersion}/{kind} resource (HTTP status {responseMessage.StatusCode}).\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode, status)\n                );\n            }\n        }\n\n        /// <summary>\n        ///     List resources.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The (optional) name of a Kubernetes namespace containing the resources.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional cancellation token that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     The resource list (can be cast to <see cref=\"KubeResourceListV1{TResource}\"/> for access to individual resources).\n        /// </returns>\n        public async Task<KubeResourceListV1> List(string kind, string apiVersion, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            bool isNamespaced = !String.IsNullOrWhiteSpace(kubeNamespace);\n\n            await EnsureApiMetadata(cancellationToken);\n            string apiPath = GetApiPath(kind, apiVersion, isNamespaced);\n\n            Type listModelType = GetListModelType(kind, apiVersion);\n\n            HttpRequest request = KubeRequest.Create(apiPath)\n                .WithTemplateParameter(\"namespace\", kubeNamespace);\n\n            using (HttpResponseMessage responseMessage = await Http.GetAsync(request, cancellationToken).ConfigureAwait(false))\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                {\n                    // Code is slightly ugly for types only known at runtime; see if KubeClient.Http could be improved here.\n                    using (Stream responseStream = await responseMessage.Content.ReadAsStreamAsync().ConfigureAwait(false))\n                    using (TextReader responseReader = new StreamReader(responseStream))\n                    {\n                        JsonSerializer serializer = responseMessage.GetJsonSerializer();\n\n                        return (KubeResourceListV1)serializer.Deserialize(responseReader, listModelType);\n                    }\n                }\n\n                StatusV1 status = await responseMessage.ReadContentAsStatusV1Async(HttpStatusCode.NotFound).ConfigureAwait(false);\n\n                throw new KubeClientException($\"Unable to list {apiVersion}/{kind} resources (HTTP status {responseMessage.StatusCode}).\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode, status)\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Perform a JSON patch operation on a Kubernetes resource.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The resource name.\n        /// </param>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"patch\">\n        ///     A <see cref=\"JsonPatchDocument\"/> representing the patch operation(s) to perform.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The (optional) name of a Kubernetes namespace containing the resources.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceV1\"/> representing the updated resource.\n        /// </returns>\n        public async Task<KubeResourceV1> Patch(string name, string kind, string apiVersion, JsonPatchDocument patch, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            if (patch == null)\n                throw new ArgumentNullException(nameof(patch));\n\n            bool isNamespaced = !String.IsNullOrWhiteSpace(kubeNamespace);\n\n            await EnsureApiMetadata(cancellationToken);\n            string apiPath = GetApiPath(kind, apiVersion, isNamespaced);\n\n            Type modelType = GetModelType(kind, apiVersion);\n\n            HttpRequest request = KubeRequest.Create(apiPath).WithRelativeUri(\"{name}\")\n                .WithTemplateParameters(new\n                {\n                    name = name,\n                    @namespace = kubeNamespace\n                });\n\n            using (HttpResponseMessage responseMessage = await Http.PatchAsync(request, patchBody: patch, mediaType: PatchMediaType, cancellationToken: cancellationToken).ConfigureAwait(false))\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                {\n                    // Code is slightly ugly for types only known at runtime; see if KubeClient.Http could be improved here.\n                    using (Stream responseStream = await responseMessage.Content.ReadAsStreamAsync().ConfigureAwait(false))\n                    using (TextReader responseReader = new StreamReader(responseStream))\n                    {\n                        JsonSerializer serializer = responseMessage.GetJsonSerializer();\n\n                        return (KubeResourceV1)serializer.Deserialize(responseReader, modelType);\n                    }\n                }\n\n                // Ensure that HttpStatusCode.NotFound actually refers to the target resource.\n                StatusV1 status = await responseMessage.ReadContentAsStatusV1Async(HttpStatusCode.NotFound).ConfigureAwait(false);\n                if (status.Reason == \"NotFound\")\n                {\n                    string errorMessage = isNamespaced ?\n                        $\"Unable to patch {apiVersion}/{kind} resource '{name}' in namespace '{kubeNamespace}' (resource not found).\"\n                        :\n                        $\"Unable to patch {apiVersion}/{kind} resource '{name}' (resource not found).\";\n\n                    throw new KubeClientException(errorMessage);\n                }\n\n                throw new KubeClientException($\"Unable to patch {apiVersion}/{kind} resource (HTTP status {responseMessage.StatusCode}).\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode, status)\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Create a Kubernetes resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of resource to create.\n        /// </typeparam>\n        /// <param name=\"resource\">\n        ///     A <typeparamref name=\"TResource\"/> representing the resource to create.\n        /// </param>\n        /// <param name=\"isNamespaced\">\n        ///     Is the resource type commonly namespaced?\n        ///     \n        ///     In other words, does the resource's API path contain a \"{namespace}\" segment?\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the newly-created resource.\n        /// </returns>\n        public async Task<TResource> Create<TResource>(TResource resource, bool isNamespaced = true, CancellationToken cancellationToken = default)\n            where TResource : KubeResourceV1\n        {\n            if (resource == null)\n                throw new ArgumentNullException(nameof(resource));\n\n            await EnsureApiMetadata(cancellationToken);\n\n            (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n            string apiPath = GetApiPath(kind, apiVersion, isNamespaced);\n\n            HttpRequest request = KubeRequest.Create(apiPath);\n            if (isNamespaced)\n            {\n                request = request.WithTemplateParameters(new\n                {\n                    @namespace = resource.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                });\n            }\n\n            return await Http\n                .PostAsJsonAsync(request,\n                    postBody: resource,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<TResource>(\n                    operationDescription: isNamespaced ?\n                        $\"create {apiVersion}/{kind} resource in namespace {resource?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}\"\n                        :\n                        $\"create {apiVersion}/{kind} resource\"\n                );\n        }\n\n        /// <summary>\n        ///     Update a Kubernetes resource using a server-side apply operation.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of resource to update.\n        /// </typeparam>\n        /// <param name=\"resource\">\n        ///     A <typeparamref name=\"TResource\"/> representing the resource to update.\n        /// </param>\n        /// <param name=\"fieldManager\">\n        ///     The name of the field manager to use when performing the server-side apply.\n        /// </param>\n        /// <param name=\"force\">\n        ///     Allow the field manager to take ownership of fields if required?\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the updated resource.\n        /// </returns>\n        public async Task<TResource> Apply<TResource>(TResource resource, string fieldManager, bool force = false, CancellationToken cancellationToken = default)\n            where TResource : KubeResourceV1\n        {\n            if (resource == null)\n                throw new ArgumentNullException(nameof(resource));\n\n            if (String.IsNullOrWhiteSpace(fieldManager))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(fieldManager)}.\", nameof(fieldManager));\n\n            await EnsureApiMetadata(cancellationToken);\n\n            string resourceYaml;\n            using (StringWriter yamlWriter = new StringWriter())\n            {\n                Yaml.Serialize(resource, yamlWriter);\n\n                resourceYaml = yamlWriter.ToString();\n            }\n\n            KubeResourceV1 appliedResource = await ApplyYaml(\n                resource.Metadata.Name,\n                resource.Kind,\n                resource.ApiVersion,\n                resourceYaml,\n                fieldManager,\n                force,\n                kubeNamespace: resource.Metadata.Namespace,\n                cancellationToken\n            );\n\n            return (TResource)appliedResource;\n        }\n\n        /// <summary>\n        ///     Update a Kubernetes resource using a server-side apply operation with the specified YAML.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The resource name.\n        /// </param>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"yaml\">\n        ///     A string containing the resource YAML.\n        /// </param>\n        /// <param name=\"fieldManager\">\n        ///     The name of the field manager to use when performing the server-side apply.\n        /// </param>\n        /// <param name=\"force\">\n        ///     Allow the field manager to take ownership of fields if required?\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The (optional) name of a Kubernetes namespace containing the resources.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceV1\"/> representing the updated resource.\n        /// </returns>\n        public async Task<KubeResourceV1> ApplyYaml(string name, string kind, string apiVersion, string yaml, string fieldManager, bool force = false, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            if (String.IsNullOrWhiteSpace(yaml))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(yaml)}.\", nameof(yaml));\n\n            bool isNamespaced = !String.IsNullOrWhiteSpace(kubeNamespace);\n\n            await EnsureApiMetadata(cancellationToken);\n            string apiPath = GetApiPath(kind, apiVersion, isNamespaced);\n\n            Type modelType = GetModelType(kind, apiVersion);\n\n            HttpRequest request = KubeRequest.Create(apiPath).WithRelativeUri(\"{name}?fieldManager={fieldManager?}&force={force?}\")\n                .WithTemplateParameters(new\n                {\n                    name,\n                    @namespace = kubeNamespace,\n                    fieldManager,\n                    force = force ? \"true\" : null\n                });\n\n            using (StringContent patchBody = new StringContent(yaml, Encoding.UTF8, ApplyPatchYamlMediaType))\n            using (HttpResponseMessage responseMessage = await Http.PatchAsync(request, patchBody, mediaType: ApplyPatchYamlMediaType, cancellationToken: cancellationToken).ConfigureAwait(false))\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                {\n                    // Code is slightly ugly for types only known at runtime; see if KubeClient.Http could be improved here.\n                    using (Stream responseStream = await responseMessage.Content.ReadAsStreamAsync().ConfigureAwait(false))\n                    using (TextReader responseReader = new StreamReader(responseStream))\n                    {\n                        JsonSerializer serializer = responseMessage.GetJsonSerializer();\n\n                        return (KubeResourceV1)serializer.Deserialize(responseReader, modelType);\n                    }\n                }\n\n                // Ensure that HttpStatusCode.NotFound actually refers to the target resource.\n                StatusV1 status = await responseMessage.ReadContentAsStatusV1Async(HttpStatusCode.NotFound).ConfigureAwait(false);\n                if (status.Reason == \"NotFound\")\n                {\n                    string errorMessage = isNamespaced ?\n                        $\"Unable to patch {apiVersion}/{kind} resource '{name}' in namespace '{kubeNamespace}' using server-side apply (resource not found).\"\n                        :\n                        $\"Unable to patch {apiVersion}/{kind} resource '{name}' using server-side apply (resource not found).\";\n\n                    throw new KubeClientException(errorMessage);\n                }\n\n                throw new KubeClientException($\"Unable to patch {apiVersion}/{kind} resource (HTTP status {responseMessage.StatusCode}).\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode, status)\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified resource.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the resource to delete.\n        /// </param>\n        /// <param name=\"kind\">\n        ///     The kind of resource to delete.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The API version of the resource to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceV1\"/> representing the resource's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/> indicating the operation result.\n        /// </returns>\n        public async Task<KubeResourceResultV1<KubeResourceV1>> Delete(string name, string kind, string apiVersion, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            bool isNamespaced = !String.IsNullOrWhiteSpace(kubeNamespace);\n\n            await EnsureApiMetadata(cancellationToken);\n            string apiPath = GetApiPath(kind, apiVersion, isNamespaced);\n\n            Type modelType = GetModelType(kind, apiVersion);\n\n            string operationDescription = $\"delete {apiVersion}/{kind} resource '{name}' in namespace '{kubeNamespace}'\";\n\n            return await Http\n                .DeleteAsJsonAsync(\n                    request: KubeRequest.Create(apiPath).WithRelativeUri(\"{name}\").WithTemplateParameters(new\n                    {\n                        name,\n                        @namespace = kubeNamespace\n                    }),\n                    deleteBody: new DeleteOptionsV1\n                    {\n                        PropagationPolicy = propagationPolicy\n                    }\n                )\n                .ReadContentAsResourceOrStatusV1(modelType, operationDescription, HttpStatusCode.OK, HttpStatusCode.NotFound);\n        }\n\n        /// <summary>\n        ///     Ensure that the API metadata cache is populated.\n        /// </summary>\n        /// <param name=\"cancellationToken\">\n        ///     A <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        async Task EnsureApiMetadata(CancellationToken cancellationToken)\n        {\n            await Task.Yield();\n\n            if (ApiMetadata.IsEmpty)\n            {\n                ApiMetadata.LoadFromMetadata(\n                    typeof(KubeObjectV1).GetTypeInfo().Assembly\n                );\n\n                foreach (Assembly modelTypeAssembly in KubeClient.GetClientOptions().ModelTypeAssemblies)\n                    ApiMetadata.LoadFromMetadata(modelTypeAssembly);\n\n                if (ApiMetadata.IsEmpty) // Never happens (consider async preload *as a configurable option* and otherwise implement as a read-through cache)\n                    await ApiMetadata.Load(KubeClient, cancellationToken: cancellationToken);\n            }\n        }\n\n        /// <summary>\n        ///     Get the primary path for the specified Kubernetes resource API.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"namespaced\">\n        ///     Require a path with Kubernetes namespace support?\n        /// </param>\n        /// <returns>\n        ///     The resource API path.\n        /// </returns>\n        string GetApiPath(string kind, string apiVersion, bool namespaced)\n        {\n            // TODO: Add KubeAction parameter to improve path resolution.\n\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            KubeApiMetadata apiMetadata = ApiMetadata.Get(kind, apiVersion);\n            if (apiMetadata == null)\n                throw new KubeClientException($\"Cannot find resource API for kind '{kind}', apiVersion '{apiVersion}'.\");\n\n            KubeApiPathMetadata apiPathMetadata = namespaced ? apiMetadata.PrimaryNamespacedPathMetadata : apiMetadata.PrimaryPathMetadata;\n\n            if (apiPathMetadata == null)\n            {\n                if (namespaced)\n                    throw new KubeClientException($\"Resource API for {apiVersion}/{kind} only supports listing resources within a specific namespace.\");\n                else\n                    throw new KubeClientException($\"Resource API for {apiVersion}/{kind} does not support listing resources within a specific namespace.\");\n            }\n\n            return apiPathMetadata.Path;\n        }\n\n        /// <summary>\n        ///     Get the CLR <see cref=\"Type\"/> of the model that corresponds to the specified Kubernetes resource type.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <returns>\n        ///     The model <see cref=\"Type\"/>.\n        /// </returns>\n        Type GetModelType(string kind, string apiVersion)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            Type modelType;\n            if (!_modelTypeLookup.TryGetValue((kind, apiVersion), out modelType))\n                throw new KubeClientException($\"Cannot determine the model type that corresponds to {apiVersion}/{kind}.\");\n\n            return modelType;\n        }\n\n        /// <summary>\n        ///     Get the CLR <see cref=\"Type\"/> of the list model that corresponds to the specified Kubernetes resource type.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <returns>\n        ///     The model <see cref=\"Type\"/>.\n        /// </returns>\n        Type GetListModelType(string kind, string apiVersion)\n        {\n            if (String.IsNullOrWhiteSpace(kind))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'kind'.\", nameof(kind));\n\n            if (String.IsNullOrWhiteSpace(apiVersion))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiVersion'.\", nameof(apiVersion));\n\n            Type listModelType;\n            if (!_listModelTypeLookup.TryGetValue((kind, apiVersion), out listModelType))\n                throw new KubeClientException($\"Cannot determine the list model type that corresponds to {apiVersion}/{kind}.\");\n\n            return listModelType;\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for dynamic access to Kubernetes resource APIs.\n    /// </summary>\n    public interface IDynamicResourceClient\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Metadata for Kubernetes resource APIs.\n        /// </summary>\n        KubeApiMetadataCache ApiMetadata { get; }\n\n        /// <summary>\n        ///     Retrieve a single resource by name.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"name\">\n        ///     The resource name.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The (optional) name of a Kubernetes namespace containing the resource.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional cancellation token that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     The resource, or <c>null</c> if the resource was not found.\n        /// </returns>\n        Task<KubeResourceV1> Get(string name, string kind, string apiVersion, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     List resources.\n        /// </summary>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The (optional) name of a Kubernetes namespace containing the resources.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional cancellation token that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     The resource list (can be cast to <see cref=\"KubeResourceListV1{TResource}\"/> for access to individual resources).\n        /// </returns>\n        Task<KubeResourceListV1> List(string kind, string apiVersion, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Create a Kubernetes resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of resource to create.\n        /// </typeparam>\n        /// <param name=\"resource\">\n        ///     A <typeparamref name=\"TResource\"/> representing the resource to create.\n        /// </param>\n        /// <param name=\"isNamespaced\">\n        ///     Is the resource namespaced?\n        ///     \n        ///     In other words, does the resource's API path contain a \"{namespace}\" segment?\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the updated resource.\n        /// </returns>\n        Task<TResource> Create<TResource>(TResource resource, bool isNamespaced = true, CancellationToken cancellationToken = default)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Perform a JSON patch operation on a Kubernetes resource.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The resource name.\n        /// </param>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"patch\">\n        ///     A <see cref=\"JsonPatchDocument\"/> representing the patch operation(s) to perform.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The (optional) name of a Kubernetes namespace containing the resources.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceV1\"/> representing the updated resource.\n        /// </returns>\n        Task<KubeResourceV1> Patch(string name, string kind, string apiVersion, JsonPatchDocument patch, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Update a Kubernetes resource using a server-side apply operation.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of resource to update.\n        /// </typeparam>\n        /// <param name=\"resource\">\n        ///     A <typeparamref name=\"TResource\"/> representing the resource to update.\n        /// </param>\n        /// <param name=\"fieldManager\">\n        ///     The name of the field manager to use when performing the server-side apply.\n        /// </param>\n        /// <param name=\"force\">\n        ///     Allow the field manager to take ownership of fields if required?\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the updated resource.\n        /// </returns>\n        Task<TResource> Apply<TResource>(TResource resource, string fieldManager, bool force = false, CancellationToken cancellationToken = default)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Update a Kubernetes resource using a server-side apply operation with the specified YAML.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The resource name.\n        /// </param>\n        /// <param name=\"kind\">\n        ///     The resource kind.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The resource API version.\n        /// </param>\n        /// <param name=\"yaml\">\n        ///     A string containing the resource YAML.\n        /// </param>\n        /// <param name=\"fieldManager\">\n        ///     The name of the field manager to use when performing the server-side apply.\n        /// </param>\n        /// <param name=\"force\">\n        ///     Allow the field manager to take ownership of fields if required?\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The (optional) name of a Kubernetes namespace containing the resources.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceV1\"/> representing the updated resource.\n        /// </returns>\n        Task<KubeResourceV1> ApplyYaml(string name, string kind, string apiVersion, string yaml, string fieldManager, bool force = false, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified resource.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the resource to delete.\n        /// </param>\n        /// <param name=\"kind\">\n        ///     The kind of resource to delete.\n        /// </param>\n        /// <param name=\"apiVersion\">\n        ///     The API version of the resource to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeResourceV1\"/> representing the resource's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/> indicating the operation result.\n        /// </returns>\n        Task<KubeResourceResultV1<KubeResourceV1>> Delete(string name, string kind, string apiVersion, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/EventClientV1.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Events (v1) API.\n    /// </summary>\n    public class EventClientV1\n        : KubeResourceClient, IEventClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"EventClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public EventClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Event with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Event to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"EventV1\"/> representing the current state for the Event, or <c>null</c> if no Event was found with the specified name and namespace.\n        /// </returns>\n        public async Task<EventV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<EventV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Events in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Events.\n        /// </param>\n        /// <param name=\"fieldSelector\">\n        ///     An optional Kubernetes field selector expression used to filter the Events.\n        /// </param>\n        /// <param name=\"resourceVersion\">\n        ///     An optional Kubernetes resource version (<seealso cref=\"ObjectMetaV1.ResourceVersion\"/>) indicating that only events for newer versions should be returned.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"EventListV1\"/> containing the events.\n        /// </returns>\n        public async Task<EventListV1> List(string labelSelector = null, string fieldSelector = null, string resourceVersion = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<EventListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    FieldSelector = fieldSelector,\n                    ResourceVersion = resourceVersion\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Events.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Events.\n        /// </param>\n        /// <param name=\"fieldSelector\">\n        ///     An optional Kubernetes field selector expression used to filter the Events.\n        /// </param>\n        /// <param name=\"resourceVersion\">\n        ///     An optional Kubernetes resource version (<seealso cref=\"ObjectMetaV1.ResourceVersion\"/>) indicating that only events for newer versions should be returned.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<EventV1>> WatchAll(string labelSelector = null, string fieldSelector = null, string resourceVersion = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<EventV1>(\n                Requests.WatchCollection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    FieldSelector = fieldSelector,\n                    ResourceVersion = resourceVersion\n                }),\n                operationDescription: $\"watch all v1/Events with label selector '{labelSelector ?? \"<none>\"}', field selector '{fieldSelector ?? \"<none>\"}', and resource version '{resourceVersion ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request templates for the Event (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Event (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"/api/v1/namespaces/{Namespace}/events?labelSelector={LabelSelector?}&fieldSelector={FieldSelector?}&resourceVersion={ResourceVersion?}\");\n\n            /// <summary>\n            ///     A get-by-name Event (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"/api/v1/namespaces/{Namespace}/events/{Name}\");\n\n            /// <summary>\n            ///     A collection-level Event watch (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchCollection = KubeRequest.Create(\"/api/v1/watch/namespaces/{Namespace}/events?labelSelector={LabelSelector?}&fieldSelector={FieldSelector?}&resourceVersion={ResourceVersion?}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Events (v1) API.\n    /// </summary>\n    public interface IEventClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Event with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Event to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"EventV1\"/> representing the current state for the Event, or <c>null</c> if no Event was found with the specified name and namespace.\n        /// </returns>\n        Task<EventV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Events in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Events.\n        /// </param>\n        /// <param name=\"fieldSelector\">\n        ///     An optional Kubernetes field selector expression used to filter the Events.\n        /// </param>\n        /// <param name=\"resourceVersion\">\n        ///     An optional Kubernetes resource version (<seealso cref=\"ObjectMetaV1.ResourceVersion\"/>) indicating that only events for newer versions should be returned.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"EventListV1\"/> containing the events.\n        /// </returns>\n        Task<EventListV1> List(string labelSelector = null, string fieldSelector = null, string resourceVersion = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to Events.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Events.\n        /// </param>\n        /// <param name=\"fieldSelector\">\n        ///     An optional Kubernetes field selector expression used to filter the Events.\n        /// </param>\n        /// <param name=\"resourceVersion\">\n        ///     An optional Kubernetes resource version (<seealso cref=\"ObjectMetaV1.ResourceVersion\"/>) indicating that only events for newer versions should be returned.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<EventV1>> WatchAll(string labelSelector = null, string fieldSelector = null, string resourceVersion = null, string kubeNamespace = null);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/HttpExtensions.cs",
    "content": "using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net;\nusing System.Net.Http;\nusing System.Reflection;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Http.Formatters;\n    using Http.Formatters.Json;\n    using Models;\n\n    /// <summary>\n    ///     Extension methods for KubeClient.Http types.\n    /// </summary>\n    public static class HttpExtensions\n    {\n        /// <summary>\n        /// The CLR <see cref=\"Type\"/> representing <see cref=\"KubeResourceV1\"/>.\n        /// </summary>\n        static readonly TypeInfo KubeResourceV1TypeInfo = typeof(KubeResourceV1).GetTypeInfo();\n\n        /// <summary>\n        ///     Read response content as a <see cref=\"StatusV1\"/>.\n        /// </summary>\n        /// <param name=\"response\">\n        ///     A <see cref=\"Task{TResult}\"/> representing the HTTP response.\n        /// </param>\n        /// <param name=\"successStatusCodes\">\n        ///     Optional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n        /// </param>\n        /// <returns>\n        ///     The response content, as a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        /// <exception cref=\"HttpRequestException{TResponse}\">\n        ///     The response status code was unexpected or did not represent success.\n        /// </exception>\n        /// <exception cref=\"InvalidOperationException\">\n        ///     No formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n        /// </exception>\n        public static async Task<StatusV1> ReadContentAsStatusV1Async(this Task<HttpResponseMessage> response, params HttpStatusCode[] successStatusCodes)\n        {\n            try\n            {\n                return await response.ReadContentAsAsync<StatusV1, StatusV1>(successStatusCodes);\n            }\n            catch (HttpRequestException<StatusV1> requestError)\n            {\n                throw new KubeApiException(requestError.Response, requestError);\n            }\n        }\n\n        /// <summary>\n        ///     Read response content as a <see cref=\"StatusV1\"/>.\n        /// </summary>\n        /// <param name=\"response\">\n        ///     The HTTP response.\n        /// </param>\n        /// <param name=\"successStatusCodes\">\n        ///     Optional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n        /// </param>\n        /// <returns>\n        ///     The response content, as a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        /// <exception cref=\"HttpRequestException{TResponse}\">\n        ///     The response status code was unexpected or did not represent success.\n        /// </exception>\n        /// <exception cref=\"InvalidOperationException\">\n        ///     No formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n        /// </exception>\n        public static async Task<StatusV1> ReadContentAsStatusV1Async(this HttpResponseMessage response, params HttpStatusCode[] successStatusCodes)\n        {\n            try\n            {\n                return await response.ReadContentAsAsync<StatusV1, StatusV1>(successStatusCodes);\n            }\n            catch (HttpRequestException<StatusV1> requestError)\n            {\n                throw new KubeApiException(requestError.Response, requestError);\n            }\n        }\n\n        /// <summary>\n        ///     Read response content as a <see cref=\"KubeObjectV1\"/>.\n        /// </summary>\n        /// <param name=\"response\">\n        ///     The HTTP response.\n        /// </param>\n        /// <param name=\"successStatusCodes\">\n        ///     Optional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n        /// </param>\n        /// <returns>\n        ///     The response content, as a <see cref=\"KubeObjectV1\"/>.\n        /// </returns>\n        /// <exception cref=\"HttpRequestException{TResponse}\">\n        ///     The response status code was unexpected or did not represent success.\n        /// </exception>\n        /// <exception cref=\"InvalidOperationException\">\n        ///     No formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n        /// </exception>\n        public static async Task<TObject> ReadContentAsObjectV1Async<TObject>(this Task<HttpResponseMessage> response, params HttpStatusCode[] successStatusCodes)\n            where TObject : KubeObjectV1\n        {\n            try\n            {\n                return await response.ReadContentAsAsync<TObject, StatusV1>(successStatusCodes);\n            }\n            catch (HttpRequestException<StatusV1> requestError)\n            {\n                throw new KubeApiException(requestError.Response, requestError);\n            }\n        }\n\n        /// <summary>\n        ///     Read response content as either a <see cref=\"StatusV1\"/> or a <typeparamref name=\"TResource\"/> resource.<see cref=\"KubeObjectV1\"/>.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The expected resource type.\n        /// </typeparam>\n        /// <param name=\"response\">\n        ///     The HTTP response.\n        /// </param>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation represented by the request (used in exception message if request was not successful).\n        /// </param>\n        /// <param name=\"successStatusCodes\">\n        ///     Optional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n        /// </param>\n        /// <returns>\n        ///     The response content, as a <see cref=\"KubeObjectV1\"/>.\n        /// </returns>\n        /// <exception cref=\"HttpRequestException{TResponse}\">\n        ///     The response status code was unexpected or did not represent success.\n        /// </exception>\n        /// <exception cref=\"InvalidOperationException\">\n        ///     No formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n        /// </exception>\n        public static async Task<KubeResourceResultV1<TResource>> ReadContentAsResourceOrStatusV1<TResource>(this Task<HttpResponseMessage> response, string operationDescription, params HttpStatusCode[] successStatusCodes)\n            where TResource : KubeResourceV1\n        {\n            if (response == null)\n                throw new ArgumentNullException(nameof(response));\n\n            (string expectedKind, string expectedApiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n            HttpResponseMessage responseMessage = null;\n\n            try\n            {\n                responseMessage = await response;\n\n                JObject responseJson = await responseMessage.ReadContentAsAsync<JObject, StatusV1>(successStatusCodes);\n\n                string actualKind = responseJson.Value<string>(\"kind\");\n                if (actualKind == null)\n                    throw new KubeClientException($\"Unable to {operationDescription}: received an invalid response from the Kubernetes API (expected a resource, but response was missing 'kind' property).\");\n\n                string actualApiVersion = responseJson.Value<string>(\"apiVersion\");\n                if (actualKind == null)\n                    throw new KubeClientException($\"Unable to {operationDescription}: received an invalid response from the Kubernetes API (expected a resource, but response was missing 'apiVersion' property).\");\n\n                JsonSerializer serializer = responseMessage.GetJsonSerializer();\n\n                if ((actualKind, actualApiVersion) == (expectedKind, expectedApiVersion))\n                    return serializer.Deserialize<TResource>(responseJson.CreateReader());\n                else if ((actualKind, actualApiVersion) == (\"Status\", \"v1\"))\n                    return serializer.Deserialize<StatusV1>(responseJson.CreateReader());\n                else\n                    throw new KubeClientException($\"Unable to {operationDescription}: received an unexpected response from the Kubernetes API (should be v1/Status or {expectedApiVersion}/{expectedKind}, but was {actualApiVersion}/{actualKind}).\");\n            }\n            catch (HttpRequestException<StatusV1> requestError)\n            {\n                throw new KubeApiException(requestError.Response, requestError);\n            }\n            finally\n            {\n                responseMessage?.Dispose();\n            }\n        }\n\n        /// <summary>\n        ///     Read response content as either a <see cref=\"StatusV1\"/> or a resource model derived from <see cref=\"KubeResourceV1\"/>.\n        /// </summary>\n        /// <param name=\"response\">\n        ///     The HTTP response.\n        /// </param>\n        /// <param name=\"modelType\">\n        ///     The CLR <see cref=\"Type\"/> representing the model for the resource.\n        /// </param>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation represented by the request (used in exception message if request was not successful).\n        /// </param>\n        /// <param name=\"successStatusCodes\">\n        ///     Optional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n        /// </param>\n        /// <returns>\n        ///     The response content, as a <see cref=\"KubeObjectV1\"/>.\n        /// </returns>\n        /// <exception cref=\"HttpRequestException{TResponse}\">\n        ///     The response status code was unexpected or did not represent success.\n        /// </exception>\n        /// <exception cref=\"InvalidOperationException\">\n        ///     No formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n        /// </exception>\n        public static async Task<KubeResourceResultV1<KubeResourceV1>> ReadContentAsResourceOrStatusV1(this Task<HttpResponseMessage> response, Type modelType, string operationDescription, params HttpStatusCode[] successStatusCodes)\n        {\n            if (response == null)\n                throw new ArgumentNullException(nameof(response));\n\n            if (modelType == null)\n                throw new ArgumentNullException(nameof(modelType));\n\n            if (!KubeResourceV1TypeInfo.IsAssignableFrom(modelType.GetTypeInfo()))\n                throw new ArgumentException($\"Model type '{modelType.FullName}' does not derive from '{KubeResourceV1TypeInfo.FullName}'.\", nameof(modelType));\n\n            (string expectedKind, string expectedApiVersion) = KubeObjectV1.GetKubeKind(modelType);\n            if (String.IsNullOrWhiteSpace(expectedKind))\n                throw new ArgumentException($\"Model type '{modelType.FullName}' has not been decorated with KubeResourceAttribute or KubeResourceListAttribute.\", nameof(modelType));\n\n            HttpResponseMessage responseMessage = null;\n\n            try\n            {\n                responseMessage = await response;\n\n                JObject responseJson = await responseMessage.ReadContentAsAsync<JObject, StatusV1>(successStatusCodes);\n\n                string actualKind = responseJson.Value<string>(\"kind\");\n                if (actualKind == null)\n                    throw new KubeClientException($\"Unable to {operationDescription}: received an invalid response from the Kubernetes API (expected a resource, but response was missing 'kind' property).\");\n\n                string actualApiVersion = responseJson.Value<string>(\"apiVersion\");\n                if (actualKind == null)\n                    throw new KubeClientException($\"Unable to {operationDescription}: received an invalid response from the Kubernetes API (expected a resource, but response was missing 'apiVersion' property).\");\n\n                JsonSerializer serializer = responseMessage.GetJsonSerializer();\n\n                if ((actualKind, actualApiVersion) == (expectedKind, expectedApiVersion))\n                    return (KubeResourceV1)serializer.Deserialize(responseJson.CreateReader(), modelType);\n                else if ((actualKind, actualApiVersion) == (\"Status\", \"v1\"))\n                    return serializer.Deserialize<StatusV1>(responseJson.CreateReader());\n                else\n                    throw new KubeClientException($\"Unable to {operationDescription}: received an unexpected response from the Kubernetes API (should be v1/Status or {expectedApiVersion}/{expectedKind}, but was {actualApiVersion}/{actualKind}).\");\n            }\n            catch (HttpRequestException<StatusV1> requestError)\n            {\n                throw new KubeApiException(requestError.Response, requestError);\n            }\n            finally\n            {\n                responseMessage?.Dispose();\n            }\n        }\n\n        /// <summary>\n        ///     Read response content as a <see cref=\"KubeObjectV1\"/>.\n        /// </summary>\n        /// <param name=\"response\">\n        ///     The HTTP response.\n        /// </param>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation represented by the request (used in exception message if request was not successful).\n        /// </param>\n        /// <param name=\"successStatusCodes\">\n        ///     Optional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n        /// </param>\n        /// <returns>\n        ///     The response content, as a <see cref=\"KubeObjectV1\"/>.\n        /// </returns>\n        /// <exception cref=\"HttpRequestException{TResponse}\">\n        ///     The response status code was unexpected or did not represent success.\n        /// </exception>\n        /// <exception cref=\"InvalidOperationException\">\n        ///     No formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n        /// </exception>\n        public static async Task<TObject> ReadContentAsObjectV1Async<TObject>(this Task<HttpResponseMessage> response, string operationDescription, params HttpStatusCode[] successStatusCodes)\n            where TObject : KubeObjectV1\n        {\n            try\n            {\n                return await response.ReadContentAsAsync<TObject, StatusV1>(successStatusCodes);\n            }\n            catch (HttpRequestException<StatusV1> requestError)\n            {\n                throw new KubeApiException($\"Unable to {operationDescription}.\", requestError);\n            }\n        }\n\n        /// <summary>\n        /// Creates a <see cref=\"JsonSerializer\"/> using settings from the <see cref=\"IFormatter\"/>s\n        /// configured for the <paramref name=\"response\"/>.\n        /// Falls back to <see cref=\"KubeResourceClient.SerializerSettings\"/> if there is none.\n        /// </summary>\n        public static JsonSerializer GetJsonSerializer(this HttpResponseMessage response)\n        {\n            return JsonSerializer.Create(response.GetFormatters().GetJsonSerializerSettings());\n        }\n\n        /// <summary>\n        /// Gets the <see cref=\"JsonSerializerSettings\"/> from a set of <paramref name=\"formatters\"/>.\n        /// Falls back to <see cref=\"KubeResourceClient.SerializerSettings\"/> if there is none.\n        /// </summary>\n        public static JsonSerializerSettings GetJsonSerializerSettings(this IEnumerable<IFormatter> formatters)\n        {\n            return formatters.OfType<NewtonsoftJsonFormatter>().FirstOrDefault()?.SerializerSettings\n                   ?? KubeResourceClient.SerializerSettings;\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient/ResourceClients/IngressClientV1Beta1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Ingress (v1beta1) API.\n    /// </summary>\n    public class IngressClientV1Beta1\n        : KubeResourceClient, IIngressClientV1Beta1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"IngressClientV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public IngressClientV1Beta1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Ingress with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Ingress to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"IngressV1Beta1\"/> representing the current state for the Ingress, or <c>null</c> if no Ingress was found with the specified name and namespace.\n        /// </returns>\n        public async Task<IngressV1Beta1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<IngressV1Beta1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Ingresses in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Ingresses.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"IngressListV1Beta1\"/> containing the Ingresses.\n        /// </returns>\n        public async Task<IngressListV1Beta1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<IngressListV1Beta1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific Ingress.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Ingress to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<IngressV1Beta1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<IngressV1Beta1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/Ingress '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Ingresses.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Ingresses.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<IngressV1Beta1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<IngressV1Beta1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/Ingresses with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of an <see cref=\"IngressV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"newIngress\">\n        ///     A <see cref=\"IngressV1Beta1\"/> representing the Ingress to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"IngressV1Beta1\"/> representing the current state for the newly-created Ingress.\n        /// </returns>\n        public async Task<IngressV1Beta1> Create(IngressV1Beta1 newIngress, CancellationToken cancellationToken = default)\n        {\n            if (newIngress == null)\n                throw new ArgumentNullException(nameof(newIngress));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newIngress?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newIngress,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<IngressV1Beta1>(\n                    operationDescription: \"create v1/Ingress resource\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of an <see cref=\"IngressV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Ingress.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"IngressV1Beta1\"/> representing the current state for the updated Ingress.\n        /// </returns>\n        public async Task<IngressV1Beta1> Update(string name, Action<JsonPatchDocument<IngressV1Beta1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Ingress.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Ingress to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name,\n                        Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\"delete v1beta1/Ingress resource\", HttpStatusCode.OK, HttpStatusCode.NotFound);\n        }\n\n        /// <summary>\n        ///     Request templates for the Ingress (v1beta1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Ingress (v1beta1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/extensions/v1beta1/namespaces/{Namespace}/ingresses?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name Ingress (v1beta1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/extensions/v1beta1/namespaces/{Namespace}/ingresses/{Name}\");\n\n            /// <summary>\n            ///     A watch-by-name Ingress (v1beta1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"apis/extensions/v1beta1/watch/namespaces/{Namespace}/ingresses/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Ingress (v1beta1) API.\n    /// </summary>\n    public interface IIngressClientV1Beta1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Ingress with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Ingress to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"IngressV1Beta1\"/> representing the current state for the Ingress, or <c>null</c> if no Ingress was found with the specified name and namespace.\n        /// </returns>\n        Task<IngressV1Beta1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Ingresses in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Ingresses.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"IngressListV1Beta1\"/> containing the Ingresses.\n        /// </returns>\n        Task<IngressListV1Beta1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific Ingress.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Ingress to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<IngressV1Beta1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Watch for events relating to Ingresses.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Ingresses.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<IngressV1Beta1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of an <see cref=\"IngressV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"newIngress\">\n        ///     A <see cref=\"IngressV1Beta1\"/> representing the Ingress to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"IngressV1Beta1\"/> representing the current state for the newly-created Ingress.\n        /// </returns>\n        Task<IngressV1Beta1> Create(IngressV1Beta1 newIngress, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of an <see cref=\"IngressV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Ingress.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"IngressV1Beta1\"/> representing the current state for the updated Ingress.\n        /// </returns>\n        Task<IngressV1Beta1> Update(string name, Action<JsonPatchDocument<IngressV1Beta1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Ingress.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Ingress to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/JobClientV1.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Jobs (v1) API.\n    /// </summary>\n    public class JobClientV1\n        : KubeResourceClient, IJobClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"JobClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public JobClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Job with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Job to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JobV1\"/> representing the current state for the Job, or <c>null</c> if no Job was found with the specified name and namespace.\n        /// </returns>\n        public async Task<JobV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<JobV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Jobs in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Jobs.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JobListV1\"/> containing the jobs.\n        /// </returns>\n        public async Task<JobListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<JobListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific Job.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the job to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<JobV1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<JobV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/Job '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Jobs.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Jobs.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<JobV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<JobV1>(\n                Requests.WatchCollection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                operationDescription: $\"watch all v1/Jobs with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"JobV1\"/>.\n        /// </summary>\n        /// <param name=\"newJob\">\n        ///     A <see cref=\"JobV1\"/> representing the Job to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JobV1\"/> representing the current state for the newly-created Job.\n        /// </returns>\n        public async Task<JobV1> Create(JobV1 newJob, CancellationToken cancellationToken = default)\n        {\n            if (newJob == null)\n                throw new ArgumentNullException(nameof(newJob));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newJob?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newJob,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<JobV1>(\"create v1/Job resource\");\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Job.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Job to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace containing the Job to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JobV1\"/> representing the job's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<JobV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<JobV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the Job (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Job (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/batch/v1/namespaces/{Namespace}/jobs?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name Job (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/batch/v1/namespaces/{Namespace}/jobs/{Name}\");\n\n            /// <summary>\n            ///     A collection-level Job watch (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchCollection = KubeRequest.Create(\"apis/batch/v1/watch/namespaces/{Namespace}/jobs?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A watch-by-name Job (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"apis/batch/v1/watch/namespaces/{Namespace}/jobs/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Jobs (v1) API.\n    /// </summary>\n    public interface IJobClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Job with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Job to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JobV1\"/> representing the current state for the Job, or <c>null</c> if no Job was found with the specified name and namespace.\n        /// </returns>\n        Task<JobV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Jobs in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Jobs.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JobListV1\"/> containing the jobs.\n        /// </returns>\n        Task<JobListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific Job.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the job to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<JobV1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Watch for events relating to Jobs.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Jobs.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<JobV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"JobV1\"/>.\n        /// </summary>\n        /// <param name=\"newJob\">\n        ///     A <see cref=\"JobV1\"/> representing the Job to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JobV1\"/> representing the current state for the newly-created Job.\n        /// </returns>\n        Task<JobV1> Create(JobV1 newJob, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Job.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Job to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace containing the Job to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"JobV1\"/> representing the job's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<JobV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/KubeResourceClient.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing Microsoft.Extensions.Logging;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.IO;\nusing System.Linq;\nusing System.Net;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Reactive;\nusing System.Reactive.Linq;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Http.Formatters.Json;\n    using Models;\n    using Models.ContractResolvers;\n    using Models.Converters;\n    using Utilities;\n\n    /// <summary>\n    ///     The base class for Kubernetes resource API clients.\n    /// </summary>\n    public abstract class KubeResourceClient\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     The default even\n        /// </summary>\n        public static readonly EventId DefaultEventId = new EventId(8500, typeof(KubeResourceClient).FullName);\n\n        /// <summary>\n        ///     The default buffer size to use when streaming data from the Kubernetes API.\n        /// </summary>\n        protected const int DefaultStreamingBufferSize = 2048;\n\n        /// <summary>\n        ///     The media type used to indicate that request is a Kubernetes PATCH request.\n        /// </summary>\n        protected static readonly string PatchMediaType = \"application/json-patch+json\";\n\n        /// <summary>\n        ///     The media type used to indicate that request is a Kubernetes merge-style PATCH request.\n        /// </summary>\n        protected static readonly string MergePatchMediaType = \"application/merge-patch+json\";\n\n        /// <summary>\n        ///     The media type used to indicate that request is a Kubernetes server-side-apply PATCH request in JSON format.\n        /// </summary>\n        protected static readonly string ApplyPatchJsonMediaType = \"application/apply-patch+json\";\n\n        /// <summary>\n        ///     The media type used to indicate that request is a Kubernetes server-side-apply PATCH request in YAML format.\n        /// </summary>\n        protected static readonly string ApplyPatchYamlMediaType = \"application/apply-patch+yaml\";\n\n        /// <summary>\n        ///     JSON serialisation settings.\n        /// </summary>\n        public static JsonSerializerSettings SerializerSettings => new JsonSerializerSettings\n        {\n            NullValueHandling = NullValueHandling.Ignore,\n            ContractResolver = new KubeContractResolver(),\n            Converters =\n            {\n                new StringEnumConverter(),\n                new Int32OrStringV1Converter()\n            }\n        };\n\n        /// <summary>\n        ///     The factory for Kubernetes API requests.\n        /// </summary>\n        protected static HttpRequestFactory KubeRequest { get; } = new HttpRequestFactory(\n            HttpRequest.Empty.ExpectJson().WithFormatter(new NewtonsoftJsonFormatter\n            {\n                SerializerSettings = SerializerSettings,\n                SupportedMediaTypes =\n                {\n                    PatchMediaType,\n                    MergePatchMediaType\n                }\n            })\n        );\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeResourceClient\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        protected KubeResourceClient(IKubeApiClient client)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            KubeClient = client;\n        }\n\n        /// <summary>\n        ///     The Kubernetes API client.\n        /// </summary>\n        public IKubeApiClient KubeClient { get; }\n\n        /// <summary>\n        ///     The Kubernetes API client (for <see cref=\"IKubeResourceClient\"/>).\n        /// </summary>\n        IKubeApiClient IKubeResourceClient.KubeClient => KubeClient;\n\n        /// <summary>\n        ///     The underlying HTTP client.\n        /// </summary>\n        protected HttpClient Http => KubeClient.Http;\n\n        /// <summary>\n        ///     An <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </summary>\n        protected ILoggerFactory LoggerFactory => KubeClient.LoggerFactory;\n\n        /// <summary>\n        ///     Get a single resource, returning <c>null</c> if it does not exist.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of resource to retrieve.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///     An <see cref=\"HttpRequest\"/> representing the resource to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the current state for the resource, or <c>null</c> if no resource was found with the specified name and namespace.\n        /// </returns>\n        protected async Task<TResource> GetSingleResource<TResource>(HttpRequest request, CancellationToken cancellationToken = default)\n            where TResource : KubeResourceV1\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            using (HttpResponseMessage responseMessage = await Http.GetAsync(request, cancellationToken).ConfigureAwait(false))\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                    return await responseMessage.ReadContentAsAsync<TResource>().ConfigureAwait(false);\n\n                // Ensure that HttpStatusCode.NotFound actually refers to the target resource.\n                StatusV1 status = await responseMessage.ReadContentAsStatusV1Async(HttpStatusCode.NotFound).ConfigureAwait(false);\n                if (status.Reason == \"NotFound\")\n                    return null;\n\n                // If possible, tell the consumer which resource type we had a problem with (helpful when all you find is the error message in the log).\n                (string itemKind, string itemApiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n                string resourceTypeDescription =\n                    !String.IsNullOrWhiteSpace(itemKind)\n                        ? $\"{itemKind} ({itemApiVersion}) resource\"\n                        : typeof(TResource).Name;\n\n                throw new KubeApiException($\"Unable to retrieve {resourceTypeDescription} (HTTP status {responseMessage.StatusCode}).\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode,\n                        response: await responseMessage.ReadContentAsStatusV1Async(responseMessage.StatusCode).ConfigureAwait(false)\n                    )\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Get a list of resources.\n        /// </summary>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of resource list to retrieve.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///     An <see cref=\"HttpRequest\"/> representing the resource to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResourceList\"/> containing the resources.\n        /// </returns>\n        protected async Task<TResourceList> GetResourceList<TResourceList>(HttpRequest request, CancellationToken cancellationToken = default)\n            where TResourceList : KubeResourceListV1\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            using (HttpResponseMessage responseMessage = await Http.GetAsync(request, cancellationToken).ConfigureAwait(false))\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                    return await responseMessage.ReadContentAsAsync<TResourceList>().ConfigureAwait(false);\n\n                // If possible, tell the consumer which resource type we had a problem with (helpful when all you find is the error message in the log).\n                (string itemKind, string itemApiVersion) = KubeResourceListV1.GetListItemKubeKind<TResourceList>();\n                string resourceTypeDescription =\n                    !String.IsNullOrWhiteSpace(itemKind)\n                        ? $\"{itemKind} ({itemApiVersion}) resources\"\n                        : typeof(TResourceList).Name;\n\n                throw new KubeApiException($\"Unable to list {resourceTypeDescription} (HTTP status {responseMessage.StatusCode}).\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode,\n                        response: await responseMessage.ReadContentAsStatusV1Async(responseMessage.StatusCode).ConfigureAwait(false)\n                    )\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Perform a JSON patch operation on a Kubernetes resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The target resource type.\n        /// </typeparam>\n        /// <param name=\"patchAction\">\n        ///     A delegate that performs customisation of the patch operation.\n        /// </param>\n        /// <param name=\"request\">\n        ///     An <see cref=\"HttpRequest\"/> representing the patch request.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the updated resource.\n        /// </returns>\n        protected async Task<TResource> PatchResource<TResource>(Action<JsonPatchDocument<TResource>> patchAction, HttpRequest request, CancellationToken cancellationToken)\n            where TResource : KubeResourceV1\n        {\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            // If possible, tell the consumer which resource type we had a problem with (helpful when all you find is the error message in the log).\n            (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n            var patch = new JsonPatchDocument<TResource>();\n\n            patchAction(patch);\n\n            return await\n                Http.PatchAsync(request,\n                    patchBody: patch,\n                    mediaType: PatchMediaType,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<TResource>(\n                    operationDescription: $\"patch {apiVersion}/{kind} resource\"\n                )\n                .ConfigureAwait(false);\n        }\n\n        /// <summary>\n        ///     Perform a JSON patch operation on a Kubernetes resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The target resource type.\n        /// </typeparam>\n        /// <param name=\"patchAction\">\n        ///     A delegate that performs customisation of the patch operation.\n        /// </param>\n        /// <param name=\"request\">\n        ///     An <see cref=\"HttpRequest\"/> representing the patch request.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the updated resource.\n        /// </returns>\n        protected async Task<TResource> PatchResourceRaw<TResource>(Action<JsonPatchDocument> patchAction, HttpRequest request, CancellationToken cancellationToken)\n            where TResource : KubeResourceV1\n        {\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            // If possible, tell the consumer which resource type we had a problem with (helpful when all you find is the error message in the log).\n            (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n            var patch = new JsonPatchDocument();\n            patchAction(patch);\n\n            return await\n                Http.PatchAsync(request,\n                    patchBody: patch,\n                    mediaType: PatchMediaType,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<TResource>(\n                    operationDescription: $\"patch {apiVersion}/{kind} resource\"\n                )\n                .ConfigureAwait(false);\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of resource to delete.\n        /// </typeparam>\n        /// <param name=\"resourceByNameRequestTemplate\">\n        ///     The HTTP request template for addressing a <typeparamref name=\"TResource\"/> by name.\n        /// </param>\n        /// <param name=\"name\">\n        ///     The name of the resource to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the resource's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/> indicating the operation result.\n        /// </returns>\n        protected async Task<KubeResourceResultV1<TResource>> DeleteResource<TResource>(HttpRequest resourceByNameRequestTemplate, string name, string kubeNamespace, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n            where TResource : KubeResourceV1\n        {\n            if (resourceByNameRequestTemplate == null)\n                throw new ArgumentNullException(nameof(resourceByNameRequestTemplate));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (String.IsNullOrWhiteSpace(kubeNamespace))\n                kubeNamespace = KubeClient.DefaultNamespace;\n\n            var response = Http.DeleteAsJsonAsync(\n                resourceByNameRequestTemplate.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                deleteBody: new DeleteOptionsV1\n                {\n                    PropagationPolicy = propagationPolicy\n                },\n                cancellationToken: cancellationToken\n            );\n\n            (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n            string operationDescription = $\"delete {apiVersion}/{kind} resource '{name}' in namespace '{kubeNamespace}'\";\n\n            return await response.ReadContentAsResourceOrStatusV1<TResource>(operationDescription, HttpStatusCode.OK, HttpStatusCode.NotFound);\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified global (non-namespaced) resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of resource to delete.\n        /// </typeparam>\n        /// <param name=\"resourceByNameNoNamespaceRequestTemplate\">\n        ///     The HTTP request template for addressing a non-namespaced <typeparamref name=\"TResource\"/> by name.\n        /// </param>\n        /// <param name=\"name\">\n        ///     The name of the resource to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the resource's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/> indicating the operation result.\n        /// </returns>\n        protected async Task<KubeResourceResultV1<TResource>> DeleteGlobalResource<TResource>(HttpRequest resourceByNameNoNamespaceRequestTemplate, string name, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n            where TResource : KubeResourceV1\n        {\n            if (resourceByNameNoNamespaceRequestTemplate == null)\n                throw new ArgumentNullException(nameof(resourceByNameNoNamespaceRequestTemplate));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            var response = Http.DeleteAsJsonAsync(\n                resourceByNameNoNamespaceRequestTemplate.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                deleteBody: new DeleteOptionsV1\n                {\n                    PropagationPolicy = propagationPolicy\n                },\n                cancellationToken: cancellationToken\n            );\n\n            (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n            string operationDescription = $\"delete {apiVersion}/{kind} resource '{name}'\";\n\n            return await response.ReadContentAsResourceOrStatusV1<TResource>(operationDescription, HttpStatusCode.OK, HttpStatusCode.NotFound);\n        }\n\n        /// <summary>\n        ///     Get an <see cref=\"IObservable{T}\"/> for <see cref=\"IResourceEventV1{TResource}\"/>s streamed from an HTTP GET request.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The resource type that the events relate to.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///     The <see cref=\"HttpRequest\"/> to execute.\n        /// </param>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation (used in error messages if the request fails).\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IObservable{T}\"/>.\n        /// </returns>\n        protected IObservable<IResourceEventV1<TResource>> ObserveEvents<TResource>(HttpRequest request, string operationDescription)\n            where TResource : KubeResourceV1\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(operationDescription))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'operationDescription'.\", nameof(operationDescription));\n\n            JsonSerializerSettings serializerSettings = request.GetFormatters().Values.GetJsonSerializerSettings();\n\n            ILogger logger = LoggerFactory.CreateLogger(GetType());\n\n            // If we have already observed any events, we only want to see ones newer than the last one we have seen so far.\n            string lastObservedResourceVersion = null;\n\n            return\n                ObserveLinesWithRetry(operationDescription,\n                    requestFactory: () =>\n                    {\n                        HttpRequest currentRequest = request;\n\n                        if (!String.IsNullOrWhiteSpace(lastObservedResourceVersion))\n                            currentRequest = currentRequest.WithQueryParameter(\"resourceVersion\", lastObservedResourceVersion);\n\n                        return currentRequest;\n                    },\n                    shouldRetry: exception => exception == null // Only retry if there was no exception\n                )\n                .Do(\n                    line => CheckForEventError(line, operationDescription)\n                )\n                .Select(\n                    line => (IResourceEventV1<TResource>)JsonConvert.DeserializeObject<ResourceEventV1<TResource>>(line, serializerSettings)\n                )\n                .Do(resourceEvent =>\n                {\n                    lastObservedResourceVersion = resourceEvent.Resource.Metadata.ResourceVersion;\n                });\n        }\n\n        /// <summary>\n        ///     Get an <see cref=\"IObservable{T}\"/> for dynamically-typed <see cref=\"IResourceEventV1{TResource}\"/>s streamed from an HTTP GET request.\n        /// </summary>\n        /// <param name=\"request\">\n        ///     The <see cref=\"HttpRequest\"/> to execute.\n        /// </param>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation (used in error messages if the request fails).\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IObservable{T}\"/>.\n        /// </returns>\n        /// <remarks>If you have custom model types you need to deserialise, ensure that their assemblies are added to <see cref=\"KubeClientOptions.ModelTypeAssemblies\"/>.</remarks>\n        protected IObservable<IResourceEventV1<KubeResourceV1>> ObserveEventsDynamic(HttpRequest request, string operationDescription)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(operationDescription))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'operationDescription'.\", nameof(operationDescription));\n\n            JsonSerializer eventSerializer = JsonSerializer.Create(\n                request.GetFormatters().Values.GetJsonSerializerSettings()\n            );\n            eventSerializer.Converters.Add(\n                new ResourceEventV1Converter(\n                    KubeClient.GetClientOptions().ModelTypeAssemblies\n                )\n            );\n\n            ILogger logger = LoggerFactory.CreateLogger(GetType());\n\n            // If we have already observed any events, we only want to see ones newer than the last one we have seen so far.\n            string lastObservedResourceVersion = null;\n\n            return\n                ObserveLinesWithRetry(operationDescription,\n                    requestFactory: () =>\n                    {\n                        HttpRequest currentRequest = request;\n\n                        if (!String.IsNullOrWhiteSpace(lastObservedResourceVersion))\n                            currentRequest = currentRequest.WithQueryParameter(\"resourceVersion\", lastObservedResourceVersion);\n\n                        return currentRequest;\n                    },\n                    shouldRetry: exception => exception == null // Only retry if there was no exception\n                )\n                .Do(\n                    line => CheckForEventError(line, operationDescription)\n                )\n                .Select(line =>\n                {\n                    IResourceEventV1<KubeResourceV1> resourceEvent;\n\n                    using (StringReader lineReader = new StringReader(line))\n                    using (JsonReader lineJsonReader = new JsonTextReader(lineReader))\n                    {\n                        resourceEvent = eventSerializer.Deserialize<ResourceEventV1<KubeResourceV1>>(lineJsonReader);\n                    }\n\n                    return resourceEvent;\n                })\n                .Do(resourceEvent =>\n                {\n                    lastObservedResourceVersion = resourceEvent.Resource.Metadata.ResourceVersion;\n                });\n        }\n\n        /// <summary>\n        ///     Get an <see cref=\"IObservable{T}\"/> for lines streamed from an HTTP GET request.\n        /// </summary>\n        /// <param name=\"request\">\n        ///     The <see cref=\"HttpRequest\"/> to execute.\n        /// </param>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation (used in error messages if the request fails).\n        /// </param>\n        /// <param name=\"bufferSize\">\n        ///     The buffer size to use when streaming data.\n        /// \n        ///     Default is 2048 bytes.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IObservable{T}\"/>.\n        /// </returns>\n        protected IObservable<string> ObserveLines(HttpRequest request, string operationDescription, int bufferSize = DefaultStreamingBufferSize)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(operationDescription))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'operationDescription'.\", nameof(operationDescription));\n\n            return ObserveLines(\n                requestFactory: () => request,\n                operationDescription,\n                bufferSize\n            );\n        }\n\n        /// <summary>\n        ///     Get an <see cref=\"IObservable{T}\"/> for lines streamed from an HTTP GET request.\n        /// </summary>\n        /// <param name=\"requestFactory\">\n        ///     A delegate that produces the <see cref=\"HttpRequest\"/> to execute.\n        /// </param>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation (used in error messages if the request fails).\n        /// </param>\n        /// <param name=\"bufferSize\">\n        ///     The buffer size to use when streaming data.\n        /// \n        ///     Default is 2048 bytes.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IObservable{T}\"/>.\n        /// </returns>\n        protected IObservable<string> ObserveLines(Func<HttpRequest> requestFactory, string operationDescription, int bufferSize = DefaultStreamingBufferSize)\n        {\n            if (requestFactory == null)\n                throw new ArgumentNullException(nameof(requestFactory));\n\n            if (String.IsNullOrWhiteSpace(operationDescription))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'operationDescription'.\", nameof(operationDescription));\n\n            return Observable.Create<string>(async (subscriber, subscriptionCancellationToken) =>\n            {\n                // NOTE: The CancellationToken above represents the subscriber (i.e. IObserver) subscription to this sequence (i.e. IObservable), and is canceled only when their subscription is disposed.\n\n                ILogger logger = LoggerFactory.CreateLogger(GetType());\n\n                try\n                {\n                    HttpRequest request = requestFactory().WithRequestAction((HttpRequestMessage requestMessage) =>\n                    {\n                        logger.LogDebug(\"Start streaming {RequestMethod} request for {RequestUri}...\", HttpMethod.Get, requestMessage.RequestUri.SafeGetPathAndQuery());\n                    });\n\n                    using (HttpResponseMessage responseMessage = await Http.GetStreamedAsync(request, subscriptionCancellationToken).ConfigureAwait(false))\n                    {\n                        if (!responseMessage.IsSuccessStatusCode)\n                        {\n                            throw HttpRequestException<StatusV1>.Create(responseMessage.StatusCode,\n                                await responseMessage.ReadContentAsStatusV1Async().ConfigureAwait(false)\n                            );\n                        }\n\n                        MediaTypeHeaderValue contentTypeHeader = responseMessage.Content.Headers.ContentType;\n                        if (contentTypeHeader == null)\n                            throw new KubeClientException($\"Unable to {operationDescription} (response is missing 'Content-Type' header).\");\n\n                        Encoding encoding =\n                            !String.IsNullOrWhiteSpace(contentTypeHeader.CharSet)\n                                ? Encoding.GetEncoding(contentTypeHeader.CharSet)\n                                : Encoding.UTF8;\n\n                        Decoder decoder = encoding.GetDecoder();\n\n                        using (Stream responseStream = await responseMessage.Content.ReadAsStreamAsync().ConfigureAwait(false))\n                        {\n                            StringBuilder lineBuilder = new StringBuilder();\n\n                            byte[] buffer = new byte[bufferSize];\n                            int bytesRead = await responseStream.ReadAsync(buffer, 0, buffer.Length, subscriptionCancellationToken).ConfigureAwait(false);\n                            while (bytesRead > 0)\n                            {\n                                // AF: Slightly inefficient because we wind up scanning the buffer twice.\n                                char[] decodedCharacters = new char[decoder.GetCharCount(buffer, 0, bytesRead)];\n                                int charactersDecoded = decoder.GetChars(buffer, 0, bytesRead, decodedCharacters, 0);\n                                for (int charIndex = 0; charIndex < charactersDecoded; charIndex++)\n                                {\n                                    const char CR = '\\r';\n                                    const char LF = '\\n';\n\n                                    char decodedCharacter = decodedCharacters[charIndex];\n                                    switch (decodedCharacter)\n                                    {\n                                        case CR:\n                                        {\n                                            if (charIndex < charactersDecoded - 1 && decodedCharacters[charIndex + 1] == LF)\n                                            {\n                                                charIndex++;\n\n                                                goto case LF;\n                                            }\n\n                                            break;\n                                        }\n                                        case LF:\n                                        {\n                                            string line = lineBuilder.ToString();\n                                            lineBuilder.Clear();\n\n                                            subscriber.OnNext(line);\n\n                                            break;\n                                        }\n                                        default:\n                                        {\n                                            lineBuilder.Append(decodedCharacter);\n\n                                            break;\n                                        }\n                                    }\n                                }\n\n                                bytesRead = await responseStream.ReadAsync(buffer, 0, buffer.Length, subscriptionCancellationToken).ConfigureAwait(false);\n                            }\n\n                            // If stream doesn't end with a line-terminator sequence, publish trailing characters as the last line.\n                            if (lineBuilder.Length > 0)\n                            {\n                                subscriber.OnNext(\n                                    lineBuilder.ToString()\n                                );\n                            }\n                        }\n                    }\n                }\n                catch (OperationCanceledException operationCanceled) when (operationCanceled.CancellationToken == subscriptionCancellationToken)\n                {\n                    // Don't bother publishing if subscriber has already disconnected (this CancellationToken represents the subscription).\n                }\n                catch (HttpRequestException<StatusV1> requestError)\n                {\n                    logger.LogError(new EventId(0, \"NoEventId\"), requestError, \"Unexpected error while streaming from the Kubernetes API to {operationDescription}.\", operationDescription);\n\n                    if (!subscriptionCancellationToken.IsCancellationRequested)\n                    {\n                        subscriber.OnError(\n                            new KubeClientException($\"Unexpected error while streaming from the Kubernetes API to {operationDescription}.\", requestError)\n                        );\n                    }\n                }\n                catch (Exception exception)\n                {\n                    logger.LogError(new EventId(0, \"NoEventId\"), exception, \"Unexpected error while streaming from the Kubernetes API to {operationDescription}.\", operationDescription);\n\n                    if (!subscriptionCancellationToken.IsCancellationRequested)\n                        subscriber.OnError(exception);\n                }\n                finally\n                {\n                    if (!subscriptionCancellationToken.IsCancellationRequested) // Don't bother publishing if subscriber has already disconnected.\n                        subscriber.OnCompleted();\n                }\n            });\n        }\n\n        /// <summary>\n        ///     Get an <see cref=\"IObservable{T}\"/> (with automatic retry) for lines streamed from an HTTP GET request.\n        /// </summary>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation (used in error messages if the request fails).\n        /// </param>\n        /// <param name=\"requestFactory\">\n        ///     A delegate that produces the <see cref=\"HttpRequest\"/> to execute.\n        /// </param>\n        /// <param name=\"shouldRetry\">\n        ///     A delegate that returns <c>true</c>, if the operation should be retried (i.e. sequence continues); otherwise, <c>false</c>.\n        ///     \n        ///     <para>\n        ///         If the retry is due to successful completion of the underlying sequence of lines (<see cref=\"IObserver{T}.OnCompleted\"/>), the exception passed to the delegate be <c>null</c>.\n        ///         If the retry is due to an exception (<see cref=\"IObserver{T}.OnError(Exception)\"/>), the exception will be passed to the delegate.\n        ///     </para>\n        /// </param>\n        /// <param name=\"bufferSize\">\n        ///     The buffer size to use when streaming data.\n        /// \n        ///     Default is 2048 bytes.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IObservable{T}\"/>.\n        /// </returns>\n        protected IObservable<string> ObserveLinesWithRetry(string operationDescription, Func<HttpRequest> requestFactory, Func<Exception, bool> shouldRetry, int bufferSize = DefaultStreamingBufferSize)\n        {\n            if (requestFactory == null)\n                throw new ArgumentNullException(nameof(requestFactory));\n\n            if (String.IsNullOrWhiteSpace(operationDescription))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(operationDescription)}.\", nameof(operationDescription));\n\n            if (shouldRetry == null)\n                throw new ArgumentNullException(nameof(shouldRetry));\n\n            HttpRequest currentRequest = requestFactory();\n\n            ILogger logger = LoggerFactory.CreateLogger(GetType());\n\n            return ObserveLines(requestFactory, operationDescription, bufferSize)\n                .RetryWhen(exceptions => Observable.Create((IObserver<Unit> retrySignal) =>\n                {\n                    return exceptions.Subscribe(\n                        onNext: (Exception sourceError) =>\n                        {\n                            if (sourceError != null)\n                                logger.LogWarning(sourceError, \"ObserveLinesWithRetry: encountered an exception in the retry-handler's source sequence.\");\n                            else\n                                logger.LogWarning(\"ObserveLinesWithRetry: encountered a null value in the retry-handler's source sequence.\");\n\n                            if (shouldRetry(sourceError))\n                            {\n                                logger.LogDebug(\"ObserveLinesWithRetry: will seamlessly continue the event sequence, because shouldRetry returned true.\");\n                                retrySignal.OnNext(Unit.Default); // Retry (this will seamlessly continue the sequence).\n                            }\n                            else\n                            {\n                                logger.LogDebug(\"ObserveLinesWithRetry: will terminate the event sequence, propagating the exception to sequence subscribers, because shouldRetry returned false.\");\n                                retrySignal.OnError(sourceError); // Bubble up (this will terminate the sequence with an error).\n                            }\n                        },\n                        onError: (Exception exceptionSourceError) =>\n                        {\n                            logger.LogError(exceptionSourceError, \"ObserveLinesWithRetry: encountered an exception in the retry-handler's signal sequence.\");\n\n                            // Under normal circumstances this should not be called, and so we never retry from here.\n                            retrySignal.OnError(exceptionSourceError); // Bubble up (this will terminate the sequence with an error).\n                        },\n                        onCompleted: () =>\n                        {\n                            if (shouldRetry(null)) // Continue the sequence forever.\n                                retrySignal.OnNext(Unit.Default); // Retry (this will seamlessly continue the sequence).\n                            else\n                                retrySignal.OnCompleted(); // Bubble up (this will terminate the sequence).\n                        }\n                    );\n                }));\n        }\n\n        /// <summary>\n        ///     Check if an error was encountered in an event stream.\n        /// </summary>\n        /// <param name=\"line\">\n        ///     The current line in the event stream.\n        /// </param>\n        /// <param name=\"operationDescription\">\n        ///     A short description of the operation being performed (used in exception message if an error is encountered).\n        /// </param>\n        static void CheckForEventError(string line, string operationDescription)\n        {\n            JToken watchEvent = JToken.Parse(line);\n            if (!watchEvent.SelectToken(\"type\").Value<string>().Equals(\"error\", StringComparison.OrdinalIgnoreCase))\n                return;\n\n            StatusV1 status = watchEvent.SelectToken(\"object\").ToObject<StatusV1>();\n\n            throw new KubeApiException($\"Unable to {operationDescription}.\", status);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/NamespaceClientV1.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Namespaces (v1) API.\n    /// </summary>\n    public class NamespaceClientV1\n        : KubeResourceClient, INamespaceClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"NamespaceClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public NamespaceClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Namespace with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Namespace to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NamespaceV1\"/> representing the current state for the Namespace, or <c>null</c> if no Namespace was found with the specified name and namespace.\n        /// </returns>\n        public async Task<NamespaceV1> Get(string name, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<NamespaceV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Namespaces in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Namespaces.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NamespaceListV1\"/> containing the Namespaces.\n        /// </returns>\n        public async Task<NamespaceListV1> List(string labelSelector = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<NamespaceListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific Namespace.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Namespace to watch.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<NamespaceV1>> Watch(string name)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<NamespaceV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                operationDescription: $\"watch v1/Namespace '{name}'\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"NamespaceV1\"/>.\n        /// </summary>\n        /// <param name=\"newNamespace\">\n        ///     A <see cref=\"NamespaceV1\"/> representing the Namespace to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NamespaceV1\"/> representing the current state for the newly-created Namespace.\n        /// </returns>\n        public async Task<NamespaceV1> Create(NamespaceV1 newNamespace, CancellationToken cancellationToken = default)\n        {\n            if (newNamespace == null)\n                throw new ArgumentNullException(nameof(newNamespace));\n\n            return await Http\n                .PostAsJsonAsync(Requests.Collection,\n                    postBody: newNamespace,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<NamespaceV1>(\"create v1/Namespace resource\");\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Namespace.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Namespace to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NamespaceV1\"/> representing the namespace's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<NamespaceV1>> Delete(string name, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteGlobalResource<NamespaceV1>(Requests.ByName, name, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the Namespace (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Namespace (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name Namespace (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/namespaces/{Name}\");\n\n            /// <summary>\n            ///     A watch-by-name Namespace (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"api/v1/watch/namespaces/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Namespaces (v1) API.\n    /// </summary>\n    public interface INamespaceClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Namespace with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Namespace to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NamespaceV1\"/> representing the current state for the Namespace, or <c>null</c> if no Namespace was found with the specified name and namespace.\n        /// </returns>\n        Task<NamespaceV1> Get(string name, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Namespaces in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Namespaces.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NamespaceListV1\"/> containing the Namespaces.\n        /// </returns>\n        Task<NamespaceListV1> List(string labelSelector = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific Namespace.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Namespace to watch.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<NamespaceV1>> Watch(string name);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"NamespaceV1\"/>.\n        /// </summary>\n        /// <param name=\"newNamespace\">\n        ///     A <see cref=\"NamespaceV1\"/> representing the Namespace to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NamespaceV1\"/> representing the current state for the newly-created Namespace.\n        /// </returns>\n        Task<NamespaceV1> Create(NamespaceV1 newNamespace, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Namespace.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Namespace to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NamespaceV1\"/> representing the namespace's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<NamespaceV1>> Delete(string name, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/NetworkPolicyClientV1.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes NetworkPolicy resources (v1) API.\n    /// </summary>\n    public class NetworkPolicyClientV1\n        : KubeResourceClient, INetworkPolicyClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"NetworkPolicyClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public NetworkPolicyClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the NetworkPolicy with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the NetworkPolicy to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NetworkPolicyV1\"/> representing the current state for the NetworkPolicy, or <c>null</c> if no NetworkPolicy was found with the specified name and namespace.\n        /// </returns>\n        public async Task<NetworkPolicyV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<NetworkPolicyV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all NetworkPolicy resources in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the NetworkPolicy resources.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NetworkPolicyListV1\"/> containing the NetworkPolicys.\n        /// </returns>\n        public async Task<NetworkPolicyListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<NetworkPolicyListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific NetworkPolicy.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the NetworkPolicy to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<NetworkPolicyV1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<NetworkPolicyV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/NetworkPolicy '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to NetworkPolicy resources.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the NetworkPolicy resources.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<NetworkPolicyV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<NetworkPolicyV1>(\n                Requests.WatchCollection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                operationDescription: $\"watch all v1/NetworkPolicy with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"NetworkPolicyV1\"/>.\n        /// </summary>\n        /// <param name=\"newNetworkPolicy\">\n        ///     A <see cref=\"NetworkPolicyV1\"/> representing the NetworkPolicy to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NetworkPolicyV1\"/> representing the current state for the newly-created NetworkPolicy.\n        /// </returns>\n        public async Task<NetworkPolicyV1> Create(NetworkPolicyV1 newNetworkPolicy, CancellationToken cancellationToken = default)\n        {\n            if (newNetworkPolicy == null)\n                throw new ArgumentNullException(nameof(newNetworkPolicy));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newNetworkPolicy?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newNetworkPolicy,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<NetworkPolicyV1>(\"create v1/NetworkPolicy resource\");\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified NetworkPolicy.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the NetworkPolicy to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace containing the NetworkPolicy to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NetworkPolicyV1\"/> representing the NetworkPolicy's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<NetworkPolicyV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<NetworkPolicyV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the NetworkPolicy (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level NetworkPolicy (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/networking.k8s.io/v1/namespaces/{Namespace}/networkpolicies?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name NetworkPolicy (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/networking.k8s.io/v1/namespaces/{Namespace}/networkpolicies/{Name}\");\n\n            /// <summary>\n            ///     A collection-level NetworkPolicy watch (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchCollection = KubeRequest.Create(\"apis/networking.k8s.io/v1/watch/namespaces/{Namespace}/networkpolicies?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A watch-by-name NetworkPolicy (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"apis/networking.k8s.io/v1/watch/namespaces/{Namespace}/networkpolicies/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes NetworkPolicy resources (v1) API.\n    /// </summary>\n    public interface INetworkPolicyClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the NetworkPolicy with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the NetworkPolicy to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NetworkPolicyV1\"/> representing the current state for the NetworkPolicy, or <c>null</c> if no NetworkPolicy was found with the specified name and namespace.\n        /// </returns>\n        Task<NetworkPolicyV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all NetworkPolicy resources in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the NetworkPolicy resources.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NetworkPolicyListV1\"/> containing the NetworkPolicys.\n        /// </returns>\n        Task<NetworkPolicyListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific NetworkPolicy.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the NetworkPolicy to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<NetworkPolicyV1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Watch for events relating to NetworkPolicy resources.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the NetworkPolicy resources.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<NetworkPolicyV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"NetworkPolicyV1\"/>.\n        /// </summary>\n        /// <param name=\"newNetworkPolicy\">\n        ///     A <see cref=\"NetworkPolicyV1\"/> representing the NetworkPolicy to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NetworkPolicyV1\"/> representing the current state for the newly-created NetworkPolicy.\n        /// </returns>\n        Task<NetworkPolicyV1> Create(NetworkPolicyV1 newNetworkPolicy, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified NetworkPolicy.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the NetworkPolicy to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace containing the NetworkPolicy to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NetworkPolicyV1\"/> representing the NetworkPolicy's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<NetworkPolicyV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/NodeClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Nodes (v1) API.\n    /// </summary>\n    public class NodeClientV1\n        : KubeResourceClient, INodeClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"NodeClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public NodeClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Node with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Node to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NodeV1\"/> representing the current state for the Node, or <c>null</c> if no Node was found with the specified name.\n        /// </returns>\n        public async Task<NodeV1> Get(string name, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<NodeV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Nodes, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Nodes.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NodeListV1\"/> containing the Nodes.\n        /// </returns>\n        public async Task<NodeListV1> List(string labelSelector = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<NodeListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Nodes.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Nodes.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<NodeV1>> WatchAll(string labelSelector = null)\n        {\n            return ObserveEvents<NodeV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/nodes with label selector '{labelSelector ?? \"<none>\"}'\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"NodeV1\"/>.\n        /// </summary>\n        /// <param name=\"newNode\">\n        ///     A <see cref=\"NodeV1\"/> representing the Node to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NodeV1\"/> representing the current state for the newly-created Node.\n        /// </returns>\n        public async Task<NodeV1> Create(NodeV1 newNode, CancellationToken cancellationToken = default)\n        {\n            if (newNode == null)\n                throw new ArgumentNullException(nameof(newNode));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection,\n                    postBody: newNode,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<NodeV1>(\"create v1/node resource\");\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"NodeV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Node.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NodeV1\"/> representing the current state for the updated Node.\n        /// </returns>\n        public async Task<NodeV1> Update(string name, Action<JsonPatchDocument<NodeV1>> patchAction, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Node.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Node to delete.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\"delete v1/node resource\", HttpStatusCode.OK, HttpStatusCode.NotFound);\n        }\n\n        /// <summary>\n        ///     Request templates for the Nodes (v1) API.\n        /// </summary>\n        public static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Node (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/nodes?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name Node (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/nodes/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     A client for the Kubernetes Nodes (v1) API.\n    /// </summary>\n    public interface INodeClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Node with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Node to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NodeV1\"/> representing the current state for the Node, or <c>null</c> if no Node was found with the specified name.\n        /// </returns>\n        Task<NodeV1> Get(string name, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Nodes, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Nodes.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NodeListV1\"/> containing the Nodes.\n        /// </returns>\n        Task<NodeListV1> List(string labelSelector = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to Nodes.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Nodes.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<NodeV1>> WatchAll(string labelSelector = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"NodeV1\"/>.\n        /// </summary>\n        /// <param name=\"newNode\">\n        ///     A <see cref=\"NodeV1\"/> representing the Node to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NodeV1\"/> representing the current state for the newly-created Node.\n        /// </returns>\n        Task<NodeV1> Create(NodeV1 newNode, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"NodeV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Node.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"NodeV1\"/> representing the current state for the updated Node.\n        /// </returns>\n        Task<NodeV1> Update(string name, Action<JsonPatchDocument<NodeV1>> patchAction, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Node.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Node to delete.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/PersistentVolumeClaimClientV1.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes PersistentVolumeClaims (v1) API.\n    /// </summary>\n    public class PersistentVolumeClaimClientV1\n        : KubeResourceClient, IPersistentVolumeClaimClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"PersistentVolumeClaimClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public PersistentVolumeClaimClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the PersistentVolumeClaim with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the PersistentVolumeClaim to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeClaimV1\"/> representing the current state for the PersistentVolumeClaim, or <c>null</c> if no PersistentVolumeClaim was found with the specified name and namespace.\n        /// </returns>\n        public async Task<PersistentVolumeClaimV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<PersistentVolumeClaimV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all PersistentVolumeClaims in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the PersistentVolumeClaims.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeClaimListV1\"/> containing the PersistentVolumeClaims.\n        /// </returns>\n        public async Task<PersistentVolumeClaimListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<PersistentVolumeClaimListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"PersistentVolumeClaimV1\"/>.\n        /// </summary>\n        /// <param name=\"newPersistentVolumeClaim\">\n        ///     A <see cref=\"PersistentVolumeClaimV1\"/> representing the PersistentVolumeClaim to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeClaimV1\"/> representing the current state for the newly-created PersistentVolumeClaim.\n        /// </returns>\n        public async Task<PersistentVolumeClaimV1> Create(PersistentVolumeClaimV1 newPersistentVolumeClaim, CancellationToken cancellationToken = default)\n        {\n            if (newPersistentVolumeClaim == null)\n                throw new ArgumentNullException(nameof(newPersistentVolumeClaim));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newPersistentVolumeClaim?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newPersistentVolumeClaim,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<PersistentVolumeClaimV1>(\"create v1/PersistentVolumeClaim resource\");\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified PersistentVolumeClaim.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the PersistentVolumeClaim to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> value indicating how (or if) dependent resources should be deleted.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeClaimV1\"/> representing the persistent volume claim's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<PersistentVolumeClaimV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<PersistentVolumeClaimV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the PersistentVolumeClaim (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level PersistentVolumeClaim (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/persistentvolumeclaims?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name PersistentVolumeClaim (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/persistentvolumeclaims/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     A client for the Kubernetes PersistentVolumeClaims (v1) API.\n    /// </summary>\n    public interface IPersistentVolumeClaimClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the PersistentVolumeClaim with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the PersistentVolumeClaim to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeClaimV1\"/> representing the current state for the PersistentVolumeClaim, or <c>null</c> if no PersistentVolumeClaim was found with the specified name and namespace.\n        /// </returns>\n        Task<PersistentVolumeClaimV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all PersistentVolumeClaims in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the PersistentVolumeClaims.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeClaimListV1\"/> containing the PersistentVolumeClaims.\n        /// </returns>\n        Task<PersistentVolumeClaimListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"PersistentVolumeClaimV1\"/>.\n        /// </summary>\n        /// <param name=\"newPersistentVolumeClaim\">\n        ///     A <see cref=\"PersistentVolumeClaimV1\"/> representing the PersistentVolumeClaim to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeClaimV1\"/> representing the current state for the newly-created PersistentVolumeClaim.\n        /// </returns>\n        Task<PersistentVolumeClaimV1> Create(PersistentVolumeClaimV1 newPersistentVolumeClaim, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified PersistentVolumeClaim.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the PersistentVolumeClaim to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> value indicating how (or if) dependent resources should be deleted.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeClaimV1\"/> representing the persistent volume claim's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<PersistentVolumeClaimV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/PersistentVolumeClientV1.cs",
    "content": "using System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes PersistentVolumes (v1) API.\n    /// </summary>\n    public class PersistentVolumeClientV1\n        : KubeResourceClient, IPersistentVolumeClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"PersistentVolumeClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public PersistentVolumeClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the PersistentVolume with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the PersistentVolume to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeV1\"/> representing the current state for the PersistentVolume, or <c>null</c> if no PersistentVolume was found with the specified name.\n        /// </returns>\n        public async Task<PersistentVolumeV1> Get(string name, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<PersistentVolumeV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all PersistentVolumes, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the PersistentVolumes.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeListV1\"/> containing the PersistentVolumes.\n        /// </returns>\n        public async Task<PersistentVolumeListV1> List(string labelSelector = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<PersistentVolumeListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to PersistentVolumes.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the PersistentVolumes.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<PersistentVolumeV1>> WatchAll(string labelSelector = null)\n        {\n            return ObserveEvents<PersistentVolumeV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/PersistentVolumes with label selector '{labelSelector ?? \"<none>\"}'\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"PersistentVolumeV1\"/>.\n        /// </summary>\n        /// <param name=\"newPersistentVolume\">\n        ///     A <see cref=\"PersistentVolumeV1\"/> representing the PersistentVolume to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeV1\"/> representing the current state for the newly-created PersistentVolume.\n        /// </returns>\n        public async Task<PersistentVolumeV1> Create(PersistentVolumeV1 newPersistentVolume, CancellationToken cancellationToken = default)\n        {\n            if (newPersistentVolume == null)\n                throw new ArgumentNullException(nameof(newPersistentVolume));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection,\n                    postBody: newPersistentVolume,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<PersistentVolumeV1>(\"create v1/PersistentVolume resource\");\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified PersistentVolume.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the PersistentVolume to delete.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\"delete v1/PersistentVolume resource\", HttpStatusCode.OK, HttpStatusCode.NotFound);\n        }\n\n        /// <summary>\n        ///     Request templates for the PersistentVolumes (v1) API.\n        /// </summary>\n        public static class Requests\n        {\n            /// <summary>\n            ///     A collection-level PersistentVolume (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/persistentvolumes?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name PersistentVolume (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/persistentvolumes/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     A client for the Kubernetes PersistentVolumes (v1) API.\n    /// </summary>\n    public interface IPersistentVolumeClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the PersistentVolume with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the PersistentVolume to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeV1\"/> representing the current state for the PersistentVolume, or <c>null</c> if no PersistentVolume was found with the specified name.\n        /// </returns>\n        Task<PersistentVolumeV1> Get(string name, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all PersistentVolumes, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the PersistentVolumes.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeListV1\"/> containing the PersistentVolumes.\n        /// </returns>\n        Task<PersistentVolumeListV1> List(string labelSelector = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to PersistentVolumes.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the PersistentVolumes.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<PersistentVolumeV1>> WatchAll(string labelSelector = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"PersistentVolumeV1\"/>.\n        /// </summary>\n        /// <param name=\"newPersistentVolume\">\n        ///     A <see cref=\"PersistentVolumeV1\"/> representing the PersistentVolume to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PersistentVolumeV1\"/> representing the current state for the newly-created PersistentVolume.\n        /// </returns>\n        Task<PersistentVolumeV1> Create(PersistentVolumeV1 newPersistentVolume, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified PersistentVolume.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the PersistentVolume to delete.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/PodClientV1.cs",
    "content": "using System;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Pods (v1) API.\n    /// </summary>\n    public class PodClientV1\n        : KubeResourceClient, IPodClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"PodClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public PodClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Pod with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Pod to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PodV1\"/> representing the current state for the Pod, or <c>null</c> if no Pod was found with the specified name and namespace.\n        /// </returns>\n        public async Task<PodV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<PodV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Pods in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Pods.\n        /// </param>\n        /// <param name=\"fieldSelector\">\n        ///     An optional Kubernetes field selector expression used to filter the Pods.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PodListV1\"/> containing the Pods.\n        /// </returns>\n        public async Task<PodListV1> List(string labelSelector = null, string fieldSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<PodListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    FieldSelector = fieldSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Pods.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Pods.\n        /// </param>\n        /// <param name=\"fieldSelector\">\n        ///     An optional Kubernetes field selector expression used to filter the Pods.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<PodV1>> WatchAll(string labelSelector = null, string fieldSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<PodV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    FieldSelector = fieldSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/Pods with label selector '{labelSelector ?? \"<none>\"}' and field selector '{fieldSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Get the combined logs for the Pod with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Pod.\n        /// </param>\n        /// <param name=\"containerName\">\n        ///     The name of the container.\n        /// \n        ///     Not required if the pod only has a single container.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"limitBytes\">\n        ///     Limit the number of bytes returned (optional).\n        /// </param>\n        /// <param name=\"tailLines\">\n        ///     The number of lines from the end of the log to show (optional).\n        /// \n        ///     If not specified, logs are since from the creation of the container.\n        /// </param>\n        /// <param name=\"previous\">\n        ///     Return previous terminated container logs (defaults to <c>false</c>)?\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A string containing the logs.\n        /// </returns>\n        public async Task<string> Logs(string name, string containerName = null, string kubeNamespace = null, int? limitBytes = null, int? tailLines = null, bool? previous = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            HttpResponseMessage responseMessage = await Http.GetAsync(\n                Requests.Logs.WithTemplateParameters(new\n                {\n                    Name = name,\n                    ContainerName = containerName,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LimitBytes = limitBytes,\n                    TailLines = tailLines,\n                    Previous = previous?.ToString().ToLowerInvariant()\n                }),\n                cancellationToken\n            );\n            using (responseMessage)\n            {\n                if (responseMessage.IsSuccessStatusCode)\n                    return await responseMessage.Content.ReadAsStringAsync();\n\n                throw new KubeClientException($\"Unable to retrieve logs for container '{containerName ?? \"<default>\"}' of v1/Pod '{name}' in namespace '{kubeNamespace ?? KubeClient.DefaultNamespace}'.\",\n                    innerException: new HttpRequestException<StatusV1>(responseMessage.StatusCode,\n                    response: await responseMessage.ReadContentAsStatusV1Async(responseMessage.StatusCode).ConfigureAwait(false)\n                ));\n            }\n        }\n\n        /// <summary>\n        ///     Stream the combined logs for the Pod with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Pod.\n        /// </param>\n        /// <param name=\"containerName\">\n        ///     The name of the container.\n        /// \n        ///     Not required if the pod only has a single container.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"limitBytes\">\n        ///     Limit the number of bytes returned (optional).\n        /// </param>\n        /// <param name=\"tailLines\">\n        ///     The number of lines from the end of the log to show (optional).\n        /// \n        ///     If not specified, logs are since from the creation of the container.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> sequence of lines from the log.\n        /// </returns>\n        public IObservable<string> StreamLogs(string name, string containerName = null, string kubeNamespace = null, int? limitBytes = null, int? tailLines = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveLines(\n                Requests.Logs.WithTemplateParameters(new\n                {\n                    Name = name,\n                    ContainerName = containerName,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LimitBytes = limitBytes,\n                    TailLines = tailLines,\n                    Follow = \"true\"\n                }),\n                operationDescription: $\"stream logs for v1/Pod '{name}' (container '{containerName ?? \"<default>\"}') in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"PodV1\"/>.\n        /// </summary>\n        /// <param name=\"newPod\">\n        ///     A <see cref=\"PodV1\"/> representing the Pod to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PodV1\"/> representing the current state for the newly-created Pod.\n        /// </returns>\n        public async Task<PodV1> Create(PodV1 newPod, CancellationToken cancellationToken = default)\n        {\n            if (newPod == null)\n                throw new ArgumentNullException(nameof(newPod));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newPod?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newPod,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<PodV1>(\n                    operationDescription: $\"create v1/Pod resource in namespace {newPod?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}\"\n                );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Pod.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Pod to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PodV1\"/> representing the pod's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/> indicating the operation result.\n        /// </returns>\n        public Task<KubeResourceResultV1<PodV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<PodV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the Pods (v1) API.\n        /// </summary>\n        public static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Pod (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/pods?labelSelector={LabelSelector?}&fieldSelector={FieldSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name Pod (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/pods/{Name}\");\n\n            /// <summary>\n            ///     A get-logs Pod (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Logs = ByName.WithRelativeUri(\"log?container={ContainerName?}&follow={Follow?}&limitBytes={LimitBytes?}&tailLines={TailLines?}&previous={Previous?}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Pods (v1) API.\n    /// </summary>\n    public interface IPodClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Pod with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Pod to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PodV1\"/> representing the current state for the Pod, or <c>null</c> if no Pod was found with the specified name and namespace.\n        /// </returns>\n        Task<PodV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Pods in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Pods.\n        /// </param>\n        /// <param name=\"fieldSelector\">\n        ///     An optional Kubernetes field selector expression used to filter the Pods.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PodListV1\"/> containing the Pods.\n        /// </returns>\n        Task<PodListV1> List(string labelSelector = null, string fieldSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to Pods.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Pods.\n        /// </param>\n        /// <param name=\"fieldSelector\">\n        ///     An optional Kubernetes field selector expression used to filter the Pods.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<PodV1>> WatchAll(string labelSelector = null, string fieldSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Get the combined logs for the Pod with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Pod.\n        /// </param>\n        /// <param name=\"containerName\">\n        ///     The name of the container.\n        /// \n        ///     Not required if the pod only has a single container.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"limitBytes\">\n        ///     Limit the number of bytes returned (optional).\n        /// </param>\n        /// <param name=\"tailLines\">\n        ///     The number of lines from the end of the log to show (optional).\n        /// \n        ///     If not specified, logs are since from the creation of the container.\n        /// </param>\n        /// <param name=\"previous\">\n        ///     Return previous terminated container logs (defaults to <c>false</c>)?\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A string containing the logs.\n        /// </returns>\n        Task<string> Logs(string name, string containerName = null, string kubeNamespace = null, int? limitBytes = null, int? tailLines = null, bool? previous = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Stream the combined logs for the Pod with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Pod.\n        /// </param>\n        /// <param name=\"containerName\">\n        ///     The name of the container.\n        /// \n        ///     Not required if the pod only has a single container.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"limitBytes\">\n        ///     Limit the number of bytes returned (optional).\n        /// </param>\n        /// <param name=\"tailLines\">\n        ///     The number of lines from the end of the log to show (optional).\n        /// \n        ///     If not specified, logs are since from the creation of the container.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> sequence of lines from the log.\n        /// </returns>\n        IObservable<string> StreamLogs(string name, string containerName = null, string kubeNamespace = null, int? limitBytes = null, int? tailLines = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"PodV1\"/>.\n        /// </summary>\n        /// <param name=\"newPod\">\n        ///     A <see cref=\"PodV1\"/> representing the Pod to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PodV1\"/> representing the current state for the newly-created Pod.\n        /// </returns>\n        Task<PodV1> Create(PodV1 newPod, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Pod.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Pod to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"PodV1\"/> representing the pod's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/> indicating the operation result.\n        /// </returns>\n        Task<KubeResourceResultV1<PodV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/ReplicaSetClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes ReplicaSets (v1) API.\n    /// </summary>\n    public class ReplicaSetClientV1\n        : KubeResourceClient, IReplicaSetClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"ReplicaSetClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public ReplicaSetClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the ReplicaSet with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ReplicaSet to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the current state for the ReplicaSet, or <c>null</c> if no ReplicaSet was found with the specified name and namespace.\n        /// </returns>\n        public async Task<ReplicaSetV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<ReplicaSetV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all ReplicaSets in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ReplicaSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetListV1\"/> containing the ReplicaSets.\n        /// </returns>\n        public async Task<ReplicaSetListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<ReplicaSetListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to ReplicaSets.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ReplicaSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<ReplicaSetV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<ReplicaSetV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/ReplicaSets with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ReplicaSetV1\"/>.\n        /// </summary>\n        /// <param name=\"newReplicaSet\">\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the ReplicaSet to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the current state for the newly-created ReplicaSet.\n        /// </returns>\n        public async Task<ReplicaSetV1> Create(ReplicaSetV1 newReplicaSet, CancellationToken cancellationToken = default)\n        {\n            if (newReplicaSet == null)\n                throw new ArgumentNullException(nameof(newReplicaSet));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newReplicaSet?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newReplicaSet,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<ReplicaSetV1>(\n                    operationDescription: $\"create v1/ReplicaSet in namespace '{newReplicaSet?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}'\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ReplicaSetV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target ReplicaSet.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the current state for the updated ReplicaSet.\n        /// </returns>\n        public async Task<ReplicaSetV1> Update(string name, Action<JsonPatchDocument<ReplicaSetV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified ReplicaSet.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ReplicaSet to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the replica set's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<ReplicaSetV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<ReplicaSetV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the ReplicaSet (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level ReplicaSet (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"/apis/apps/v1/namespaces/{Namespace}/replicasets?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name ReplicaSet (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"/apis/apps/v1/namespaces/{Namespace}/replicasets/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     A client for the Kubernetes ReplicaSets (v1beta1) API.\n    /// </summary>\n    public interface IReplicaSetClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the ReplicaSet with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ReplicaSet to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the current state for the ReplicaSet, or <c>null</c> if no ReplicaSet was found with the specified name and namespace.\n        /// </returns>\n        Task<ReplicaSetV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all ReplicaSets in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ReplicaSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetListV1\"/> containing the ReplicaSets.\n        /// </returns>\n        Task<ReplicaSetListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to ReplicaSets.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ReplicaSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<ReplicaSetV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ReplicaSetV1\"/>.\n        /// </summary>\n        /// <param name=\"newReplicaSet\">\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the ReplicaSet to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the current state for the newly-created ReplicaSet.\n        /// </returns>\n        Task<ReplicaSetV1> Create(ReplicaSetV1 newReplicaSet, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ReplicaSetV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target ReplicaSet.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the current state for the updated ReplicaSet.\n        /// </returns>\n        Task<ReplicaSetV1> Update(string name, Action<JsonPatchDocument<ReplicaSetV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified ReplicaSet.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ReplicaSet to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicaSetV1\"/> representing the replica set's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<ReplicaSetV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/ReplicationControllerClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes ReplicationControllers (v1) API.\n    /// </summary>\n    public class ReplicationControllerClientV1\n        : KubeResourceClient, IReplicationControllerClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"ReplicationControllerClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public ReplicationControllerClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the ReplicationController with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ReplicationController to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the current state for the ReplicationController, or <c>null</c> if no ReplicationController was found with the specified name and namespace.\n        /// </returns>\n        public async Task<ReplicationControllerV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<ReplicationControllerV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all ReplicationControllers in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ReplicationControllers.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerListV1\"/> containing the ReplicationControllers.\n        /// </returns>\n        public async Task<ReplicationControllerListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<ReplicationControllerListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to ReplicationControllers.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ReplicationControllers.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<ReplicationControllerV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<ReplicationControllerV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/ReplicationControllers with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ReplicationControllerV1\"/>.\n        /// </summary>\n        /// <param name=\"newController\">\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the ReplicationController to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the current state for the newly-created ReplicationController.\n        /// </returns>\n        public async Task<ReplicationControllerV1> Create(ReplicationControllerV1 newController, CancellationToken cancellationToken = default)\n        {\n            if (newController == null)\n                throw new ArgumentNullException(nameof(newController));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newController?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newController,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<ReplicationControllerV1>(\n                    operationDescription: $\"create v1/ReplicationController resource in namespace '{newController?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}'\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ReplicationControllerV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target ReplicationController.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the current state for the updated ReplicationController.\n        /// </returns>\n        public async Task<ReplicationControllerV1> Update(string name, Action<JsonPatchDocument<ReplicationControllerV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified ReplicationController.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ReplicationController to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the replication controller's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<ReplicationControllerV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<ReplicationControllerV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the ReplicationController (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level ReplicationController (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/replicationcontrollers?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name ReplicationController (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/replicationcontrollers/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     A client for the Kubernetes ReplicationControllers (v1) API.\n    /// </summary>\n    public interface IReplicationControllerClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the ReplicationController with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ReplicationController to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the current state for the ReplicationController, or <c>null</c> if no ReplicationController was found with the specified name and namespace.\n        /// </returns>\n        Task<ReplicationControllerV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all ReplicationControllers in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ReplicationControllers.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerListV1\"/> containing the ReplicationControllers.\n        /// </returns>\n        Task<ReplicationControllerListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to ReplicationControllers.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ReplicationControllers.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<ReplicationControllerV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ReplicationControllerV1\"/>.\n        /// </summary>\n        /// <param name=\"newReplicationController\">\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the ReplicationController to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the current state for the newly-created ReplicationController.\n        /// </returns>\n        Task<ReplicationControllerV1> Create(ReplicationControllerV1 newReplicationController, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ReplicationControllerV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target ReplicationController.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the current state for the updated ReplicationController.\n        /// </returns>\n        Task<ReplicationControllerV1> Update(string name, Action<JsonPatchDocument<ReplicationControllerV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified ReplicationController.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ReplicationController to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ReplicationControllerV1\"/> representing the replication controller's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<ReplicationControllerV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/RoleBindingClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Nodes (v1) API.\n    /// </summary>\n    public class RoleBindingClientV1\n        : KubeResourceClient, IRoleBindingClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"RoleBindingClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public RoleBindingClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the RoleBinding with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the RoleBinding to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleBindingV1\"/> representing the current state for the RoleBinding, or <c>null</c> if no RoleBinding was found with the specified name and namespace.\n        /// </returns>\n        public async Task<RoleBindingV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<RoleBindingV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all RoleBindings in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the RoleBindings.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleBindingListV1\"/> containing the role bindings.\n        /// </returns>\n        public async Task<RoleBindingListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<RoleBindingListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific RoleBinding.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the RoleBinding to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<RoleBindingV1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<RoleBindingV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/RoleBinding '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"RoleBindingV1\"/>.\n        /// </summary>\n        /// <param name=\"newRoleBinding\">\n        ///     A <see cref=\"RoleBindingV1\"/> representing the RoleBinding to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleBindingV1\"/> representing the current state for the newly-created RoleBinding.\n        /// </returns>\n        public async Task<RoleBindingV1> Create(RoleBindingV1 newRoleBinding, CancellationToken cancellationToken = default)\n        {\n            if (newRoleBinding == null)\n                throw new ArgumentNullException(nameof(newRoleBinding));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newRoleBinding?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newRoleBinding,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<RoleBindingV1>(\n                    operationDescription: $\"create v1/RoleBinding resource in namespace '{newRoleBinding?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}'\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"RoleBindingV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target RoleBinding.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleBindingV1\"/> representing the current state for the updated RoleBinding.\n        /// </returns>\n        public async Task<RoleBindingV1> Update(string name, Action<JsonPatchDocument<RoleBindingV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified RoleBinding.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the RoleBinding to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name,\n                        Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\n                    $\"delete v1/RoleBinding resource '{name}' in namespace '{kubeNamespace ?? KubeClient.DefaultNamespace}'\",\n                    HttpStatusCode.OK, HttpStatusCode.NotFound\n                );\n        }\n\n        /// <summary>\n        ///     Request templates for the RoleBinding (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level RoleBinding (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/rbac.authorization.k8s.io/v1/namespaces/{Namespace}/rolebindings?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name RoleBinding (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/rbac.authorization.k8s.io/v1/namespaces/{Namespace}/rolebindings/{Name}\");\n\n            /// <summary>\n            ///     A watch-by-name RoleBinding (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"apis/rbac.authorization.k8s.io/v1/namespaces/{Namespace}/rolebindings/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     A client for the Kubernetes Nodes (v1) API.\n    /// </summary>\n    public interface IRoleBindingClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the RoleBinding with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the RoleBinding to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleBindingV1\"/> representing the current state for the RoleBinding, or <c>null</c> if no RoleBinding was found with the specified name and namespace.\n        /// </returns>\n        Task<RoleBindingV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all RoleBindings in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the RoleBindings.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleBindingListV1\"/> containing the RoleBindings.\n        /// </returns>\n        Task<RoleBindingListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific RoleBinding.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the RoleBinding to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<RoleBindingV1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"RoleBindingV1\"/>.\n        /// </summary>\n        /// <param name=\"newRoleBinding\">\n        ///     A <see cref=\"RoleBindingV1\"/> representing the RoleBinding to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleBindingV1\"/> representing the current state for the newly-created RoleBinding.\n        /// </returns>\n        Task<RoleBindingV1> Create(RoleBindingV1 newRoleBinding, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"RoleBindingV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target RoleBinding.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleBindingV1\"/> representing the current state for the updated RoleBinding.\n        /// </returns>\n        Task<RoleBindingV1> Update(string name, Action<JsonPatchDocument<RoleBindingV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified RoleBinding.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the RoleBinding to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n    }\n}"
  },
  {
    "path": "src/KubeClient/ResourceClients/RoleClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Nodes (v1) API.\n    /// </summary>\n    public class RoleClientV1\n        : KubeResourceClient, IRoleClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"RoleClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public RoleClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Role with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Role to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleV1\"/> representing the current state for the Role, or <c>null</c> if no Role was found with the specified name and namespace.\n        /// </returns>\n        public async Task<RoleV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<RoleV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Roles in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Roles.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleListV1\"/> containing the roles.\n        /// </returns>\n        public async Task<RoleListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<RoleListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific Role.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Role to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<RoleV1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<RoleV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/Role '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"RoleV1\"/>.\n        /// </summary>\n        /// <param name=\"newRole\">\n        ///     A <see cref=\"RoleV1\"/> representing the Role to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleV1\"/> representing the current state for the newly-created Role.\n        /// </returns>\n        public async Task<RoleV1> Create(RoleV1 newRole, CancellationToken cancellationToken = default)\n        {\n            if (newRole == null)\n                throw new ArgumentNullException(nameof(newRole));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newRole?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newRole,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<RoleV1>(\n                    operationDescription: $\"create v1/Role resource in namespace '{newRole?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}'\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"RoleV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Role.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleV1\"/> representing the current state for the updated Role.\n        /// </returns>\n        public async Task<RoleV1> Update(string name, Action<JsonPatchDocument<RoleV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Role.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Role to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name,\n                        Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\n                    $\"delete v1/Role resource '{name}' in namespace '{kubeNamespace ?? KubeClient.DefaultNamespace}'\",\n                    HttpStatusCode.OK, HttpStatusCode.NotFound\n                );\n        }\n\n        /// <summary>\n        ///     Request templates for the Role (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Role (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/rbac.authorization.k8s.io/v1/namespaces/{Namespace}/roles?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name Role (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/rbac.authorization.k8s.io/v1/namespaces/{Namespace}/roles/{Name}\");\n\n            /// <summary>\n            ///     A watch-by-name Role (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"apis/rbac.authorization.k8s.io/v1/namespaces/{Namespace}/roles/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     A client for the Kubernetes Nodes (v1) API.\n    /// </summary>\n    public interface IRoleClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Role with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Role to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleV1\"/> representing the current state for the Role, or <c>null</c> if no Role was found with the specified name and namespace.\n        /// </returns>\n        Task<RoleV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Roles in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Roles.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleListV1\"/> containing the Roles.\n        /// </returns>\n        Task<RoleListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific Role.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Role to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<RoleV1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"RoleV1\"/>.\n        /// </summary>\n        /// <param name=\"newRole\">\n        ///     A <see cref=\"RoleV1\"/> representing the Role to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleV1\"/> representing the current state for the newly-created Role.\n        /// </returns>\n        Task<RoleV1> Create(RoleV1 newRole, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"RoleV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Role.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RoleV1\"/> representing the current state for the updated Role.\n        /// </returns>\n        Task<RoleV1> Update(string name, Action<JsonPatchDocument<RoleV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Role.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Role to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n    }\n}"
  },
  {
    "path": "src/KubeClient/ResourceClients/SecretClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Secrets (v1) API.\n    /// </summary>\n    public class SecretClientV1\n        : KubeResourceClient, ISecretClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"SecretClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public SecretClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Secret with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Secret to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretV1\"/> representing the current state for the Secret, or <c>null</c> if no Secret was found with the specified name and namespace.\n        /// </returns>\n        public async Task<SecretV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<SecretV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Secrets in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Secrets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretListV1\"/> containing the secrets.\n        /// </returns>\n        public async Task<SecretListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<SecretListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific Secret.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Secret to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<SecretV1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<SecretV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/Secret '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Secrets.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Secrets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<SecretV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<SecretV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/Secrets with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"SecretV1\"/>.\n        /// </summary>\n        /// <param name=\"newSecret\">\n        ///     A <see cref=\"SecretV1\"/> representing the Secret to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretV1\"/> representing the current state for the newly-created Secret.\n        /// </returns>\n        public async Task<SecretV1> Create(SecretV1 newSecret, CancellationToken cancellationToken = default)\n        {\n            if (newSecret == null)\n                throw new ArgumentNullException(nameof(newSecret));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newSecret?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newSecret,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<SecretV1>(\n                    operationDescription: $\"create v1/Secret resource in namespace '{newSecret?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}'\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"SecretV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Secret.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretV1\"/> representing the current state for the updated Secret.\n        /// </returns>\n        public async Task<SecretV1> Update(string name, Action<JsonPatchDocument<SecretV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Secret.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Secret to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name,\n                        Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\n                    $\"delete v1/Secret resource '{name}' in namespace '{kubeNamespace ?? KubeClient.DefaultNamespace}'\",\n                    HttpStatusCode.OK, HttpStatusCode.NotFound\n                );\n        }\n\n        /// <summary>\n        ///     Request templates for the Secret (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Secret (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/secrets?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name Secret (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/secrets/{Name}\");\n\n            /// <summary>\n            ///     A watch-by-name Secret (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"api/v1/watch/namespaces/{Namespace}/secrets/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Secrets (v1) API.\n    /// </summary>\n    public interface ISecretClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Secret with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Secret to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretV1\"/> representing the current state for the Secret, or <c>null</c> if no Secret was found with the specified name and namespace.\n        /// </returns>\n        Task<SecretV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Secrets in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Secrets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretListV1\"/> containing the Secrets.\n        /// </returns>\n        Task<SecretListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific Secret.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Secret to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<SecretV1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Watch for events relating to Secrets.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Secrets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<SecretV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"SecretV1\"/>.\n        /// </summary>\n        /// <param name=\"newSecret\">\n        ///     A <see cref=\"SecretV1\"/> representing the Secret to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretV1\"/> representing the current state for the newly-created Secret.\n        /// </returns>\n        Task<SecretV1> Create(SecretV1 newSecret, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"SecretV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Secret.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SecretV1\"/> representing the current state for the updated Secret.\n        /// </returns>\n        Task<SecretV1> Update(string name, Action<JsonPatchDocument<SecretV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Secret.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Secret to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/ServiceAccountClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Nodes (v1) API.\n    /// </summary>\n    public class ServiceAccountClientV1\n        : KubeResourceClient, IServiceAccountClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"ServiceAccountClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public ServiceAccountClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the ServiceAccount with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ServiceAccount to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceAccountV1\"/> representing the current state for the ServiceAccount, or <c>null</c> if no ServiceAccount was found with the specified name and namespace.\n        /// </returns>\n        public async Task<ServiceAccountV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<ServiceAccountV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all ServiceAccounts in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ServiceAccounts.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceAccountListV1\"/> containing the service accounts.\n        /// </returns>\n        public async Task<ServiceAccountListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<ServiceAccountListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific ServiceAccount.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ServiceAccount to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<ServiceAccountV1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<ServiceAccountV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/ServiceAccount '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ServiceAccountV1\"/>.\n        /// </summary>\n        /// <param name=\"newServiceAccount\">\n        ///     A <see cref=\"ServiceAccountV1\"/> representing the ServiceAccount to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceAccountV1\"/> representing the current state for the newly-created ServiceAccount.\n        /// </returns>\n        public async Task<ServiceAccountV1> Create(ServiceAccountV1 newServiceAccount, CancellationToken cancellationToken = default)\n        {\n            if (newServiceAccount == null)\n                throw new ArgumentNullException(nameof(newServiceAccount));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newServiceAccount?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newServiceAccount,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<ServiceAccountV1>(\n                    operationDescription: $\"create v1/ServiceAccount resource in namespace '{newServiceAccount?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}'\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ServiceAccountV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target ServiceAccount.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceAccountV1\"/> representing the current state for the updated ServiceAccount.\n        /// </returns>\n        public async Task<ServiceAccountV1> Update(string name, Action<JsonPatchDocument<ServiceAccountV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified ServiceAccount.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ServiceAccount to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name,\n                        Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\n                    $\"delete v1/ServiceAccount resource '{name}' in namespace '{kubeNamespace ?? KubeClient.DefaultNamespace}'\",\n                    HttpStatusCode.OK, HttpStatusCode.NotFound\n                );\n        }\n\n        /// <summary>\n        ///     Request templates for the ServiceAccount (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level ServiceAccount (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/serviceaccounts?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name ServiceAccount (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/serviceaccounts/{Name}\");\n\n            /// <summary>\n            ///     A watch-by-name ServiceAccount (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/serviceaccounts/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     A client for the Kubernetes Nodes (v1) API.\n    /// </summary>\n    public interface IServiceAccountClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the ServiceAccount with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ServiceAccount to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceAccountV1\"/> representing the current state for the ServiceAccount, or <c>null</c> if no ServiceAccount was found with the specified name and namespace.\n        /// </returns>\n        Task<ServiceAccountV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all ServiceAccounts in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the ServiceAccounts.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceAccountListV1\"/> containing the ServiceAccounts.\n        /// </returns>\n        Task<ServiceAccountListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific ServiceAccount.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ServiceAccount to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<ServiceAccountV1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ServiceAccountV1\"/>.\n        /// </summary>\n        /// <param name=\"newServiceAccount\">\n        ///     A <see cref=\"ServiceAccountV1\"/> representing the ServiceAccount to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceAccountV1\"/> representing the current state for the newly-created ServiceAccount.\n        /// </returns>\n        Task<ServiceAccountV1> Create(ServiceAccountV1 newServiceAccount, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ServiceAccountV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target ServiceAccount.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceAccountV1\"/> representing the current state for the updated ServiceAccount.\n        /// </returns>\n        Task<ServiceAccountV1> Update(string name, Action<JsonPatchDocument<ServiceAccountV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified ServiceAccount.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the ServiceAccount to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n    }\n}"
  },
  {
    "path": "src/KubeClient/ResourceClients/ServiceClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Net;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes Services (v1) API.\n    /// </summary>\n    public class ServiceClientV1\n        : KubeResourceClient, IServiceClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"ServiceClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public ServiceClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the Service with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Service to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceV1\"/> representing the current state for the Service, or <c>null</c> if no Service was found with the specified name and namespace.\n        /// </returns>\n        public async Task<ServiceV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<ServiceV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all Services in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Services.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceListV1\"/> containing the Services.\n        /// </returns>\n        public async Task<ServiceListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<ServiceListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific Service.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Service to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<ServiceV1>> Watch(string name, string kubeNamespace = null)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<ServiceV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                operationDescription: $\"watch v1/Service '{name}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to Services.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Services.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<ServiceV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<ServiceV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/Services with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ServiceV1\"/>.\n        /// </summary>\n        /// <param name=\"newService\">\n        ///     A <see cref=\"ServiceV1\"/> representing the Service to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceV1\"/> representing the current state for the newly-created Service.\n        /// </returns>\n        public async Task<ServiceV1> Create(ServiceV1 newService, CancellationToken cancellationToken = default)\n        {\n            if (newService == null)\n                throw new ArgumentNullException(nameof(newService));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newService?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newService,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<ServiceV1>(\n                    operationDescription: $\"create v1/Service resource in namespace '{newService?.Metadata?.Namespace ?? KubeClient.DefaultNamespace}'\"\n                );\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ServiceV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Service.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceV1\"/> representing the current state for the updated Service.\n        /// </returns>\n        public async Task<ServiceV1> Update(string name, Action<JsonPatchDocument<ServiceV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified Service.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Service to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        public async Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await Http\n                .DeleteAsync(\n                    Requests.ByName.WithTemplateParameters(new\n                    {\n                        Name = name,\n                        Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                    }),\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatusV1>(\n                    $\"delete v1/Service resource '{name}' in namespace '{kubeNamespace ?? KubeClient.DefaultNamespace}'\",\n                    HttpStatusCode.OK, HttpStatusCode.NotFound\n                );\n        }\n\n        /// <summary>\n        ///     Request templates for the Service (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level Service (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/services?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name Service (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"api/v1/namespaces/{Namespace}/services/{Name}\");\n\n            /// <summary>\n            ///     A watch-by-name Service (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"api/v1/watch/namespaces/{Namespace}/services/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes Services (v1) API.\n    /// </summary>\n    public interface IServiceClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the Service with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Service to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceV1\"/> representing the current state for the Service, or <c>null</c> if no Service was found with the specified name and namespace.\n        /// </returns>\n        Task<ServiceV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all Services in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the Services.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceListV1\"/> containing the Services.\n        /// </returns>\n        Task<ServiceListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific Service.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Service to watch.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<ServiceV1>> Watch(string name, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"ServiceV1\"/>.\n        /// </summary>\n        /// <param name=\"newService\">\n        ///     A <see cref=\"ServiceV1\"/> representing the Service to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceV1\"/> representing the current state for the newly-created Service.\n        /// </returns>\n        Task<ServiceV1> Create(ServiceV1 newService, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"ServiceV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target Service.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"ServiceV1\"/> representing the current state for the updated Service.\n        /// </returns>\n        Task<ServiceV1> Update(string name, Action<JsonPatchDocument<ServiceV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified Service.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the Service to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"StatusV1\"/> indicating the result of the request.\n        /// </returns>\n        Task<StatusV1> Delete(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/ResourceClients/StatefulSetClientV1.cs",
    "content": "using Microsoft.AspNetCore.JsonPatch;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes StatefulSet (v1) API.\n    /// </summary>\n    public class StatefulSetClientV1\n        : KubeResourceClient, IStatefulSetClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"StatefulSetClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public StatefulSetClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the StatefulSet with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the StatefulSet to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetV1\"/> representing the current state for the StatefulSet, or <c>null</c> if no StatefulSet was found with the specified name and namespace.\n        /// </returns>\n        public async Task<StatefulSetV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<StatefulSetV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all StatefulSets in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the StatefulSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetListV1\"/> containing the StatefulSets.\n        /// </returns>\n        public async Task<StatefulSetListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<StatefulSetListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to StatefulSets.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the StatefulSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<StatefulSetV1>> WatchAll(string labelSelector = null, string kubeNamespace = null)\n        {\n            return ObserveEvents<StatefulSetV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace,\n                    LabelSelector = labelSelector,\n                    Watch = true\n                }),\n                operationDescription: $\"watch all v1/StatefulSets with label selector '{labelSelector ?? \"<none>\"}' in namespace {kubeNamespace ?? KubeClient.DefaultNamespace}\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"StatefulSetV1\"/>.\n        /// </summary>\n        /// <param name=\"newStatefulSet\">\n        ///     A <see cref=\"StatefulSetV1\"/> representing the StatefulSet to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetV1\"/> representing the current state for the newly-created StatefulSet.\n        /// </returns>\n        public async Task<StatefulSetV1> Create(StatefulSetV1 newStatefulSet, CancellationToken cancellationToken = default)\n        {\n            if (newStatefulSet == null)\n                throw new ArgumentNullException(nameof(newStatefulSet));\n\n            return await Http\n                .PostAsJsonAsync(\n                    Requests.Collection.WithTemplateParameters(new\n                    {\n                        Namespace = newStatefulSet?.Metadata?.Namespace ?? KubeClient.DefaultNamespace\n                    }),\n                    postBody: newStatefulSet,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<StatefulSetV1>(\"create v1/StatefulSet resource\");\n        }\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"StatefulSetV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target StatefulSet.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetV1\"/> representing the current state for the updated StatefulSet.\n        /// </returns>\n        public async Task<StatefulSetV1> Update(string name, Action<JsonPatchDocument<StatefulSetV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (patchAction == null)\n                throw new ArgumentNullException(nameof(patchAction));\n\n            return await PatchResource(patchAction,\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name,\n                    Namespace = kubeNamespace ?? KubeClient.DefaultNamespace\n                }),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified StatefulSet.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the StatefulSet to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetV1\"/> representing the StatefulSet's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<StatefulSetV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteResource<StatefulSetV1>(Requests.ByName, name, kubeNamespace, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the StatefulSets (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level StatefulSet (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/apps/v1/namespaces/{Namespace}/statefulsets?labelSelector={LabelSelector?}&watch={Watch?}\");\n\n            /// <summary>\n            ///     A get-by-name StatefulSet (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/apps/v1/namespaces/{Namespace}/statefulsets/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes StatefulSets (v1) API.\n    /// </summary>\n    public interface IStatefulSetClientV1\n        : IKubeResourceClient\n    {\n        /// <summary>\n        ///     Get the StatefulSet with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the StatefulSet to retrieve.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetV1\"/> representing the current state for the StatefulSet, or <c>null</c> if no StatefulSet was found with the specified name and namespace.\n        /// </returns>\n        Task<StatefulSetV1> Get(string name, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all StatefulSets in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the StatefulSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetListV1\"/> containing the StatefulSets.\n        /// </returns>\n        Task<StatefulSetListV1> List(string labelSelector = null, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to StatefulSets.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the StatefulSets.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<StatefulSetV1>> WatchAll(string labelSelector = null, string kubeNamespace = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"StatefulSetV1\"/>.\n        /// </summary>\n        /// <param name=\"newStatefulSet\">\n        ///     A <see cref=\"StatefulSetV1\"/> representing the StatefulSet to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetV1\"/> representing the current state for the newly-created StatefulSet.\n        /// </returns>\n        Task<StatefulSetV1> Create(StatefulSetV1 newStatefulSet, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request update (PATCH) of a <see cref=\"StatefulSetV1\"/>.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the target StatefulSet.\n        /// </param>\n        /// <param name=\"patchAction\">\n        ///     A delegate that customises the patch operation.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetV1\"/> representing the current state for the updated StatefulSet.\n        /// </returns>\n        Task<StatefulSetV1> Update(string name, Action<JsonPatchDocument<StatefulSetV1>> patchAction, string kubeNamespace = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified StatefulSet.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the StatefulSet to delete.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The target Kubernetes namespace (defaults to <see cref=\"KubeApiClient.DefaultNamespace\"/>).\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"StatefulSetV1\"/> representing the StatefulSet's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<StatefulSetV1>> Delete(string name, string kubeNamespace = null, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Utilities/HttpRequestHelper.cs",
    "content": "﻿using System;\nusing System.Net.Http;\n\nnamespace KubeClient.Utilities\n{\n    using Http;\n\n    /// <summary>\n    ///     Helper methods for working with <see cref=\"HttpRequest\"/> and related types.\n    /// </summary>\n    public static class HttpRequestHelper\n    {\n        /// <summary>\n        ///     Expand an <see cref=\"HttpRequest\"/>'s request URI, populating its URI template if necessary.\n        /// </summary>\n        /// <param name=\"request\">\n        ///     The target <see cref=\"HttpRequest\"/>.\n        /// </param>\n        /// <param name=\"baseUri\">\n        ///     The base URI to use (optional, unless <see cref=\"HttpRequestBase.Uri\"/> is <c>null</c> or not an absolute URI).\n        /// </param>\n        /// <returns>\n        ///     The expanded request URI (always an absolute URI).\n        /// </returns>\n        public static Uri ExpandRequestUri(this HttpRequest request, Uri baseUri = null)\n        {\n            using (HttpRequestMessage requestMessage = request.BuildRequestMessage(HttpMethod.Get, body: null, baseUri))\n            {\n                return requestMessage.RequestUri;\n            }\n        }\n\n        /// <summary>\n        ///     Expand an <see cref=\"HttpRequest{TContext}\"/>'s request URI, populating its URI template if necessary.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///     The type of object used as a context when evaluating request template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///     The target <see cref=\"HttpRequest{TContext}\"/>.\n        /// </param>\n        /// <param name=\"context\">\n        ///     The <typeparamref name=\"TContext\"/> used as a context when evaluating request template parameters.\n        /// </param>\n        /// <param name=\"baseUri\">\n        ///     The base URI to use (optional, unless <see cref=\"HttpRequestBase.Uri\"/> is <c>null</c> or not an absolute URI).\n        /// </param>\n        /// <returns>\n        ///     The expanded request URI (always an absolute URI).\n        /// </returns>\n        public static Uri ExpandRequestUri<TContext>(this HttpRequest<TContext> request, TContext context, Uri baseUri = null)\n        {\n            using (HttpRequestMessage requestMessage = request.BuildRequestMessage(HttpMethod.Get, context, body: null, baseUri))\n            {\n                return requestMessage.RequestUri;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Utilities/ProcessHelper.cs",
    "content": "using System;\nusing System.Diagnostics;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Utilities\n{\n    /// <summary>\n    ///     Helper methods for working with a <see cref=\"Process\"/>.\n    /// </summary>\n    static class ProcessHelper\n    {\n        /// <summary>\n        ///     Asynchronously wait for the process to exit.\n        /// </summary>\n        /// <param name=\"process\">\n        ///     The target <see cref=\"Process\"/>.\n        /// </param>\n        /// <returns>\n        ///     The process exit code.\n        /// </returns>\n        public static Task<int> WaitForExitAsync(this Process process)\n        {\n            return process.WaitForExitAsync(CancellationToken.None, killIfCancelled: false);\n        }\n        \n        /// <summary>\n        ///     Asynchronously wait for the process to exit.\n        /// </summary>\n        /// <param name=\"process\">\n        ///     The target <see cref=\"Process\"/>.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     A <see cref=\"CancellationToken\"/> that can be used to cancel the wait.\n        /// </param>\n        /// <returns>\n        ///     The process exit code.\n        /// </returns>\n        public static Task<int> WaitForExitAsync(this Process process, CancellationToken cancellationToken)\n        {\n            return process.WaitForExitAsync(cancellationToken, killIfCancelled: false);\n        }\n\n        /// <summary>\n        ///     Asynchronously wait for the process to exit.\n        /// </summary>\n        /// <param name=\"process\">\n        ///     The target <see cref=\"Process\"/>.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     A <see cref=\"CancellationToken\"/> that can be used to cancel the wait.\n        /// </param>\n        /// <param name=\"killIfCancelled\">\n        ///     Kill the process if the <paramref name=\"cancellationToken\"/> is cancelled?\n        /// </param>\n        /// <returns>\n        ///     The process exit code.\n        /// </returns>\n        public static Task<int> WaitForExitAsync(this Process process, CancellationToken cancellationToken, bool killIfCancelled)\n        {\n            if (process == null)\n                throw new ArgumentNullException(nameof(process));\n\n            // Short-circuit: already exited.\n            if (process.HasExited)\n                return Task.FromResult(process.ExitCode);\n            \n            TaskCompletionSource<int> completion = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);\n            \n            cancellationToken.Register(() =>\n            {\n                try\n                {\n                    if (killIfCancelled && !process.HasExited)\n                        process.Kill();\n                }\n                finally\n                {\n                    completion.TrySetCanceled(cancellationToken);\n                }\n            });\n\n            process.Exited += (sender, eventArgs) =>\n            {\n                completion.TrySetResult(process.ExitCode);\n            };\n            process.EnableRaisingEvents = true;\n\n            // Short-circuit: exited while we were hooking event (i.e. race condition).\n            if (process.HasExited)\n                completion.TrySetResult(process.ExitCode);\n\n            return completion.Task;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient/Utilities/UriHelper.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Utilities\n{\n    /// <summary>\n    ///     Helper methods for working with <see cref=\"Uri\"/>s.\n    /// </summary>\n    public static class UriHelper\n    {\n        /// <summary>\n        ///     A dummy URI to be used as the base URI when dealing with relative URIs.\n        /// </summary>\n        static readonly Uri DummyBaseUri = new Uri(\"https://dummy-host\");\n\n        /// <summary>\n        ///     Get the path (and, if present, the query) of a URI.\n        /// </summary>\n        /// <param name=\"uri\">\n        ///     The target <see cref=\"Uri\"/>.\n        /// </param>\n        /// <returns>\n        ///     The URI's path and query.\n        /// </returns>\n        /// <remarks>\n        ///     Unlike <see cref=\"Uri.PathAndQuery\"/>, also handles relative URIs.\n        /// </remarks>\n        public static string SafeGetPathAndQuery(this Uri uri)\n        {\n            if (uri == null)\n                throw new ArgumentNullException(nameof(uri));\n\n            return uri.EnsureAbsolute().PathAndQuery;\n        }\n\n        /// <summary>\n        ///     Ensure that the URI is an absolute URI.\n        /// </summary>\n        /// <param name=\"uri\">\n        ///     The target URI.\n        /// </param>\n        /// <returns>\n        ///     The target URI, if <see cref=\"Uri.IsAbsoluteUri\"/> is <c>true</c>; otherwise, an absolute URI using <see cref=\"DummyBaseUri\"/> as the base URI.\n        /// </returns>\n        static Uri EnsureAbsolute(this Uri uri)\n        {\n            if (uri == null)\n                throw new ArgumentNullException(nameof(uri));\n\n            if (uri.IsAbsoluteUri)\n                return uri;\n\n            // Slightly ugly, but System.Uri doesn't attempt to parse relative URIs so we have to convert it to an absolute URI.\n            Uri absoluteUri = new Uri(DummyBaseUri, relativeUri: uri);\n\n            return absoluteUri;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Core/AssemblyVisiblity.cs",
    "content": "﻿using System.Runtime.CompilerServices;\n\n[assembly: InternalsVisibleTo(\"KubeClient.Tests\")]\n"
  },
  {
    "path": "src/KubeClient.Core/IKubeApiClient.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Net.Http;\n\nnamespace KubeClient\n{\n    using ResourceClients;\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes API.\n    /// </summary>\n    public interface IKubeApiClient\n        : IDisposable\n    {\n        /// <summary>\n        ///     The base address of the Kubernetes API end-point targeted by the client.\n        /// </summary>\n        Uri ApiEndPoint { get; }\n\n        /// <summary>\n        ///     The default Kubernetes namespace.\n        /// </summary>\n        string DefaultNamespace { get; set; }\n\n        /// <summary>\n        ///     The underlying HTTP client.\n        /// </summary>\n        HttpClient Http { get; }\n\n        /// <summary>\n        ///     The <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </summary>\n        ILoggerFactory LoggerFactory { get; }\n\n        /// <summary>\n        ///     Get a copy of the <see cref=\"KubeClientOptions\"/> used to configure the client.\n        /// </summary>\n        /// <returns>\n        ///     The <see cref=\"KubeClientOptions\"/>.\n        /// </returns>\n        KubeClientOptions GetClientOptions();\n\n        /// <summary>\n        ///     Get or create a Kubernetes resource client of the specified type.\n        /// </summary>\n        /// <typeparam name=\"TClient\">\n        ///     The type of Kubernetes resource client to get or create.\n        /// </typeparam>\n        /// <param name=\"clientFactory\">\n        ///     A delegate that creates the resource client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        TClient ResourceClient<TClient>(Func<IKubeApiClient, TClient> clientFactory)\n            where TClient : IKubeResourceClient;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Core/K8sAnnotations.cs",
    "content": "namespace KubeClient\n{\n    /// <summary>\n    ///     Well-known annotation keys used by Kubernetes.\n    /// </summary>\n    public static class K8sAnnotations\n    {\n        /// <summary>\n        ///     Well-known (deployment-specific) annotation keys used by Kubernetes.\n        /// </summary>\n        public static class Deployment\n        {\n            /// <summary>\n            ///     The annotation key representing a specific revision of a Deployment.\n            /// </summary>\n            public const string Revision = \"deployment.kubernetes.io/revision\";\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Core/KubeClient.Core.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n    \n    <RootNamespace>KubeClient</RootNamespace>\n\n    <Description>Common functionality for KubeClient (dotnet-kube-client)</Description>\n  </PropertyGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'netstandard2.1'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Core/KubeClientConstants.cs",
    "content": "namespace KubeClient\n{\n    /// <summary>\n    ///     Constants for the Kubernetes API client.\n    /// </summary>\n    public static class KubeClientConstants\n    {\n        /// <summary>\n        ///     Environment Variable set in a Kubernetes Pod containing the host name of the API Service\n        /// </summary>\n        public const string KubernetesServiceHost = \"KUBERNETES_SERVICE_HOST\";\n        \n        /// <summary>\n        ///     Environment Variable set in a Kubernetes Pod containing the port of the API Service\n        /// </summary>\n        public const string KubernetesServicePort = \"KUBERNETES_SERVICE_PORT\";\n\n        /// <summary>\n        ///     Default path of mounted volume containing Kubernetes service account token, CA certificate, and default namespace.\n        /// </summary>\n        public const string DefaultServiceAccountPath = \"/var/run/secrets/kubernetes.io/serviceaccount\";\n    }\n}"
  },
  {
    "path": "src/KubeClient.Core/KubeClientException.cs",
    "content": "using System;\n\nnamespace KubeClient\n{\n    /// <summary>\n    ///     Exception raised when an error is encountered by the Kubernetes API client.\n    /// </summary>\n    public class KubeClientException\n        : Exception\n    {\n        /// <summary>\n        ///     The default exception message used when no message was available.\n        /// </summary>\n        public static readonly string DefaultMessage = \"An unexpected error has occurred (error description is not available).\";\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeClientException\"/>.\n        /// </summary>\n        /// <param name=\"message\">\n        ///     The exception message.\n        /// </param>\n        public KubeClientException(string message)\n            : base(message)\n        {\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeClientException\"/>, as caused by a previous exception.\n        /// </summary>\n        /// <param name=\"message\">\n        ///     The exception message.\n        /// </param>\n        /// <param name=\"innerException\">\n        ///     The exception that caused the <see cref=\"KubeClientException\"/> to be raised.\n        /// </param>\n        public KubeClientException(string message, Exception innerException)\n            : base(message, innerException)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Core/KubeClientOptions.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.Logging.Abstractions;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Reflection;\nusing System.Security.Cryptography.X509Certificates;\n\nnamespace KubeClient\n{\n    /// <summary>\n    ///     Options for the Kubernetes API client.\n    /// </summary>\n    public class KubeClientOptions\n    {\n        /// <summary>\n        ///     The default (no-op) logger factory.\n        /// </summary>\n        public static readonly ILoggerFactory DefaultLoggerFactory = NullLoggerFactory.Instance;\n\n        /// <summary>\n        ///     The <see cref=\"ILoggerFactory\"/> used to create loggers for client components (defaults to a factory that creates no-op loggers).\n        /// </summary>\n        ILoggerFactory _loggerFactory = DefaultLoggerFactory;\n\n        /// <summary>\n        ///     Create new <see cref=\"KubeClientOptions\"/>.\n        /// </summary>\n        public KubeClientOptions()\n        {\n        }\n\n        /// <summary>\n        ///     Create new <see cref=\"KubeClientOptions\"/>.\n        /// </summary>\n        /// <param name=\"apiEndPoint\">\n        ///     The base address of the Kubernetes API end-point.\n        /// </param>\n        public KubeClientOptions(string apiEndPoint)\n        {\n            if (String.IsNullOrWhiteSpace(apiEndPoint))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'apiEndPoint'.\", nameof(apiEndPoint));\n\n            ApiEndPoint = new Uri(apiEndPoint);\n        }\n\n        /// <summary>\n        ///     The default Kubernetes namespace to use when no specific namespace is specified.\n        /// </summary>\n        public string KubeNamespace { get; set; } = \"default\";\n        \n        /// <summary>\n        ///     The base address of the Kubernetes API end-point.\n        /// </summary>\n        public Uri ApiEndPoint { get; set; }\n\n        /// <summary>\n        ///     The access token used to authenticate to the Kubernetes API.\n        /// </summary>\n        public string AccessToken { get; set; }\n\n        /// <summary>\n        ///     The username used to authenticate to the Kubernetes API.\n        /// </summary>\n        public string Username { get; set; }\n\n        /// <summary>\n        ///     The password used to authenticate to the Kubernetes API.\n        /// </summary>\n        public string Password { get; set; }\n\n        /// <summary>\n        ///     The command used to generate an access token for authenticating to the Kubernetes API.\n        /// </summary>\n        public string AccessTokenCommand { get; set; }\n\n        /// <summary>\n        ///     The command arguments used to generate an access token for authenticating to the Kubernetes API.\n        /// </summary>\n        public string AccessTokenCommandArguments { get; set; }\n\n        /// <summary>\n        ///     The Go-style selector used to retrieve the access token from the command output.\n        /// </summary>\n        public string AccessTokenSelector { get; set; }\n\n        /// <summary>\n        ///     The Go-style selector used to retrieve the access token's expiry date/time from the command output.\n        /// </summary>\n        public string AccessTokenExpirySelector { get; set; }\n        \n        /// <summary>\n        ///     The initial access token used to authenticate to the Kubernetes API.\n        /// </summary>\n        public string InitialAccessToken { get; set; }\n        \n        /// <summary>\n        ///     The initial token expiry used to authenticate to the Kubernetes API.\n        /// </summary>\n        public DateTime? InitialTokenExpiryUtc { get; set; }\n        \n        /// <summary>\n        ///     The strategy used for authenticating to the Kubernetes API.\n        /// </summary>\n        public KubeAuthStrategy AuthStrategy { get; set; }\n\n        /// <summary>\n        ///     The client certificate used to authenticate to the Kubernetes API.\n        /// </summary>\n        public X509Certificate2 ClientCertificate { get; set; }\n\n        /// <summary>\n        ///     The expected CA certificate used by the Kubernetes API.\n        /// </summary>\n        public X509Certificate2 CertificationAuthorityCertificate { get; set; }\n\n        /// <summary>\n        ///     Skip verification of the server's SSL certificate?\n        /// </summary>\n        public bool AllowInsecure { get; set; }\n\n        /// <summary>\n        ///     Log request / response headers?\n        /// </summary>\n        public bool LogHeaders { get; set; }\n\n        /// <summary>\n        ///     Load request / response payloads (bodies)?\n        /// </summary>\n        public bool LogPayloads { get; set; }\n\n        /// <summary>\n        ///     Additional assemblies (if any) that contain model types used by the client.\n        /// </summary>\n        public List<Assembly> ModelTypeAssemblies { get; } = new List<Assembly>();\n\n        /// <summary>\n        ///     An optional <see cref=\"IServiceProvider\"/> to use as a dependency-injection container.\n        /// </summary>\n        public IServiceProvider ServiceProvider { get; set; }\n\n        /// <summary>\n        ///     The <see cref=\"ILoggerFactory\"/> used to create loggers for client components (defaults to a no-op logger factory).\n        /// </summary>\n        /// <remarks>\n        ///     This property is never <c>null</c>; attempting to set its value to <c>null</c> will instead result in the default (no-op) logger factory (<see cref=\"DefaultLoggerFactory\"/>) being used.\n        /// </remarks>\n        public ILoggerFactory LoggerFactory\n        {\n            get => _loggerFactory;\n            set => _loggerFactory = value ?? DefaultLoggerFactory;\n        }\n\n        /// <summary>\n        ///     Environment variables passed to external commands\n        /// </summary>\n        public Dictionary<string, string> EnvironmentVariables { get; set; }\n\n        /// <summary>\n        ///     Create a copy of the <see cref=\"KubeClientOptions\"/>.\n        /// </summary>\n        /// <returns>\n        ///     The new <see cref=\"KubeClientOptions\"/>.\n        /// </returns>\n        public KubeClientOptions Clone()\n        {\n            var clonedOptions = new KubeClientOptions();\n            \n            CopyTo(clonedOptions);\n            \n            return clonedOptions;\n        }\n\n        /// <summary>\n        ///     Copy all properties from the <see cref=\"KubeClientOptions\"/> to other <see cref=\"KubeClientOptions\"/>.\n        /// </summary>\n        /// <param name=\"toOptions\">\n        ///     The target <see cref=\"KubeClientOptions\"/>.\n        /// </param>\n        public void CopyTo(KubeClientOptions toOptions)\n        {\n            if (toOptions == null)\n                throw new ArgumentNullException(nameof(toOptions));\n\n            toOptions.AccessToken = AccessToken;\n            toOptions.AccessTokenCommand = AccessTokenCommand;\n            toOptions.AccessTokenCommandArguments = AccessTokenCommandArguments;\n            toOptions.AccessTokenExpirySelector = AccessTokenExpirySelector;\n            toOptions.AccessTokenSelector = AccessTokenSelector;\n            toOptions.AllowInsecure = AllowInsecure;\n            toOptions.ApiEndPoint = ApiEndPoint;\n            toOptions.AuthStrategy = AuthStrategy;\n            toOptions.CertificationAuthorityCertificate = CertificationAuthorityCertificate;\n            toOptions.ClientCertificate = ClientCertificate;\n            toOptions.InitialAccessToken = InitialAccessToken;\n            toOptions.InitialTokenExpiryUtc = InitialTokenExpiryUtc;\n            toOptions.KubeNamespace = KubeNamespace;\n            toOptions.ServiceProvider = ServiceProvider;\n            toOptions.LoggerFactory = LoggerFactory;\n            toOptions.LogHeaders = LogHeaders;\n            toOptions.LogPayloads = LogPayloads;\n            toOptions.EnvironmentVariables = EnvironmentVariables;\n            toOptions.ModelTypeAssemblies.AddRange(ModelTypeAssemblies);\n        }\n\n        /// <summary>\n        ///     Ensure that the <see cref=\"KubeClientOptions\"/> are valid.\n        /// </summary>\n        /// <returns>\n        ///     The <see cref=\"KubeClientOptions\"/> (enables inline use).\n        /// </returns>\n        public KubeClientOptions EnsureValid()\n        {\n            if (ApiEndPoint == null || !ApiEndPoint.IsAbsoluteUri)\n                throw new KubeClientException(\"Invalid KubeClientOptions: must specify a valid API end-point.\");\n\n            if (ClientCertificate != null && !ClientCertificate.HasPrivateKey)\n                throw new KubeClientException(\"Invalid KubeClientOptions: the private key for the supplied client certificate is not available.\");\n\n            if (String.IsNullOrWhiteSpace(KubeNamespace))\n                throw new KubeClientException(\"Invalid KubeClientOptions: must specify a valid default namespace.\");\n\n            return this;\n        }\n\n        /// <summary>\n        ///     Create new <see cref=\"KubeClientOptions\"/> using pod-level configuration. \n        /// </summary>\n        /// <param name=\"serviceAccountPath\">\n        ///     The location of the volume containing service account token, CA certificate, and default namespace.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeClientOptions\"/>.\n        /// </returns>\n        /// <remarks>\n        ///     Only works from within a container running in a Kubernetes Pod.\n        /// </remarks>\n        /// <exception cref=\"InvalidOperationException\"></exception>\n        public static KubeClientOptions FromPodServiceAccount(string serviceAccountPath = KubeClientConstants.DefaultServiceAccountPath)\n        {\n            string kubeServiceHost = Environment.GetEnvironmentVariable(KubeClientConstants.KubernetesServiceHost);\n            string kubeServicePort = Environment.GetEnvironmentVariable(KubeClientConstants.KubernetesServicePort);\n            if (String.IsNullOrWhiteSpace(kubeServiceHost) || String.IsNullOrWhiteSpace(kubeServicePort))\n                throw new InvalidOperationException($\"KubeApiClient.CreateFromPodServiceAccount can only be called when running in a Kubernetes Pod ({KubeClientConstants.KubernetesServiceHost} and/or {KubeClientConstants.KubernetesServicePort} environment variable is not defined).\");\n\n            string defaultNamespace = File.ReadAllText(Path.Combine(serviceAccountPath, \"namespace\")).Trim();\n\n            string apiEndPoint = $\"https://{kubeServiceHost}:{kubeServicePort}/\";\n            string accessToken = File.ReadAllText(Path.Combine(serviceAccountPath, \"token\"));\n\n            X509Certificate2 kubeCACertificate;\n\n#if !NET9_0_OR_GREATER\n            byte[] certificateData = File.ReadAllBytes(\n                Path.Combine(serviceAccountPath, \"ca.crt\")\n            );\n            kubeCACertificate = new X509Certificate2(certificateData);\n#else // !NET9_0_OR_GREATER\n            kubeCACertificate = X509CertificateLoader.LoadCertificateFromFile(\n                Path.Combine(serviceAccountPath, \"ca.crt\")\n            );\n#endif // !NET9_0_OR_GREATER\n\n            return new KubeClientOptions\n            {\n                ApiEndPoint = new Uri(apiEndPoint),\n                AuthStrategy = KubeAuthStrategy.BearerToken,\n                AccessToken = accessToken,\n                CertificationAuthorityCertificate = kubeCACertificate,\n                KubeNamespace = defaultNamespace\n            };\n        }\n    }\n\n    /// <summary>\n    ///     Represents a strategy for authenticating to the Kubernetes API.\n    /// </summary>\n    public enum KubeAuthStrategy\n    {\n        /// <summary>\n        ///     No authentication (e.g. via \"kubectl proxy\").\n        /// </summary>\n        None,\n\n        /// <summary>\n        ///     Client certificate (i.e. mutual SSL) authentication.\n        /// </summary>\n        ClientCertificate,\n\n        /// <summary>\n        ///     Username/Password authentication.\n        /// </summary>\n        Basic,\n\n        /// <summary>\n        ///     A pre-defined (static) bearer token.\n        /// </summary>\n        BearerToken,\n\n        /// <summary>\n        ///     A bearer token obtained by an authentication provider (i.e. running an external command).\n        /// </summary>\n        BearerTokenProvider,\n\n        /// <summary>\n        ///     Client credentials obtained by a client-go credential plugin (i.e. running an external command).\n        /// </summary>\n        CredentialPlugin\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Core/ResourceClients/IKubeResourceClient.cs",
    "content": "namespace KubeClient.ResourceClients\n{\n    /// <summary>\n    ///     A client for a specific Kubernetes resource API.\n    /// </summary>\n    public interface IKubeResourceClient\n    {\n        /// <summary>\n        ///     The Kubernetes API client.\n        /// </summary>\n        IKubeApiClient KubeClient { get; }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.Configuration/ConfigMapConfigurationProvider.cs",
    "content": "﻿using Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace KubeClient.Extensions.Configuration\n{\n    using Models;\n    using Settings;\n\n    /// <summary>\n    ///     Provider for configuration that comes from a Kubernetes ConfigMap.\n    /// </summary>\n    sealed class ConfigMapConfigurationProvider\n        : ConfigurationProvider, IDisposable\n    {\n        /// <summary>\n        ///     The <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </summary>\n        readonly IKubeApiClient _client;\n\n        /// <summary>\n        ///     The name of the target ConfigMap.\n        /// </summary>\n        readonly string _configMapName;\n\n        /// <summary>\n        ///     The Kubernetes namespace that contains the target ConfigMap.\n        /// </summary>\n        readonly string _kubeNamespace;\n\n        /// <summary>\n        ///     The name of the target configuration section (if any).\n        /// </summary>\n        readonly string _sectionName;\n\n        /// <summary>\n        ///     Watch the ConfigMap for changes?\n        /// </summary>\n        readonly bool _watch;\n\n        /// <summary>\n        ///     Throw an exception if the ConfigMap is not found?\n        /// </summary>\n        readonly bool _throwOnNotFound;\n\n        /// <summary>\n        ///     An <see cref=\"IDisposable\"/> representing the subscription to events for the watched ConfigMap.\n        /// </summary>\n        IDisposable _watchSubscription;\n\n        /// <summary>\n        ///     Create a new <see cref=\"ConfigMapConfigurationProvider\"/>.\n        /// </summary>\n        /// <param name=\"providerSettings\">\n        ///     The <see cref=\"ConfigMapConfigurationSettings\"/> used to configure the provider.\n        /// </param>\n        public ConfigMapConfigurationProvider(ConfigMapConfigurationSettings providerSettings)\n        {\n            if ( providerSettings == null )\n                throw new ArgumentNullException(nameof(providerSettings));\n\n            _client = providerSettings.Client;\n            _configMapName = providerSettings.ConfigMapName;\n            _kubeNamespace = providerSettings.KubeNamespace;\n            _sectionName = providerSettings.SectionName;\n            _watch = providerSettings.Watch;\n            _throwOnNotFound = providerSettings.ThrowOnNotFound;\n\n            Log = _client.LoggerFactory.CreateLogger<ConfigMapConfigurationProvider>();\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the provider.\n        /// </summary>\n        public void Dispose()\n        {\n            if (_watchSubscription != null)\n            {\n                _watchSubscription.Dispose();\n                _watchSubscription = null;\n            }\n\n            _client.Dispose();\n        }\n\n        /// <summary>\n        /// The configuration provider's logger.\n        /// </summary>\n        ILogger Log { get; }\n\n        /// <summary>\n        ///     Load configuration entries from the ConfigMap.\n        /// </summary>\n        public override void Load()\n        {\n            Log.LogTrace(\"Attempting to load ConfigMap {ConfigMapName} in namespace {KubeNamespace}...\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace);\n\n            ConfigMapV1 configMap = _client.ConfigMapsV1().Get(_configMapName, _kubeNamespace).GetAwaiter().GetResult();\n            Load(configMap);\n\n            if (_watch && _watchSubscription == null)\n            {\n                Log.LogTrace(\"Creating watch-event stream for ConfigMap {ConfigMapName} in namespace {KubeNamespace}...\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace);\n\n                _watchSubscription = _client.ConfigMapsV1()\n                    .Watch(_configMapName, _kubeNamespace)\n                    .Subscribe(OnConfigMapChanged);\n\n                Log.LogTrace(\"Watch-event stream created for ConfigMap {ConfigMapName} in namespace {KubeNamespace}.\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace);\n            }\n        }\n\n        /// <summary>\n        ///     Load data from the specified ConfigMap.\n        /// </summary>\n        /// <param name=\"configMap\">\n        ///     A <see cref=\"ConfigMapV1\"/> representing the ConfigMap's current state, or <c>null</c> if the ConfigMap was not found.\n        /// </param>\n        /// <param name=\"isReload\">\n        ///     Is the ConfigMap is being reloaded? If <c>false</c>, then this is the initial load (and may throw an exception).\n        /// </param>\n        void Load(ConfigMapV1 configMap, bool isReload = false)\n        {\n            if (configMap != null)\n            {\n                Log.LogTrace(\"Found ConfigMap {ConfigMapName} in namespace {KubeNamespace} (isReload: {isReload}).\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace, isReload);\n\n                string sectionNamePrefix = !String.IsNullOrWhiteSpace(_sectionName) ? _sectionName + \":\" : String.Empty;\n\n                Data = configMap.Data.ToDictionary(\n                    entry => sectionNamePrefix + entry.Key.Replace('.', ':'),\n                    entry => entry.Value,\n                    StringComparer.OrdinalIgnoreCase\n                );\n            }\n            else\n            {\n                Data = new Dictionary<string, string>();\n                \n                Log.LogTrace(\"ConfigMap {ConfigMapName} was not found in namespace {KubeNamespace} (isReload: {isReload}).\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace, isReload);\n                \n                if (!isReload && _throwOnNotFound)\n                    throw new KubeClientException($\"ConfigMap {_configMapName} was not found in namespace {_kubeNamespace}.\");\n            }\n        }\n\n        /// <summary>\n        ///     Called when the target ConfigMap is created, modified, or deleted.\n        /// </summary>\n        /// <param name=\"configMapEvent\">\n        ///     The change-notification event data.\n        /// </param>\n        private void OnConfigMapChanged(IResourceEventV1<ConfigMapV1> configMapEvent)\n        {\n            if (configMapEvent == null)\n                throw new ArgumentNullException(nameof(configMapEvent));\n\n            Log.LogTrace(\"Observed {EventType} watch-event for ConfigMap {ConfigMapName} in namespace {KubeNamespace}.\", configMapEvent.EventType, _configMapName, _kubeNamespace ?? _client.DefaultNamespace);\n\n            switch (configMapEvent.EventType)\n            {\n                case ResourceEventType.Deleted:\n                {\n                    // Clear out configuration if the ConfigMap is has been deleted.\n                    Log.LogTrace(\"ConfigMap {ConfigMapName} in namespace {KubeNamespace} has been deleted.\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace);\n\n                    Load(null, isReload: true);\n\n                    break;\n                }\n                case ResourceEventType.Error:\n                {\n                    // Clear out configuration if the ConfigMap is missing or invalid.\n                    Log.LogTrace(\"ConfigMap {ConfigMapName} in namespace {KubeNamespace} is currently in an invalid state.\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace);\n                    Load(null, isReload: true);\n\n                    break;\n                }\n                default:\n                {\n                    Load(configMapEvent.Resource, isReload: true);\n\n                    break;\n                }\n            }\n\n            Log.LogTrace(\"Triggering config change-token for ConfigMap {ConfigMapName} in namespace {KubeNamespace}...\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace);\n\n            OnReload();\n\n            Log.LogTrace(\"Config change-token triggered for ConfigMap {ConfigMapName} in namespace {KubeNamespace}.\", _configMapName, _kubeNamespace ?? _client.DefaultNamespace);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.Configuration/ConfigMapConfigurationSource.cs",
    "content": "using Microsoft.Extensions.Configuration;\nusing System;\n\nnamespace KubeClient.Extensions.Configuration\n{\n    using Settings;\n\n    /// <summary>\n    ///     Source for configuration that comes from a Kubernetes ConfigMap.\n    /// </summary>\n    sealed class ConfigMapConfigurationSource\n        : IConfigurationSource\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"ConfigMapConfigurationSource\"/>.\n        /// </summary>\n        /// <param name=\"settings\">\n        ///     The <see cref=\"ConfigMapConfigurationSettings\"/> used to create configuration providers.\n        /// </param>\n        public ConfigMapConfigurationSource(ConfigMapConfigurationSettings settings)\n        {\n            if ( settings == null )\n                throw new ArgumentNullException(nameof(settings));\n\n            Settings = settings;\n        }\n\n        /// <summary>\n        ///     The <see cref=\"ConfigMapConfigurationSettings\"/> used to create configuration providers.\n        /// </summary>\n        public ConfigMapConfigurationSettings Settings { get; }\n\n        /// <summary>\n        ///     Build a configuration provider with configured options.\n        /// </summary>\n        /// <param name=\"configurationBuilder\">\n        ///     The configuration builder to retrieve options from.\n        /// </param>\n        /// <returns>\n        ///     The new <see cref=\"IConfigurationProvider\"/>.\n        /// </returns>\n        public IConfigurationProvider Build(IConfigurationBuilder configurationBuilder) => new ConfigMapConfigurationProvider(Settings);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.Configuration/KubeClient.Extensions.Configuration.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n\n    <Description>Microsoft.Extensions.Configuration support for KubeClient</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n      <ProjectReference Include=\"../KubeClient/KubeClient.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'netstandard2.1'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"7.0.0\" />\n  </ItemGroup>\n  \n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup>\n      <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Extensions.Configuration/KubeClientConfigurationExtensions.cs",
    "content": "using Microsoft.Extensions.Configuration;\nusing System;\n\nnamespace KubeClient.Extensions.Configuration\n{\n    using Settings;\n\n    /// <summary>\n    ///     <see cref=\"IConfigurationBuilder\"/> extension methods for Kubernetes ConfigMaps and Secrets.\n    /// </summary>\n    public static class KubeClientConfigurationExtensions\n    {\n        /// <summary>\n        ///     Add the specified Kubernetes ConfigMap as a configuration source.\n        /// </summary>\n        /// <param name=\"configurationBuilder\">\n        ///     The <see cref=\"IConfigurationBuilder\"/> to configure.\n        /// </param>\n        /// <param name=\"clientOptions\">\n        ///     <see cref=\"KubeClientOptions\"/> for the <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </param>\n        /// <param name=\"configMapName\">\n        ///     The name of the target ConfigMap.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace that contains the target ConfigMap.\n        /// </param>\n        /// <param name=\"sectionName\">\n        ///     The name of the target configuration section (if any).\n        /// </param>\n        /// <param name=\"reloadOnChange\">\n        ///     Reload the configuration if the ConfigMap changes?\n        /// </param>\n        /// <param name=\"throwOnNotFound\">\n        ///     Throw an exception if the ConfigMap was not found when the configuration is first loaded?\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"IConfigurationBuilder\"/>.\n        /// </returns>\n        public static IConfigurationBuilder AddKubeConfigMap(this IConfigurationBuilder configurationBuilder,\n            KubeClientOptions clientOptions, string configMapName, string kubeNamespace = null,\n            string sectionName = null, bool reloadOnChange = false, bool throwOnNotFound = false)\n        {\n            if (configurationBuilder == null)\n                throw new ArgumentNullException(nameof(configurationBuilder));\n\n            KubeApiClient client = KubeApiClient.Create(clientOptions);\n\n            return configurationBuilder.AddKubeConfigMap(client, configMapName, kubeNamespace, sectionName, reloadOnChange, throwOnNotFound);\n        }\n\n        /// <summary>\n        ///     Add the specified Kubernetes ConfigMap as a configuration source.\n        /// </summary>\n        /// <param name=\"configurationBuilder\">\n        ///     The <see cref=\"IConfigurationBuilder\"/> to configure.\n        /// </param>\n        /// <param name=\"client\">\n        ///     The <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </param>\n        /// <param name=\"configMapName\">\n        ///     The name of the target ConfigMap.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace that contains the target ConfigMap.\n        /// </param>\n        /// <param name=\"sectionName\">\n        ///     The name of the target configuration section (if any).\n        /// </param>\n        /// <param name=\"reloadOnChange\">\n        ///     Reload the configuration if the ConfigMap changes?\n        /// </param>\n        /// <param name=\"throwOnNotFound\">\n        ///    Throw an exception if the ConfigMap was not found when the configuration is first loaded?\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"IConfigurationBuilder\"/>.\n        /// </returns>\n        public static IConfigurationBuilder AddKubeConfigMap(this IConfigurationBuilder configurationBuilder,\n            KubeApiClient client, string configMapName, string kubeNamespace = null, string sectionName = null,\n            bool reloadOnChange = false, bool throwOnNotFound = false)\n        {\n            if (configurationBuilder == null)\n                throw new ArgumentNullException(nameof(configurationBuilder));\n\n            return configurationBuilder.Add(new ConfigMapConfigurationSource(\n                new ConfigMapConfigurationSettings(client, configMapName, kubeNamespace, sectionName, reloadOnChange, throwOnNotFound)\n            ));\n        }\n\n        /// <summary>\n        ///     Add the specified Kubernetes Secret as a configuration source.\n        /// </summary>\n        /// <param name=\"configurationBuilder\">\n        ///     The <see cref=\"IConfigurationBuilder\"/> to configure.\n        /// </param>\n        /// <param name=\"clientOptions\">\n        ///     <see cref=\"KubeClientOptions\"/> for the <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </param>\n        /// <param name=\"secretName\">\n        ///     The name of the target Secret.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace that contains the target Secret.\n        /// </param>\n        /// <param name=\"sectionName\">\n        ///     The name of the target configuration section (if any).\n        /// </param>\n        /// <param name=\"reloadOnChange\">\n        ///     Reload the configuration if the Secret changes?\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"IConfigurationBuilder\"/>.\n        /// </returns>\n        public static IConfigurationBuilder AddKubeSecret(this IConfigurationBuilder configurationBuilder,\n            KubeClientOptions clientOptions, string secretName, string kubeNamespace = null, string sectionName = null,\n            bool reloadOnChange = false)\n        {\n            if (configurationBuilder == null)\n                throw new ArgumentNullException(nameof(configurationBuilder));\n\n            KubeApiClient client = KubeApiClient.Create(clientOptions);\n\n            return configurationBuilder.AddKubeSecret(client, secretName, kubeNamespace, sectionName, reloadOnChange);\n        }\n\n        /// <summary>\n        ///     Add the specified Kubernetes Secret as a configuration source.\n        /// </summary>\n        /// <param name=\"configurationBuilder\">\n        ///     The <see cref=\"IConfigurationBuilder\"/> to configure.\n        /// </param>\n        /// <param name=\"client\">\n        ///     The <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </param>\n        /// <param name=\"secretName\">\n        ///     The name of the target Secret.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace that contains the target Secret.\n        /// </param>\n        /// <param name=\"sectionName\">\n        ///     The name of the target configuration section (if any).\n        /// </param>\n        /// <param name=\"reloadOnChange\">\n        ///     Reload the configuration if the Secret changes?\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"IConfigurationBuilder\"/>.\n        /// </returns>\n        public static IConfigurationBuilder AddKubeSecret(this IConfigurationBuilder configurationBuilder,\n            KubeApiClient client, string secretName, string kubeNamespace = null, string sectionName = null,\n            bool reloadOnChange = false)\n        {\n            if (configurationBuilder == null)\n                throw new ArgumentNullException(nameof(configurationBuilder));\n\n            return configurationBuilder.Add(new SecretConfigurationSource(\n                new SecretConfigurationSettings(client, secretName, kubeNamespace, sectionName, reloadOnChange, throwOnNotFound: false /* not implemented yet */)\n            ));\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.Configuration/SecretConfigurationProvider.cs",
    "content": "﻿using Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace KubeClient.Extensions.Configuration\n{\n    using Models;\n    using Settings;\n\n    /// <summary>\n    ///     Provider for configuration that comes from a Kubernetes Secret.\n    /// </summary>\n    sealed class SecretConfigurationProvider\n        : ConfigurationProvider, IDisposable\n    {\n        /// <summary>\n        ///     The <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </summary>\n        readonly IKubeApiClient _client;\n\n        /// <summary>\n        ///     The name of the target Secret.\n        /// </summary>\n        readonly string _secretName;\n\n        /// <summary>\n        ///     The Kubernetes namespace that contains the target Secret.\n        /// </summary>\n        readonly string _kubeNamespace;\n\n        /// <summary>\n        ///     The name of the target configuration section (if any).\n        /// </summary>\n        readonly string _sectionName;\n\n        /// <summary>\n        ///     Watch the Secret for changes?\n        /// </summary>\n        readonly bool _watch;\n\n        /// <summary>\n        ///     An <see cref=\"IDisposable\"/> representing the subscription to events for the watched Secret.\n        /// </summary>\n        IDisposable _watchSubscription;\n\n        /// <summary>\n        ///     Create a new <see cref=\"SecretConfigurationProvider\"/>.\n        /// </summary>\n        /// <param name=\"providerSettings\">\n        ///     The <see cref=\"ConfigMapConfigurationSettings\"/> used to configure the provider.\n        /// </param>\n        public SecretConfigurationProvider(SecretConfigurationSettings providerSettings)\n        {\n            if ( providerSettings == null )\n                throw new ArgumentNullException(nameof(providerSettings));\n\n            _client = providerSettings.Client;\n            _secretName = providerSettings.SecretName;\n            _kubeNamespace = providerSettings.KubeNamespace;\n            _sectionName = providerSettings.SectionName;\n            _watch = providerSettings.Watch;\n\n            Log = _client.LoggerFactory.CreateLogger<SecretConfigurationProvider>();\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the provider.\n        /// </summary>\n        public void Dispose()\n        {\n            if (_watchSubscription != null)\n            {\n                _watchSubscription.Dispose();\n                _watchSubscription = null;\n            }\n\n            _client.Dispose();\n        }\n\n        /// <summary>\n        /// The configuration provider's logger.\n        /// </summary>\n        ILogger Log { get; }\n\n        /// <summary>\n        ///     Load configuration entries from the Secret.\n        /// </summary>\n        public override void Load()\n        {\n            Log.LogTrace(\"Attempting to load Secret {SecretName} in namespace {KubeNamespace}...\", _secretName, _kubeNamespace ?? _client.DefaultNamespace);\n\n            SecretV1 secret = _client.SecretsV1().Get(_secretName, _kubeNamespace).GetAwaiter().GetResult();\n            \n            Load(secret);\n\n            if (_watch && _watchSubscription == null)\n            {\n                Log.LogTrace(\"Creating watch-event stream for Secret {SecretName} in namespace {KubeNamespace}...\", _secretName, _kubeNamespace ?? _client.DefaultNamespace);\n\n                _watchSubscription = _client.SecretsV1()\n                    .Watch(_secretName, _kubeNamespace)\n                    .Subscribe(OnSecretChanged);\n\n                Log.LogTrace(\"Watch-event stream created for Secret {SecretName} in namespace {KubeNamespace}.\", _secretName, _kubeNamespace ?? _client.DefaultNamespace);\n            }\n        }\n\n        /// <summary>\n        ///     Load data from the specified Secret.\n        /// </summary>\n        /// <param name=\"secret\">\n        ///     A <see cref=\"SecretV1\"/> representing the Secret's current state, or <c>null</c> if the Secret was not found.\n        /// </param>\n        void Load(SecretV1 secret)\n        {\n            if (secret != null)\n            {\n                Log.LogTrace(\"Found Secret {SecretName} in namespace {KubeNamespace}.\", _secretName, _kubeNamespace ?? _client.DefaultNamespace);\n\n                string sectionNamePrefix = !String.IsNullOrWhiteSpace(_sectionName) ? _sectionName + \":\" : String.Empty;\n\n                Data = secret.Data.ToDictionary(\n                    entry => sectionNamePrefix + entry.Key.Replace('.', ':'),\n                    entry =>\n                    {\n                        try\n                        {\n                            // Will choke on binary data that doesn't represent valid UTF8 text\n                            return Encoding.UTF8.GetString(\n                                Convert.FromBase64String(entry.Value)\n                            );\n                        }\n                        catch (FormatException)\n                        {\n                            // Not valid Base64; use raw value.\n\n                            return entry.Value;\n                        }\n                        catch (ArgumentException)\n                        {\n                            // Not valid UTF8; use raw value.\n\n                            return entry.Value;\n                        }\n                    },\n                    StringComparer.OrdinalIgnoreCase\n                );\n            }\n            else\n            {\n                Log.LogTrace(\"Secret {SecretName} was not found in namespace {KubeNamespace}.\", _secretName, _kubeNamespace ?? _client.DefaultNamespace);\n\n                Data = new Dictionary<string, string>();\n            }\n        }\n\n        /// <summary>\n        ///     Called when the target Secret is created, modified, or deleted.\n        /// </summary>\n        /// <param name=\"secretEvent\">\n        ///     The change-notification event data.\n        /// </param>\n        void OnSecretChanged(IResourceEventV1<SecretV1> secretEvent)\n        {\n            if (secretEvent == null)\n                throw new ArgumentNullException(nameof(secretEvent));\n\n            Log.LogTrace(\"Observed {EventType} watch-event for Secret {SecretName} in namespace {KubeNamespace}.\", secretEvent.EventType, _secretName, _kubeNamespace ?? _client.DefaultNamespace);\n\n            if (secretEvent.EventType != ResourceEventType.Error)\n                Load(secretEvent.Resource);\n            else\n                Load(null); // Clear out configuration if the Secret is invalid\n\n            Log.LogTrace(\"Triggering config change-token for Secret {SecretName} in namespace {KubeNamespace}...\", _secretName, _kubeNamespace ?? _client.DefaultNamespace);\n\n            OnReload();\n\n            Log.LogTrace(\"Config change-token triggered for Secret {SecretName} in namespace {KubeNamespace}.\", _secretName, _kubeNamespace ?? _client.DefaultNamespace);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.Configuration/SecretConfigurationSource.cs",
    "content": "using Microsoft.Extensions.Configuration;\n\nnamespace KubeClient.Extensions.Configuration\n{\n    using Settings;\n    using System;\n\n    /// <summary>\n    ///     Source for configuration that comes from a Kubernetes Secret.\n    /// </summary>\n    sealed class SecretConfigurationSource\n        : IConfigurationSource\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"SecretConfigurationSource\"/>.\n        /// </summary>\n        /// <param name=\"settings\">\n        ///     The <see cref=\"SecretConfigurationSettings\"/> used to create configuration providers.\n        /// </param>\n        public SecretConfigurationSource(SecretConfigurationSettings settings)\n        {\n            if ( settings == null )\n                throw new ArgumentNullException(nameof(settings));\n\n            Settings = settings;\n        }\n\n        /// <summary>\n        ///     The <see cref=\"SecretConfigurationSettings\"/> used to create configuration providers.\n        /// </summary>\n        public SecretConfigurationSettings Settings { get; }\n\n        /// <summary>\n        ///     Build a configuration provider with configured options.\n        /// </summary>\n        /// <param name=\"configurationBuilder\">\n        ///     The configuration builder to retrieve options from.\n        /// </param>\n        /// <returns>\n        ///     The new <see cref=\"IConfigurationProvider\"/>.\n        /// </returns>\n        public IConfigurationProvider Build(IConfigurationBuilder configurationBuilder) => new SecretConfigurationProvider(Settings);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.Configuration/Settings/ConfigMapConfigurationSettings.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Extensions.Configuration.Settings\n{\n    /// <summary>\n    /// Settings for a single instance of the <see cref=\"ConfigMapConfigurationProvider\"/>.\n    /// </summary>\n    public class ConfigMapConfigurationSettings\n    {\n        /// <summary>\n        /// Create new <see cref=\"ConfigMapConfigurationSettings\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        ///     \n        ///     Note: this client will be disposed by the provider.\n        /// </param>\n        /// <param name=\"configMapName\">\n        ///     The name of the target ConfigMap.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace that contains the target ConfigMap.\n        /// </param>\n        /// <param name=\"sectionName\">\n        ///     The name of the target configuration section (if any).\n        /// </param>\n        /// <param name=\"watch\">\n        ///     Watch the ConfigMap for changes?\n        /// </param>\n        /// <param name=\"throwOnNotFound\">\n        ///    Throw an exception if the ConfigMap was not found?\n        /// </param>\n        public ConfigMapConfigurationSettings(IKubeApiClient client, string configMapName, string kubeNamespace, string sectionName, bool watch, bool throwOnNotFound)\n        {\n            if ( client == null )\n                throw new ArgumentNullException(nameof(client));\n\n            if ( String.IsNullOrWhiteSpace(configMapName) )\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'configMapName'.\", nameof(configMapName));\n\n            Client = client;\n            ConfigMapName = configMapName;\n            KubeNamespace = kubeNamespace;\n            SectionName = sectionName;\n            Watch = watch;\n            ThrowOnNotFound = throwOnNotFound;\n        }\n\n        /// <summary>\n        /// The <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </summary>\n        public IKubeApiClient Client { get; }\n\n        /// <summary>\n        /// The name of the target ConfigMap.\n        /// </summary>\n        public string ConfigMapName { get; }\n\n        /// <summary>\n        /// The Kubernetes namespace that contains the target ConfigMap.\n        /// </summary>\n        public string KubeNamespace { get; }\n\n        /// <summary>\n        /// The name of the target configuration section (if any).\n        /// </summary>\n        public string SectionName { get; }\n\n        /// <summary>\n        /// Watch the ConfigMap for changes?\n        /// </summary>\n        public bool Watch { get; }\n\n        /// <summary>\n        /// Throw an exception if the ConfigMap was not found?\n        /// </summary>\n        public bool ThrowOnNotFound { get; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.Configuration/Settings/SecretConfigurationSettings.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Extensions.Configuration.Settings\n{\n    /// <summary>\n    /// Settings for a single instance of the <see cref=\"SecretConfigurationProvider\"/>.\n    /// </summary>\n    public class SecretConfigurationSettings\n    {\n        /// <summary>\n        /// Create new <see cref=\"SecretConfigurationSettings\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        ///     \n        ///     Note: this client will be disposed by the provider.\n        /// </param>\n        /// <param name=\"secretName\">\n        ///     The name of the target Secret.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The Kubernetes namespace that contains the target Secret.\n        /// </param>\n        /// <param name=\"sectionName\">\n        ///     The name of the target configuration section (if any).\n        /// </param>\n        /// <param name=\"watch\">\n        ///     Watch the Secret for changes?\n        /// </param>\n        /// <param name=\"throwOnNotFound\">\n        ///    Throw an exception if the Secret was not found?\n        /// </param>\n        public SecretConfigurationSettings(IKubeApiClient client, string secretName, string kubeNamespace, string sectionName, bool watch, bool throwOnNotFound)\n        {\n            if ( client == null )\n                throw new ArgumentNullException(nameof(client));\n\n            if ( String.IsNullOrWhiteSpace(secretName) )\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'secretName'.\", nameof(secretName));\n\n            Client = client;\n            SecretName = secretName;\n            KubeNamespace = kubeNamespace;\n            SectionName = sectionName;\n            Watch = watch;\n            ThrowOnNotFound = throwOnNotFound;\n        }\n\n        /// <summary>\n        /// The <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </summary>\n        public IKubeApiClient Client { get; }\n\n        /// <summary>\n        /// The name of the target Secret.\n        /// </summary>\n        public string SecretName { get; }\n\n        /// <summary>\n        /// The Kubernetes namespace that contains the target Secret.\n        /// </summary>\n        public string KubeNamespace { get; }\n\n        /// <summary>\n        /// The name of the target configuration section (if any).\n        /// </summary>\n        public string SectionName { get; }\n\n        /// <summary>\n        /// Watch the Secret for changes?\n        /// </summary>\n        public bool Watch { get; }\n\n        /// <summary>\n        /// Throw an exception if the Secret was not found?\n        /// </summary>\n        public bool ThrowOnNotFound { get; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources/CustomResourceClientFactoryExtensions.cs",
    "content": "using System;\n\nnamespace KubeClient\n{\n    using ResourceClients;\n\n    /// <summary>\n    ///     CRD-related extension methods for <see cref=\"KubeClient\"/>.\n    /// </summary>\n    public static class CustomResourceClientFactoryExtensions\n    {\n        /// <summary>\n        ///     Get the Kubernetes CustomResourceDefinitions (v1beta1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static ICustomResourceDefinitionClientV1Beta1 CustomResourceDefinitionsV1Beta1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n            \n            return kubeClient.ResourceClient(\n                client => new CustomResourceDefinitionClientV1Beta1(client)\n            );\n        }\n\n        /// <summary>\n        ///     Get the Kubernetes CustomResourceDefinitions (v1) resource client.\n        /// </summary>\n        /// <param name=\"kubeClient\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <returns>\n        ///     The resource client.\n        /// </returns>\n        public static ICustomResourceDefinitionClientV1 CustomResourceDefinitionsV1(this IKubeApiClient kubeClient)\n        {\n            if (kubeClient == null)\n                throw new ArgumentNullException(nameof(kubeClient));\n\n            return kubeClient.ResourceClient(\n                client => new CustomResourceDefinitionClientV1(client)\n            );\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources/CustomResourceDefinitionClientV1.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes CustomResourceDefinitions (v1) API.\n    /// </summary>\n    public class CustomResourceDefinitionClientV1\n        : KubeResourceClient, ICustomResourceDefinitionClientV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"CustomResourceDefinitionClientV1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public CustomResourceDefinitionClientV1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the CustomResourceDefinition with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the CustomResourceDefinition to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1\"/> representing the current state for the CustomResourceDefinition, or <c>null</c> if no CustomResourceDefinition was found with the specified name and namespace.\n        /// </returns>\n        public async Task<CustomResourceDefinitionV1> Get(string name, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<CustomResourceDefinitionV1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all CustomResourceDefinitions in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the CustomResourceDefinitions.\n        /// </param>\n        /// <param name=\"limit\">\n        ///     The maximum number of results to return.\n        ///     \n        ///     <para>\n        ///         If specified, <see cref=\"ListMetaV1.Continue\"/> will be non-<c>null</c> if there are more results available.\n        ///     </para>\n        /// </param>\n        /// <param name=\"continue\">\n        ///     The result of <see cref=\"ListMetaV1.Continue\"/> from the previous call.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionListV1\"/> containing the jobs.\n        /// </returns>\n        public async Task<CustomResourceDefinitionListV1> List(string? labelSelector = null, int? limit = null, string? @continue = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<CustomResourceDefinitionListV1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector,\n                    Limit = limit,\n                    Continue = @continue,\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific CustomResourceDefinition.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the job to watch.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<CustomResourceDefinitionV1>> Watch(string name)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<CustomResourceDefinitionV1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                operationDescription: $\"watch v1/CustomResourceDefintion '{name}'\"\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to CustomResourceDefinitions.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the CustomResourceDefinitions.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<CustomResourceDefinitionV1>> WatchAll(string? labelSelector = null)\n        {\n            return ObserveEvents<CustomResourceDefinitionV1>(\n                Requests.WatchCollection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector\n                }),\n                operationDescription: $\"watch all v1/CustomResourceDefintions with label selector '{labelSelector ?? \"<none>\"}'\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"CustomResourceDefinitionV1\"/>.\n        /// </summary>\n        /// <param name=\"newCustomResourceDefinition\">\n        ///     A <see cref=\"CustomResourceDefinitionV1\"/> representing the CustomResourceDefinition to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1\"/> representing the current state for the newly-created CustomResourceDefinition.\n        /// </returns>\n        public async Task<CustomResourceDefinitionV1> Create(CustomResourceDefinitionV1 newCustomResourceDefinition, CancellationToken cancellationToken = default)\n        {\n            if (newCustomResourceDefinition == null)\n                throw new ArgumentNullException(nameof(newCustomResourceDefinition));\n\n            return await Http\n                .PostAsJsonAsync(Requests.Collection,\n                    postBody: newCustomResourceDefinition,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<CustomResourceDefinitionV1>();\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified CustomResourceDefinition.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the CustomResourceDefinition to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1\"/> representing the job's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<CustomResourceDefinitionV1>> Delete(string name, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteGlobalResource<CustomResourceDefinitionV1>(Requests.ByName, name, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the CustomResourceDefinition (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level CustomResourceDefinition (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/apiextensions.k8s.io/v1/customresourcedefinitions?labelSelector={LabelSelector?}&limit={Limit?}&continue={Continue?}\");\n\n            /// <summary>\n            ///     A get-by-name CustomResourceDefinition (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/apiextensions.k8s.io/v1/customresourcedefinitions/{Name}\");\n\n            /// <summary>\n            ///     A collection-level CustomResourceDefinition watch (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchCollection = KubeRequest.Create(\"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A watch-by-name CustomResourceDefinition (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes CustomResourceDefinitions (v1) API.\n    /// </summary>\n    public interface ICustomResourceDefinitionClientV1\n    {\n        /// <summary>\n        ///     Get the CustomResourceDefinition with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the CustomResourceDefinition to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1\"/> representing the current state for the CustomResourceDefinition, or <c>null</c> if no CustomResourceDefinition was found with the specified name and namespace.\n        /// </returns>\n        Task<CustomResourceDefinitionV1> Get(string name, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all CustomResourceDefinitions in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the CustomResourceDefinitions.\n        /// </param>\n        /// <param name=\"limit\">\n        ///     The maximum number of results to return.\n        ///     \n        ///     <para>\n        ///         If specified, <see cref=\"ListMetaV1.Continue\"/> will be non-<c>null</c> if there are more results available.\n        ///     </para>\n        /// </param>\n        /// <param name=\"continue\">\n        ///     The result of <see cref=\"ListMetaV1.Continue\"/> from the previous call.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionListV1\"/> containing the jobs.\n        /// </returns>\n        Task<CustomResourceDefinitionListV1> List(string? labelSelector = null, int? limit = null, string? @continue = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific CustomResourceDefinition.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the job to watch.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<CustomResourceDefinitionV1>> Watch(string name);\n\n        /// <summary>\n        ///     Watch for events relating to CustomResourceDefinitions.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the CustomResourceDefinitions.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<CustomResourceDefinitionV1>> WatchAll(string? labelSelector = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"CustomResourceDefinitionV1\"/>.\n        /// </summary>\n        /// <param name=\"newCustomResourceDefinition\">\n        ///     A <see cref=\"CustomResourceDefinitionV1\"/> representing the CustomResourceDefinition to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1\"/> representing the current state for the newly-created CustomResourceDefinition.\n        /// </returns>\n        Task<CustomResourceDefinitionV1> Create(CustomResourceDefinitionV1 newCustomResourceDefinition, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified CustomResourceDefinition.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the CustomResourceDefinition to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1\"/> representing the job's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<CustomResourceDefinitionV1>> Delete(string name, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources/CustomResourceDefinitionClientV1Beta1.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.ResourceClients\n{\n    using Http;\n    using Models;\n\n    /// <summary>\n    ///     A client for the Kubernetes CustomResourceDefinitions (v1beta1) API.\n    /// </summary>\n    public class CustomResourceDefinitionClientV1Beta1\n        : KubeResourceClient, ICustomResourceDefinitionClientV1Beta1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"CustomResourceDefinitionClientV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        public CustomResourceDefinitionClientV1Beta1(IKubeApiClient client)\n            : base(client)\n        {\n        }\n\n        /// <summary>\n        ///     Get the CustomResourceDefinition with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the CustomResourceDefinition to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1Beta1\"/> representing the current state for the CustomResourceDefinition, or <c>null</c> if no CustomResourceDefinition was found with the specified name and namespace.\n        /// </returns>\n        public async Task<CustomResourceDefinitionV1Beta1> Get(string name, CancellationToken cancellationToken = default)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return await GetSingleResource<CustomResourceDefinitionV1Beta1>(\n                Requests.ByName.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Get all CustomResourceDefinitions in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the CustomResourceDefinitions.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionListV1Beta1\"/> containing the jobs.\n        /// </returns>\n        public async Task<CustomResourceDefinitionListV1Beta1> List(string? labelSelector = null, CancellationToken cancellationToken = default)\n        {\n            return await GetResourceList<CustomResourceDefinitionListV1Beta1>(\n                Requests.Collection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector\n                }),\n                cancellationToken: cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to a specific CustomResourceDefinition.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the job to watch.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<CustomResourceDefinitionV1Beta1>> Watch(string name)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            return ObserveEvents<CustomResourceDefinitionV1Beta1>(\n                Requests.WatchByName.WithTemplateParameters(new\n                {\n                    Name = name\n                }),\n                operationDescription: $\"watch v1beta1/CustomResourceDefintion '{name}'\"\n            );\n        }\n\n        /// <summary>\n        ///     Watch for events relating to CustomResourceDefinitions.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the CustomResourceDefinitions.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        public IObservable<IResourceEventV1<CustomResourceDefinitionV1Beta1>> WatchAll(string? labelSelector = null)\n        {\n            return ObserveEvents<CustomResourceDefinitionV1Beta1>(\n                Requests.WatchCollection.WithTemplateParameters(new\n                {\n                    LabelSelector = labelSelector\n                }),\n                operationDescription: $\"watch all v1beta1/CustomResourceDefintions with label selector '{labelSelector ?? \"<none>\"}'\"\n            );\n        }\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"CustomResourceDefinitionV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"newCustomResourceDefinition\">\n        ///     A <see cref=\"CustomResourceDefinitionV1Beta1\"/> representing the CustomResourceDefinition to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1Beta1\"/> representing the current state for the newly-created CustomResourceDefinition.\n        /// </returns>\n        public async Task<CustomResourceDefinitionV1Beta1> Create(CustomResourceDefinitionV1Beta1 newCustomResourceDefinition, CancellationToken cancellationToken = default)\n        {\n            if (newCustomResourceDefinition == null)\n                throw new ArgumentNullException(nameof(newCustomResourceDefinition));\n\n            return await Http\n                .PostAsJsonAsync(Requests.Collection,\n                    postBody: newCustomResourceDefinition,\n                    cancellationToken: cancellationToken\n                )\n                .ReadContentAsObjectV1Async<CustomResourceDefinitionV1Beta1>();\n        }\n\n        /// <summary>\n        ///     Request deletion of the specified CustomResourceDefinition.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the CustomResourceDefinition to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     An optional <see cref=\"DeletePropagationPolicy\"/> value indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1Beta1\"/> representing the job's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        public Task<KubeResourceResultV1<CustomResourceDefinitionV1Beta1>> Delete(string name, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default)\n        {\n            return DeleteGlobalResource<CustomResourceDefinitionV1Beta1>(Requests.ByName, name, propagationPolicy, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Request templates for the CustomResourceDefinition (v1) API.\n        /// </summary>\n        static class Requests\n        {\n            /// <summary>\n            ///     A collection-level CustomResourceDefinition (v1) request.\n            /// </summary>\n            public static readonly HttpRequest Collection = KubeRequest.Create(\"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A get-by-name CustomResourceDefinition (v1) request.\n            /// </summary>\n            public static readonly HttpRequest ByName = KubeRequest.Create(\"apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{Name}\");\n\n            /// <summary>\n            ///     A collection-level CustomResourceDefinition watch (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchCollection = KubeRequest.Create(\"/apis/apiextensions.k8s.io/v1beta1/watch/customresourcedefinitions?labelSelector={LabelSelector?}\");\n\n            /// <summary>\n            ///     A watch-by-name CustomResourceDefinition (v1) request.\n            /// </summary>\n            public static readonly HttpRequest WatchByName = KubeRequest.Create(\"/apis/apiextensions.k8s.io/v1beta1/watch/customresourcedefinitions/{Name}\");\n        }\n    }\n\n    /// <summary>\n    ///     Represents a client for the Kubernetes CustomResourceDefinitions (v1beta1) API.\n    /// </summary>\n    public interface ICustomResourceDefinitionClientV1Beta1\n    {\n        /// <summary>\n        ///     Get the CustomResourceDefinition with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the CustomResourceDefinition to retrieve.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1Beta1\"/> representing the current state for the CustomResourceDefinition, or <c>null</c> if no CustomResourceDefinition was found with the specified name and namespace.\n        /// </returns>\n        Task<CustomResourceDefinitionV1Beta1> Get(string name, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Get all CustomResourceDefinitions in the specified namespace, optionally matching a label selector.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the CustomResourceDefinitions.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionListV1Beta1\"/> containing the jobs.\n        /// </returns>\n        Task<CustomResourceDefinitionListV1Beta1> List(string? labelSelector = null, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Watch for events relating to a specific CustomResourceDefinition.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the job to watch.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<CustomResourceDefinitionV1Beta1>> Watch(string name);\n\n        /// <summary>\n        ///     Watch for events relating to CustomResourceDefinitions.\n        /// </summary>\n        /// <param name=\"labelSelector\">\n        ///     An optional Kubernetes label selector expression used to filter the CustomResourceDefinitions.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"IObservable{T}\"/> representing the event stream.\n        /// </returns>\n        IObservable<IResourceEventV1<CustomResourceDefinitionV1Beta1>> WatchAll(string? labelSelector = null);\n\n        /// <summary>\n        ///     Request creation of a <see cref=\"CustomResourceDefinitionV1Beta1\"/>.\n        /// </summary>\n        /// <param name=\"newCustomResourceDefinition\">\n        ///     A <see cref=\"CustomResourceDefinitionV1Beta1\"/> representing the CustomResourceDefinition to create.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1Beta1\"/> representing the current state for the newly-created CustomResourceDefinition.\n        /// </returns>\n        Task<CustomResourceDefinitionV1Beta1> Create(CustomResourceDefinitionV1Beta1 newCustomResourceDefinition, CancellationToken cancellationToken = default);\n\n        /// <summary>\n        ///     Request deletion of the specified CustomResourceDefinition.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name of the CustomResourceDefinition to delete.\n        /// </param>\n        /// <param name=\"propagationPolicy\">\n        ///     A <see cref=\"DeletePropagationPolicy\"/> indicating how child resources should be deleted (if at all).\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"CustomResourceDefinitionV1Beta1\"/> representing the job's most recent state before it was deleted, if <paramref name=\"propagationPolicy\"/> is <see cref=\"DeletePropagationPolicy.Foreground\"/>; otherwise, a <see cref=\"StatusV1\"/>.\n        /// </returns>\n        Task<KubeResourceResultV1<CustomResourceDefinitionV1Beta1>> Delete(string name, DeletePropagationPolicy? propagationPolicy = null, CancellationToken cancellationToken = default);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources/KubeClient.Extensions.CustomResources.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n    <Nullable>enable</Nullable>\n\n    <Description>Custom Resource Definition (CRD) support for KubeClient</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient/KubeClient.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"System.ComponentModel.Annotations\" Version=\"5.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources/KubeCustomResourceV1.cs",
    "content": "using System;\nusing Newtonsoft.Json;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The base class for models representing Kubernetes Custom Resources (CRDs).\n    /// </summary>\n    public abstract class KubeCustomResourceV1\n        : KubeResourceV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeCustomResourceV1\"/>.\n        /// </summary>\n        protected KubeCustomResourceV1()\n        {\n            if (String.IsNullOrEmpty(Kind) || string.IsNullOrWhiteSpace(ApiVersion))\n                throw new KubeClientException($\"Class '{GetType().Name}' derives from '{nameof(KubeCustomResourceV1)}' but is not decorated with the 'KubeResource' attribute.\");\n        }\n    }\n\n    /// <summary>\n    ///     The base class for models representing Kubernetes Custom Resource Definitions (CRDs).\n    /// </summary>\n    /// <typeparam name=\"TSpecification\">\n    ///     The type of model used to represent the resource specification.\n    /// </typeparam>\n    public abstract class KubeCustomResourceV1<TSpecification>\n        : KubeCustomResourceV1\n        where TSpecification : class\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeCustomResourceV1{TSpec}\"/>.\n        /// </summary>\n        protected KubeCustomResourceV1()\n        {\n        }\n\n        /// <summary>\n        ///     The resource specification.\n        /// </summary>\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public virtual TSpecification? Specification { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources/KubeCustomResourceV1Beta1.cs",
    "content": "using System;\nusing Newtonsoft.Json;\n\nnamespace KubeClient.Models\n{\n    /// <summary>\n    ///     The base class for models representing Kubernetes Custom Resources (CRDs).\n    /// </summary>\n    public abstract class KubeCustomResourceV1Beta1\n        : KubeResourceV1\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeCustomResourceV1Beta1\"/>.\n        /// </summary>\n        protected KubeCustomResourceV1Beta1()\n        {\n            if (String.IsNullOrEmpty(Kind) || string.IsNullOrWhiteSpace(ApiVersion))\n                throw new KubeClientException($\"Class '{GetType().Name}' derives from '{nameof(KubeCustomResourceV1Beta1)}' but is not decorated with the 'KubeResource' attribute.\");\n        }\n    }\n\n    /// <summary>\n    ///     The base class for models representing Kubernetes Custom Resource Definitions (CRDs).\n    /// </summary>\n    /// <typeparam name=\"TSpecification\">\n    ///     The type of model used to represent the resource specification.\n    /// </typeparam>\n    public abstract class KubeCustomResourceV1Beta1<TSpecification>\n        : KubeCustomResourceV1Beta1\n        where TSpecification : class\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeCustomResourceV1Beta1{TSpec}\"/>.\n        /// </summary>\n        protected KubeCustomResourceV1Beta1()\n        {\n        }\n\n        /// <summary>\n        ///     The resource specification.\n        /// </summary>\n        [JsonProperty(\"spec\", NullValueHandling = NullValueHandling.Ignore)]\n        public virtual TSpecification? Specification { get; set; }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.CodeGen/CodeGenHelper.cs",
    "content": "﻿using Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.CSharp;\nusing Microsoft.CodeAnalysis.CSharp.Syntax;\nusing Microsoft.CodeAnalysis.Editing;\nusing Microsoft.CodeAnalysis.Host.Mef;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\n\n// Some things we do, at the moment, are C#-specific.\n// If we want to be language-agnostic, we will probably need to create an MSBuildWorkspace,\n// load or create a real project that imports the required libraries and packages, and then get ITypeSymbols from there.\nusing CSFactory = Microsoft.CodeAnalysis.CSharp.SyntaxFactory;\n\nnamespace KubeClient.Extensions.CustomResources.CodeGen\n{\n    /// <summary>\n    ///     Helper methods for code generation with Microsoft Roslyn.\n    /// </summary>\n    static class CodeGenHelper\n    {\n        public static readonly SyntaxList<XmlNodeSyntax> EmptyXmlNodeList = CSFactory.List<XmlNodeSyntax>();\n\n        public static readonly XmlTextSyntax NewlineText = CSFactory.XmlText(CSFactory.TokenList(\n            CSFactory.XmlTextNewLine(\"\\n\")\n        ));\n\n        public static string IndentString(int indent = 0) => new String(' ', indent * 4);\n\n        public static XmlTextSyntax IndentText(int indent = 0)\n        {\n            return CSFactory.XmlText(\n                IndentString(indent)\n            );\n        }\n\n        public static XmlTextSyntax IndentedText(string text, int indent = 0)\n        {\n            StringBuilder textBuilder = new StringBuilder()\n                .Append(\n                    IndentString(indent)\n                )\n                .Append(text);\n\n            return CSFactory.XmlText(\n                textBuilder.ToString()\n            );\n        }\n\n        public static string GetLanguageName(this SyntaxGenerator syntaxGenerator)\n        {\n            if (syntaxGenerator == null)\n                throw new ArgumentNullException(nameof(syntaxGenerator));\n\n            string serviceType = typeof(SyntaxGenerator).FullName!;\n\n            Type generatorType = syntaxGenerator.GetType();\n            ExportLanguageServiceAttribute? exportLanguageServiceAttribute = generatorType\n                .GetCustomAttributes<ExportLanguageServiceAttribute>()\n                .FirstOrDefault(\n                    attribute => attribute.ServiceType.StartsWith(serviceType)\n                );\n            if (exportLanguageServiceAttribute != null)\n                return exportLanguageServiceAttribute.Language;\n\n            throw new NotSupportedException($\"Cannot determine language name for SyntaxGenerator: '{generatorType.FullName}'.\");\n        }\n\n        public static TSyntax WithLeadingNewline<TSyntax>(this TSyntax syntaxNode)\n            where TSyntax : SyntaxNode\n        {\n            if (syntaxNode == null)\n                throw new ArgumentNullException(nameof(syntaxNode));\n\n            return syntaxNode.WithLeadingTrivia(\n                syntaxNode.GetLeadingTrivia().Add(CSFactory.LineFeed)\n            );\n        }\n\n        public static TSyntax WithTrailingNewline<TSyntax>(this TSyntax syntaxNode)\n            where TSyntax : SyntaxNode\n        {\n            if (syntaxNode == null)\n                throw new ArgumentNullException(nameof(syntaxNode));\n\n            return syntaxNode.WithTrailingTrivia(\n                syntaxNode.GetTrailingTrivia().Add(CSFactory.LineFeed)\n            );\n        }\n\n        public static SyntaxNode WithTrailingSpace(this SyntaxNode syntaxNode)\n        {\n            if (syntaxNode == null)\n                throw new ArgumentNullException(nameof(syntaxNode));\n\n            return syntaxNode.WithTrailingTrivia(\n                syntaxNode.GetTrailingTrivia().Add(CSFactory.Space)\n            );\n        }\n\n        public static TSyntax WithIndent<TSyntax>(this TSyntax node, int indent)\n            where TSyntax : SyntaxNode\n        {\n            return node.WithLeadingTrivia(\n                node.GetLeadingTrivia().Add(\n                    CSFactory.Whitespace(\n                        IndentString(indent)\n                    )\n                )\n            );\n        }\n\n        public static SyntaxNode NamespaceImport(this SyntaxGenerator generator, string namespaceName)\n        {\n            if (generator == null)\n                throw new ArgumentNullException(nameof(generator));\n\n            if (String.IsNullOrWhiteSpace(namespaceName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(namespaceName)}.\", nameof(namespaceName));\n\n            return generator\n                .NamespaceImportDeclaration(\n                    name: generator.DottedName(namespaceName)\n                )\n                .NormalizeWhitespace();\n        }\n\n        public static SyntaxNode Namespace(this SyntaxGenerator generator, string namespaceName, params SyntaxNode[] declarations)\n        {\n            if (generator == null)\n                throw new ArgumentNullException(nameof(generator));\n\n            if (String.IsNullOrWhiteSpace(namespaceName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(namespaceName)}.\", nameof(namespaceName));\n\n            return generator.Namespace(\n                namespaceName,\n                declarations.AsEnumerable()\n            );\n        }\n\n        public static SyntaxNode Namespace(this SyntaxGenerator generator, string namespaceName, IEnumerable<SyntaxNode> declarations)\n        {\n            if (generator == null)\n                throw new ArgumentNullException(nameof(generator));\n\n            if (String.IsNullOrWhiteSpace(namespaceName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(namespaceName)}.\", nameof(namespaceName));\n\n            if (declarations == null)\n                throw new ArgumentNullException(nameof(declarations));\n\n            return generator\n                .NamespaceDeclaration(\n                    name: generator.DottedName(namespaceName),\n                    declarations: declarations\n                )\n                .WithLeadingNewline();\n        }\n\n        public static TSyntax WithDocumentation<TSyntax>(this TSyntax syntaxNode, params XmlNodeSyntax[] content)\n            where TSyntax : SyntaxNode\n        {\n            if (syntaxNode == null)\n                throw new ArgumentNullException(nameof(syntaxNode));\n\n            if (content == null)\n                throw new ArgumentNullException(nameof(content));\n\n            return syntaxNode.WithDocumentation(\n                content.AsEnumerable()\n            );\n        }\n\n        public static TSyntax WithDocumentation<TSyntax>(this TSyntax syntaxNode, IEnumerable<XmlNodeSyntax> content)\n            where TSyntax : SyntaxNode\n        {\n            if (syntaxNode == null)\n                throw new ArgumentNullException(nameof(syntaxNode));\n\n            if (content == null)\n                throw new ArgumentNullException(nameof(content));\n\n            return syntaxNode.WithoutLeadingTrivia().WithLeadingTrivia(\n                CSFactory.Trivia(\n                    CSFactory.DocumentationCommentTrivia(\n                        kind: SyntaxKind.SingleLineDocumentationCommentTrivia,\n                        content: CSFactory.List(content)\n                    )\n                    .WithLeadingTrivia(\n                        CSFactory.DocumentationCommentExterior(\"/// \")\n                    )\n                    .WithoutTrailingTrivia()\n                    .WithTrailingNewline()\n                )\n            );\n        }\n\n        public static XmlElementSyntax ListElement(this SyntaxGenerator generator, string type, int indent, params string[] itemContent)\n        {\n            if (generator == null)\n                throw new ArgumentNullException(nameof(generator));\n\n            if (String.IsNullOrWhiteSpace(type))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(type)}.\", nameof(type));\n\n            return generator.ListElement(type, indent,\n                itemContent.Select(CSFactory.XmlText)\n            );\n        }\n\n        public static XmlElementSyntax ListElement(this SyntaxGenerator generator, string type, int indent, params XmlTextSyntax[] itemContent)\n        {\n            if (generator == null)\n                throw new ArgumentNullException(nameof(generator));\n\n            if (String.IsNullOrWhiteSpace(type))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(type)}.\", nameof(type));\n\n            return generator.ListElement(type, indent,\n                itemContent.AsEnumerable()\n            );\n        }\n\n        public static XmlElementSyntax ListElement(this SyntaxGenerator generator, string type, int indent, IEnumerable<XmlNodeSyntax> itemContent)\n        {\n            if (generator == null)\n                throw new ArgumentNullException(nameof(generator));\n\n            if (String.IsNullOrWhiteSpace(type))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(type)}.\", nameof(type));\n\n            if (itemContent == null)\n                throw new ArgumentNullException(nameof(itemContent));\n\n            SyntaxList<XmlNodeSyntax> listContent = CSFactory.List<XmlNodeSyntax>()\n                .Add(NewlineText)\n                .AddRange(\n                    itemContent.SelectMany<XmlNodeSyntax, XmlNodeSyntax>(itemContent => [\n                        CSFactory.XmlElement(\"item\", [ itemContent ])\n                            .WithIndent(indent + 1),\n                        NewlineText,\n                    ])\n                );\n\n            return CSFactory\n                .XmlMultiLineElement(\"list\", listContent)\n                    .AddStartTagAttributes(\n                        CSFactory.XmlTextAttribute(\"type\", type)\n                    )\n                    .WithEndTag(\n                        CSFactory.XmlElementEndTag(\n                            CSFactory.XmlName(\"list\")\n                        )\n                        .WithIndent(indent)\n                    )\n                    .WithIndent(indent);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.CodeGen/KubeClient.Extensions.CustomResources.CodeGen.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n\n    <Nullable>enable</Nullable>\n    \n    <Description>Custom Resource Definition (CRD) code-generation support for KubeClient</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient.Extensions.CustomResources.Schema/KubeClient.Extensions.CustomResources.Schema.csproj\" />\n    <ProjectReference Include=\"../KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../KubeClient.Extensions.CustomResources/KubeClient.Extensions.CustomResources.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.CodeAnalysis\" Version=\"4.11.0\" />\n    <PackageReference Include=\"Microsoft.CodeAnalysis.CSharp\" Version=\"4.11.0\" />\n    <PackageReference Include=\"Microsoft.CodeAnalysis.CSharp.Workspaces\" Version=\"4.11.0\" />\n    <PackageReference Include=\"Microsoft.CodeAnalysis.Workspaces.Common\" Version=\"4.11.0\" />\n    <PackageReference Include=\"System.ComponentModel.Annotations\" Version=\"5.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.CodeGen/ModelGeneratorV1.cs",
    "content": "﻿using KubeClient.Extensions.CustomResources.Schema;\nusing KubeClient.Models;\nusing Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.Editing;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics.CodeAnalysis;\nusing System.Linq;\n\n// Some things we do, at the moment, are C#-specific.\n// If we want to be language-agnostic, we will probably need to create an MSBuildWorkspace,\n// load or create a real project that imports the required libraries and packages, and then get ITypeSymbols from there.\nusing CS = Microsoft.CodeAnalysis.CSharp.Syntax;\nusing CSFactory = Microsoft.CodeAnalysis.CSharp.SyntaxFactory;\nusing CSSyntaxKind = Microsoft.CodeAnalysis.CSharp.SyntaxKind;\n\nnamespace KubeClient.Extensions.CustomResources.CodeGen\n{\n    /// <summary>\n    ///     Code generator for <see cref=\"KubeResourceV1\"/> models, and associated types.\n    /// </summary>\n    public static class ModelGeneratorV1\n    {\n        /// <summary>\n        ///     Predefinued <see cref=\"SyntaxNode\"/>s representing commonly-used attributes on model types and their members.\n        /// </summary>\n        static class Attributes\n        {\n            /// <summary>\n            ///     Predefinued <see cref=\"CS.AttributeSyntax\"/> nodes representing commonly-used attributes on model types and their members.\n            /// </summary>\n            public static class CSharp\n            {\n                /// <summary>\n                ///     A predefined <see cref=\"CS.AttributeSyntax\"/> node representing a <see cref=\"JsonExtensionDataAttribute\"/> attribute on a member of a JSON-serialisable model.\n                /// </summary>\n                public static readonly CS.AttributeSyntax JsonExtensionData = CSFactory.Attribute(\n                    name: CSFactory.ParseName(\"JsonExtensionData\")\n                );\n            }\n        }\n\n        /// <summary>\n        ///     Predefinued <see cref=\"SyntaxToken\"/>s representing commonly-used declaration modifiers.\n        /// </summary>\n        static class Modifiers\n        {\n            /// <summary>\n            ///     Predefinued <see cref=\"SyntaxToken\"/>s representing commonly-used C# declaration modifiers.\n            /// </summary>\n            public static class CSharp\n            {\n                /// <summary>\n                ///     A <see cref=\"SyntaxToken\"/> node representing the C# \"readonly\" declaration-modifier keyword (<see cref=\"CSSyntaxKind.ReadOnlyKeyword\"/>).\n                /// </summary>\n                public static readonly SyntaxToken ReadOnly = CSFactory.Token(CSSyntaxKind.ReadOnlyKeyword);\n            }\n        }\n\n        /// <summary>\n        ///     Predefinued <see cref=\"SyntaxToken\"/>s representing commonly-used type references.\n        /// </summary>\n        static class TypeReferences\n        {\n            /// <summary>\n            ///     Predefinued <see cref=\"CS.TypeSyntax\"/> nodes representing commonly-used C# type references.\n            /// </summary>\n            public static class CSharp\n            {\n                /// <summary>\n                ///     A predefined <see cref=\"CS.TypeSyntax\"/> node representing a JSON extension-data dictionary (a <see cref=\"Dictionary{TKey, TValue}\"/> mapping <see cref=\"String\"/> to <see cref=\"JToken\"/>).\n                /// </summary>\n                public static readonly CS.TypeSyntax JsonExtensionData = CSFactory.ParseTypeName(\"Dictionary<string, JToken>\");\n\n                /// <summary>\n                ///     A predefined <see cref=\"CS.TypeSyntax\"/> node representing the <see cref=\"Models.KubeResourceV1\"/> base class for resource models.\n                /// </summary>\n                public static readonly CS.TypeSyntax KubeResourceV1 = CSFactory.ParseTypeName(\"KubeResourceV1\");\n            }\n        }\n\n        /// <summary>\n        ///     Predefinued <see cref=\"SyntaxToken\"/>s representing commonly-used field declarations.\n        /// </summary>\n        static class FieldDeclarations\n        {\n            /// <summary>\n            ///     Predefinued <see cref=\"CS.FieldDeclarationSyntax\"/> nodes representing commonly-used C# field references.\n            /// </summary>\n            public static class CSharp\n            {\n                /// <summary>\n                ///     A predefined <see cref=\"CS.FieldDeclarationSyntax\"/> node representing the \"_jsonExtensionDataField\" on a JSON-serialisable model.\n                /// </summary>\n                public static readonly CS.FieldDeclarationSyntax JsonExtensionData =\n                    CSFactory.FieldDeclaration(\n                        attributeLists: [\n                            CSFactory.AttributeList([\n                                Attributes.CSharp.JsonExtensionData\n                            ])\n                        ],\n                        modifiers: [\n                            Modifiers.CSharp.ReadOnly\n                        ],\n                        declaration: CSFactory.VariableDeclaration(\n                            type: TypeReferences.CSharp.JsonExtensionData,\n                            variables: [\n                                CSFactory.VariableDeclarator(\"_jsonExtensionData\").WithInitializer(\n                                    CSFactory.EqualsValueClause(\n                                        CSFactory.ObjectCreationExpression(\n                                            type: TypeReferences.CSharp.JsonExtensionData,\n                                            argumentList: CSFactory.ArgumentList(),\n                                            initializer: null\n                                        )\n                                    )\n                                )\n                            ]\n                        )\n                    )\n                    .WithDocumentation(\n                        CSFactory.XmlSummaryElement(\n                            CodeGenHelper.NewlineText,\n                            CodeGenHelper.IndentedText(\"Unmapped JSON data (i.e. not mapped to a member of the model type) to improve round-trip behaviour when updating resources via PUT.\", indent: 1),\n                            CodeGenHelper.NewlineText\n                        )\n                    );\n            }\n        }\n\n        \n\n        /// <summary>\n        ///     Generate model code for a resource type (and any related complex types) in the specified <see cref=\"KubeSchema\"/>.\n        /// </summary>\n        /// <param name=\"schema\">\n        ///     A <see cref=\"KubeSchema\"/> representing the source schema.\n        /// </param>\n        /// <param name=\"resourceType\">\n        ///     A <see cref=\"KubeResourceType\"/> that identifies the target resource type.\n        /// </param>\n        /// <param name=\"project\">\n        ///     The <see cref=\"Project\"/> that the generated code will be added to.\n        /// </param>\n        /// <param name=\"targetNamespace\">\n        ///     The target namespace for the generated code.\n        /// </param>\n        /// <returns>\n        ///     A modified copy of the <paramref name=\"project\"/>  (it is the caller's responsibility to call <see cref=\"Workspace.TryApplyChanges(Solution)\"/>).\n        /// </returns>\n        public static Project GenerateModels(KubeSchema schema, KubeResourceType resourceType, Project project, string targetNamespace)\n        {\n            if (schema == null)\n                throw new ArgumentNullException(nameof(schema));\n\n            if (resourceType == null)\n                throw new ArgumentNullException(nameof(resourceType));\n\n            if (project == null)\n                throw new ArgumentNullException(nameof(project));\n\n            if (String.IsNullOrWhiteSpace(targetNamespace))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(targetNamespace)}.\", nameof(targetNamespace));\n\n            KubeModel? model;\n            if (!schema.ResourceTypes.TryGetValue(resourceType, out model))\n                throw new ArgumentException($\"Schema does not contain any metadata for resource type '{resourceType.ToResourceTypeName()}'.\", nameof(schema));\n\n            // TODO: Work out how, if we need to at all, to group shared complex types so we can put each resource type in its own file with any complex types that are only associated with that resource.\n\n            var complexTypes = new HashSet<KubeComplexType>();\n            DiscoverComplexTypes(model, complexTypes);\n\n            Document document = GenerateModels(project, model, complexTypes, targetNamespace);\n            \n            return document.Project;\n        }\n\n        /// <summary>\n        ///     Generate type declarations for a resource model and its related complex types (if any).\n        /// </summary>\n        /// <param name=\"project\">\n        ///     The <see cref=\"Project\"/> that the generated code's containing <see cref=\"Document\"/> will be added to.\n        /// </param>\n        /// <param name=\"model\">\n        ///     A <see cref=\"KubeModel\"/> representing the resource-model metadata.\n        /// </param>\n        /// <param name=\"complexTypes\">\n        ///     A sequence of 0 or more <see cref=\"KubeComplexType\"/> representing the complex type metadata (if any).\n        /// </param>\n        /// <param name=\"targetNamespace\">\n        ///     The fully-qualified namespace for the generated code.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Document\"/> containing the generated code.\n        /// </returns>\n        static Document GenerateModels(Project project, KubeModel model, IEnumerable<KubeComplexType> complexTypes, string targetNamespace)\n        {\n            if (model == null)\n                throw new ArgumentNullException(nameof(model));\n\n            if (complexTypes == null)\n                throw new ArgumentNullException(nameof(complexTypes));\n\n            if (project == null)\n                throw new ArgumentNullException(nameof(project));\n\n            SyntaxGenerator syntaxGenerator = SyntaxGenerator.GetGenerator(project);\n\n            SyntaxNode generatedModel = syntaxGenerator.CompilationUnit(\n                syntaxGenerator.NamespaceImport(\"KubeClient.Models\"),\n                syntaxGenerator.NamespaceImport(\"Newtonsoft.Json\"),\n                syntaxGenerator.NamespaceImport(\"Newtonsoft.Json.Linq\"),\n                syntaxGenerator.NamespaceImport(\"System\"),\n                syntaxGenerator.NamespaceImport(\"System.Collections.Generic\"),\n                syntaxGenerator.NamespaceImport(\"YamlDotNet.Serialization\"),\n                syntaxGenerator.Namespace(targetNamespace,\n                    declarations: \n                        GenerateResourceDeclarations([model], syntaxGenerator).Select(\n                            classDeclaration => classDeclaration.WithTrailingNewline()\n                        ).Concat(\n                            GenerateComplexTypeDeclarations(complexTypes, syntaxGenerator).Select(\n                                classDeclaration => classDeclaration.WithTrailingNewline()\n                            )\n                        )\n                )\n            );\n\n            return project.AddDocument($\"{model.ClrTypeName}.cs\", generatedModel);\n        }\n\n        /// <summary>\n        ///     Generate type declarations for resource models.\n        /// </summary>\n        /// <param name=\"models\">\n        ///     A sequence of <see cref=\"KubeModel\"/>s representing the resource models.\n        /// </param>\n        /// <param name=\"syntaxGenerator\">\n        ///     The current (language-specific) <see cref=\"SyntaxGenerator\"/> used to generate code.\n        /// </param>\n        /// <returns>\n        ///     A sequence of corresponding <see cref=\"SyntaxNode\"/>s representing the resource type declarations.\n        /// </returns>\n        static IEnumerable<SyntaxNode> GenerateResourceDeclarations(IEnumerable<KubeModel> models, SyntaxGenerator syntaxGenerator)\n        {\n            if (models == null)\n                throw new ArgumentNullException(nameof(models));\n\n            if (syntaxGenerator == null)\n                throw new ArgumentNullException(nameof(syntaxGenerator));\n\n            foreach (KubeModel model in models.OrderBy(model => model.ClrTypeName))\n            {\n                yield return\n                    syntaxGenerator.AddAttributes(\n                        declaration: syntaxGenerator.ClassDeclaration(\n                            name: model.ClrTypeName,\n                            baseType: TypeReferences.CSharp.KubeResourceV1,\n                            accessibility: Accessibility.Public,\n                            modifiers: DeclarationModifiers.Partial,\n                            members: [\n                                FieldDeclarations.CSharp.JsonExtensionData.WithTrailingNewline(),\n\n                                .. GenerateProperties(model.Properties, syntaxGenerator)\n                            ]\n                        ),\n                        attributes: [\n                            syntaxGenerator.Attribute(\"KubeObject\", attributeArguments: [\n                                syntaxGenerator.LiteralExpression(model.ResourceType.ResourceKind), // kind\n                                syntaxGenerator.LiteralExpression($\"{model.ResourceType.Group}/{model.ResourceType.Version}\") // groupVersion\n                            ]),\n\n                            .. model.ResourceApis.PrimaryApi.SupportedVerbs.Select(\n                                verb => syntaxGenerator.Attribute(\"KubeApi\", attributeArguments: [\n                                    syntaxGenerator.MemberAccessExpression(\n                                        CSFactory.ParseTypeName(nameof(KubeAction)),\n                                        CSFactory.IdentifierName(verb.KubeAction.ToString())\n                                    ),\n                                    syntaxGenerator.LiteralExpression(model.ResourceApis.PrimaryApi.Path)\n                                ])\n                            )\n                        ]\n                    )\n                    .WithDocumentation(\n                        CSFactory.XmlSummaryElement(\n                            CodeGenHelper.NewlineText,\n                            CodeGenHelper.IndentedText(model.Summary ?? \"No description is available.\", indent: 1),\n                            CodeGenHelper.NewlineText\n                        )\n                    )\n                    .WithTrailingNewline();\n            }\n        }\n\n        /// <summary>\n        ///     Generate type declarations for complex type models.\n        /// </summary>\n        /// <param name=\"complexTypes\">\n        ///     A sequence of <see cref=\"KubeComplexType\"/>s representing the complex types.\n        /// </param>\n        /// <param name=\"syntaxGenerator\">\n        ///     The current (language-specific) <see cref=\"SyntaxGenerator\"/> used to generate code.\n        /// </param>\n        /// <returns>\n        ///     A sequence of corresponding <see cref=\"SyntaxNode\"/>s representing the complex type declarations.\n        /// </returns>\n        static IEnumerable<SyntaxNode> GenerateComplexTypeDeclarations(IEnumerable<KubeComplexType> complexTypes, SyntaxGenerator syntaxGenerator)\n        {\n            if (syntaxGenerator == null)\n                throw new ArgumentNullException(nameof(syntaxGenerator));\n\n            if (complexTypes == null)\n                throw new ArgumentNullException(nameof(complexTypes));\n\n            foreach (KubeComplexType complexType in complexTypes.OrderBy(complexType => complexType.ClrTypeName))\n            {\n                yield return syntaxGenerator\n                    .ClassDeclaration(\n                        complexType.ClrTypeName,\n                        accessibility: Accessibility.Public,\n                        modifiers: DeclarationModifiers.Partial,\n                        members: [\n                            FieldDeclarations.CSharp.JsonExtensionData.WithTrailingNewline(),\n\n                            .. GenerateProperties(complexType.Properties, syntaxGenerator)\n                        ]\n                    )\n                    .WithDocumentation(\n                        CSFactory.XmlSummaryElement(\n                            CodeGenHelper.NewlineText,\n                            CodeGenHelper.IndentedText(complexType.Summary ?? \"No description is available.\", indent: 1),\n                            CodeGenHelper.NewlineText\n                        )\n                    )\n                    .WithTrailingNewline();\n            }\n        }\n\n        /// <summary>\n        ///     Generate property declarations for model properties.\n        /// </summary>\n        /// <param name=\"properties\">\n        ///     A sequence of key-value pairs, each representing a property name and corresponding <see cref=\"KubeModelProperty\"/>.\n        /// </param>\n        /// <param name=\"syntaxGenerator\">\n        ///     The current (language-specific) <see cref=\"SyntaxGenerator\"/> used to generate code.\n        /// </param>\n        /// <returns>\n        ///     A sequence of corresponding <see cref=\"SyntaxNode\"/>s representing the property declarations.\n        /// </returns>\n        static IEnumerable<SyntaxNode> GenerateProperties(IEnumerable<KeyValuePair<string, KubeModelProperty>> properties, SyntaxGenerator syntaxGenerator)\n        {\n            if (properties == null)\n                throw new ArgumentNullException(nameof(properties));\n            \n            if (syntaxGenerator == null)\n                throw new ArgumentNullException(nameof(syntaxGenerator));\n\n            foreach ((string propertyName, KubeModelProperty property) in properties.OrderBy(item => item.Key))\n            {\n                SyntaxNode propertyType = property.DataType switch\n                {\n                    KubeIntrinsicDataType intrinsicDataType => GetTypeReference(intrinsicDataType, syntaxGenerator),\n                    KubeDataType dataType => GetDataType(dataType, syntaxGenerator),\n                };\n\n                SyntaxNode propertyDeclaration = syntaxGenerator.PropertyDeclaration(propertyName,\n                    type: propertyType,\n                    accessibility: Accessibility.Public\n                );\n\n                propertyDeclaration = syntaxGenerator.AddAttributes(propertyDeclaration,\n                    // [YamlMember(Alias = \"myProperty\")]\n                    syntaxGenerator.Attribute(\"YamlMember\",\n                        syntaxGenerator.AttributeArgument(\"Alias\",\n                            syntaxGenerator.LiteralExpression(property.SerializedName)\n                        )\n                    ),\n\n                    // [JsonProperty(\"myProperty\")]\n                    syntaxGenerator.Attribute(\"JsonProperty\",\n                        syntaxGenerator.AttributeArgument(\n                            syntaxGenerator.LiteralExpression(property.SerializedName)\n                        )\n                    )\n                );\n\n                propertyDeclaration = propertyDeclaration.WithDocumentation(\n                    CSFactory.XmlSummaryElement(\n                        CodeGenHelper.NewlineText,\n                        CodeGenHelper.IndentedText(property.Summary ?? \"No description is available.\", indent: 1),\n                        CodeGenHelper.NewlineText\n                    )\n                );\n\n                yield return propertyDeclaration.WithTrailingNewline();\n            }\n        }\n\n        /// <summary>\n        ///     Get a type reference corresponding to the specified intrinsic data-type.\n        /// </summary>\n        /// <param name=\"intrinsicDataType\">\n        ///     A <see cref=\"KubeIntrinsicDataType\"/> representing the intrinsic data-type.\n        /// </param>\n        /// <param name=\"syntaxGenerator\">\n        ///     The current (language-specific) <see cref=\"SyntaxGenerator\"/> used to generate code.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SyntaxNode\"/> representing the type reference.\n        /// </returns>\n        static SyntaxNode GetTypeReference(KubeIntrinsicDataType intrinsicDataType, SyntaxGenerator syntaxGenerator)\n        {\n            if (intrinsicDataType == null)\n                throw new ArgumentNullException(nameof(intrinsicDataType));\n\n            if (syntaxGenerator == null)\n                throw new ArgumentNullException(nameof(syntaxGenerator));\n\n            SpecialType intrinsicType = intrinsicDataType.Name switch\n            {\n                \"int\" => SpecialType.System_Int32,\n                \"double\" => SpecialType.System_Double,\n                \"long\" => SpecialType.System_Int64,\n                \"string\" => SpecialType.System_String,\n\n                _ => SpecialType.None\n            };\n\n            if (intrinsicType != SpecialType.None)\n                return syntaxGenerator.TypeExpression(intrinsicType);\n\n            // TODO: This won't work for any language other than C#; find a non-broken way to handle it!\n            //       Will probably need to create an MSBuildWorkspace, load or create a real project that imports the required libraries and packages (then get ITypeSymbols from there).\n            return CSFactory.ParseTypeName(\n                intrinsicDataType.GetClrTypeName()\n            );\n        }\n\n        /// <summary>\n        ///     Get a type reference corresponding to the specified data-type.\n        /// </summary>\n        /// <param name=\"dataType\">\n        ///     A <see cref=\"KubeDataType\"/> representing the data-type.\n        /// </param>\n        /// <param name=\"syntaxGenerator\">\n        ///     The current (language-specific) <see cref=\"SyntaxGenerator\"/> used to generate code.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"SyntaxNode\"/> representing the type reference.\n        /// </returns>\n        static SyntaxNode GetDataType(KubeDataType dataType, SyntaxGenerator syntaxGenerator)\n        {\n            if (dataType == null)\n                throw new ArgumentNullException(nameof(dataType));\n\n            if (syntaxGenerator == null)\n                throw new ArgumentNullException(nameof(syntaxGenerator));\n\n            // TODO: This won't work for any language other than C#; find a non-broken way to handle it!\n            //       Will probably need to create an MSBuildWorkspace, load or create a real project that imports the required libraries and packages (then get ITypeSymbols from there).\n            return CSFactory.ParseTypeName(\n                dataType.GetClrTypeName()\n            );\n        }\n\n        /// <summary>\n        ///     Recursively discover complex types referenced by a Kubernetes resource type.\n        /// </summary>\n        /// <param name=\"containingModel\">\n        ///     A <see cref=\"KubeModel\"/> representing the target resource type.\n        /// </param>\n        /// <param name=\"complexTypes\">\n        ///     A set of <see cref=\"KubeComplexType\"/>s representing all discovered complex types.\n        /// </param>\n        static void DiscoverComplexTypes(KubeModel containingModel, HashSet<KubeComplexType> complexTypes)\n        {\n            if (containingModel == null)\n                throw new ArgumentNullException(nameof(containingModel));\n\n            if (complexTypes == null)\n                throw new ArgumentNullException(nameof(complexTypes));\n\n            foreach (KubeModelProperty property in containingModel.Properties.Values)\n            {\n                KubeComplexType? complexType;\n                if (!TryGetComplexType(property.DataType, out complexType))\n                    continue;\n\n                if (!complexTypes.Add(complexType))\n                    continue; // Already processed.\n\n                DiscoverComplexTypes(complexType, complexTypes);\n            }\n        }\n\n        /// <summary>\n        ///     Recursively discover complex types referenced by a Kubernetes complex type.\n        /// </summary>\n        /// <param name=\"containingType\">\n        ///     A <see cref=\"KubeComplexType\"/> representing the target complex type.\n        /// </param>\n        /// <param name=\"complexTypes\">\n        ///     A set of <see cref=\"KubeComplexType\"/>s representing all discovered complex types.\n        /// </param>\n        static void DiscoverComplexTypes(KubeComplexType containingType, HashSet<KubeComplexType> complexTypes)\n        {\n            if (containingType == null)\n                throw new ArgumentNullException(nameof(containingType));\n\n            if (complexTypes == null)\n                throw new ArgumentNullException(nameof(complexTypes));\n\n            foreach (KubeModelProperty property in containingType.Properties.Values)\n            {\n                KubeComplexType? complexType;\n                if (!TryGetComplexType(property.DataType, out complexType))\n                    continue;\n\n                if (!complexTypes.Add(complexType))\n                    continue; // Already processed.\n\n                // Recurse.\n                DiscoverComplexTypes(complexType, complexTypes);\n            }\n        }\n\n        /// <summary>\n        ///     Attempt to resolve a <see cref=\"KubeComplexType\"/> from a <see cref=\"KubeDataType\"/>.\n        /// </summary>\n        /// <param name=\"dataType\">\n        ///     The <see cref=\"KubeDataType\"/> to inspect.\n        /// </param>\n        /// <param name=\"complexType\">\n        ///     If successful, receives the <see cref=\"KubeComplexType\"/> (otherwise, <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if successful; otherwise, <c>false</c>.\n        /// </returns>\n        /// <remarks>\n        ///     Recurses into element types for array / dictionary data types.\n        /// </remarks>\n        static bool TryGetComplexType(KubeDataType dataType, [NotNullWhen(returnValue: true)] out KubeComplexType? complexType)\n        {\n            if (dataType == null)\n                throw new ArgumentNullException(nameof(dataType));\n\n            complexType = null;\n\n            if (dataType is KubeArrayDataType arrayDataType && arrayDataType.ElementType is KubeComplexDataType arrayElementDataType)\n                complexType = arrayElementDataType.ComplexType;\n            else if (dataType is KubeDictionaryDataType dictionaryDataType && dictionaryDataType.ElementType is KubeComplexDataType dictionaryElementDataType)\n                complexType = dictionaryElementDataType.ComplexType;\n            else if (dataType is KubeComplexDataType complexDataType)\n                complexType = complexDataType.ComplexType;\n\n            return complexType != null;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/AssemblyVisibility.cs",
    "content": "﻿using System.Runtime.CompilerServices;\n\n[assembly: InternalsVisibleTo(\"KubeClient.Extensions.CustomResources.Tests\")]\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/CustomResourceSchemaExtensions.cs",
    "content": "﻿using KubeClient.Models;\nusing System;\n\nnamespace KubeClient.Extensions.CustomResources.Schema\n{\n    /// <summary>\n    ///     Schema-related extension methods for working with <see cref=\"KubeCustomResourceV1{TSpecification}\"/> and related types.\n    /// </summary>\n    public static class CustomResourceSchemaExtensions\n    {\n        /// <summary>\n        ///     Generate a JSON schema for validating the specification model for a Custom Resource Definition (CRD).\n        /// </summary>\n        /// <typeparam name=\"TSpecification\">\n        ///     The type of model used to represent the CRD specification.\n        /// </typeparam>\n        /// <param name=\"customResource\">\n        ///     The Custom Resource Definition (CRD).\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"JSONSchemaPropsV1\"/>.\n        /// </returns>\n        public static JSONSchemaPropsV1Beta1 GenerateSpecificationSchema<TSpecification>(this KubeCustomResourceV1Beta1<TSpecification> customResource)\n            where TSpecification : class\n        {\n            if (customResource == null)\n                throw new ArgumentNullException(nameof(customResource));\n\n            return SchemaGeneratorV1Beta1.GenerateSchema(modelType: typeof(TSpecification));\n        }\n\n        /// <summary>\n        ///     Generate a JSON schema for validating the specification model for a Custom Resource Definition (CRD).\n        /// </summary>\n        /// <typeparam name=\"TSpecification\">\n        ///     The type of model used to represent the CRD specification.\n        /// </typeparam>\n        /// <param name=\"customResource\">\n        ///     The Custom Resource Definition (CRD).\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"JSONSchemaPropsV1\"/>.\n        /// </returns>\n        public static JSONSchemaPropsV1 GenerateSpecificationSchema<TSpecification>(this KubeCustomResourceV1<TSpecification> customResource)\n            where TSpecification : class\n        {\n            if (customResource == null)\n                throw new ArgumentNullException(nameof(customResource));\n\n            return SchemaGeneratorV1.GenerateSchema(modelType: typeof(TSpecification));\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/JsonSchemaParserV1.cs",
    "content": "﻿using KubeClient.ApiMetadata;\nusing KubeClient.Extensions.CustomResources.Schema.Utilities;\nusing KubeClient.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Linq;\n\nnamespace KubeClient.Extensions.CustomResources.Schema\n{\n    /// <summary>\n    ///     Parses <see cref=\"KubeSchema\"/> from <see cref=\"JSONSchemaPropsV1\"/>.\n    /// </summary>\n    /// <remarks>\n    ///     TODO: Handle required/nullable properties (and use nullable type support as required).\n    /// </remarks>\n    public static class JsonSchemaParserV1\n    {\n        /// <summary>\n        ///     Build a <see cref=\"KubeSchema\"/> from one or more Custom Resource Definitions (CRDs).\n        /// </summary>\n        /// <param name=\"apiMetadataCache\">\n        ///     The Kubernetes API-metadata cache.\n        /// </param>\n        /// <param name=\"customResourceDefinitions\">\n        ///     The <see cref=\"CustomResourceDefinitionV1\"/>s.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeSchema\"/> representing the CRDs and any related types.\n        /// </returns>\n        public static KubeSchema BuildKubeSchema(KubeApiMetadataCache apiMetadataCache, params CustomResourceDefinitionV1[] customResourceDefinitions) => BuildKubeSchema(apiMetadataCache, customResourceDefinitions.AsEnumerable());\n\n        /// <summary>\n        ///     Build a <see cref=\"KubeSchema\"/> from one or more Custom Resource Definitions (CRDs).\n        /// </summary>\n        /// <param name=\"apiMetadataCache\">\n        ///     The Kubernetes API-metadata cache.\n        /// </param>\n        /// <param name=\"customResourceDefinitions\">\n        ///     The <see cref=\"CustomResourceDefinitionV1\"/>s.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"KubeSchema\"/> representing the CRDs and any related types.\n        /// </returns>\n        public static KubeSchema BuildKubeSchema(KubeApiMetadataCache apiMetadataCache, IEnumerable<CustomResourceDefinitionV1> customResourceDefinitions)\n        {\n            if (apiMetadataCache == null)\n                throw new ArgumentNullException(nameof(apiMetadataCache));\n\n            if (customResourceDefinitions == null)\n                throw new ArgumentNullException(nameof(customResourceDefinitions));\n\n            Dictionary<string, KubeDataType> dataTypes = new Dictionary<string, KubeDataType>();\n            Dictionary<KubeResourceType, KubeModel> resourceTypes = new Dictionary<KubeResourceType, KubeModel>();\n\n            foreach (CustomResourceDefinitionV1 customResourceDefinition in customResourceDefinitions)\n            {\n                if (customResourceDefinition.Spec.Versions.Count == 0)\n                    throw new KubeClientException($\"Invalid custom resource definition (CRD) '{customResourceDefinition.Metadata.Name}': no versions declared.\");\n\n                CustomResourceDefinitionVersionV1 primaryVersion = customResourceDefinition.Spec.Versions[0];\n\n                KubeResourceType resourceType = new KubeResourceType(Group: customResourceDefinition.Spec.Group, Version: primaryVersion.Name, ResourceKind: customResourceDefinition.Spec.Names.Kind);\n                if (resourceTypes.ContainsKey(resourceType))\n                    continue;\n\n                KubeApiMetadata apiMetadata = apiMetadataCache.Get(\n                    kind: resourceType.ResourceKind,\n                    apiGroup: resourceType.Group,\n                    apiVersion: resourceType.Version\n                );\n                if (apiMetadata == null)\n                    throw new KubeClientException($\"Cannot process custom resource definition (CRD) '{resourceType.ToResourceTypeName()}': no API metadata for this resource type was found in the cache.\");\n\n                KubeModel resourceTypeModel = ParseResourceType(resourceType, apiMetadata, primaryVersion.Schema.OpenAPIV3Schema, dataTypes);\n                resourceTypes.Add(resourceType, resourceTypeModel);\n            }\n\n            return new KubeSchema(\n                ResourceTypes: ImmutableDictionary.CreateRange(resourceTypes),\n                DataTypes: ImmutableDictionary.CreateRange(dataTypes)\n            );\n        }\n\n        /// <summary>\n        ///     Parse a resource type into a <see cref=\"KubeModel\"/>.\n        /// </summary>\n        /// <param name=\"resourceType\">\n        ///     A <see cref=\"KubeResourceType\"/> that identifies the target resource type.\n        /// </param>\n        /// <param name=\"apiMetadata\">\n        ///     The API metadata for the target resource type.\n        /// </param>\n        /// <param name=\"resourceTypeSchema\">\n        ///     <see cref=\"JSONSchemaPropsV1\"/> representing the schema for the target resource type.\n        /// </param>\n        /// <param name=\"knownDataTypes\">\n        ///     Known data types that have already been processed (or are well-known).\n        /// </param>\n        /// <returns>\n        ///     The new <see cref=\"KubeModel\"/>.\n        /// </returns>\n        static KubeModel ParseResourceType(KubeResourceType resourceType, KubeApiMetadata apiMetadata, JSONSchemaPropsV1 resourceTypeSchema, Dictionary<string, KubeDataType> knownDataTypes)\n        {\n            if (resourceType == null)\n                throw new ArgumentNullException(nameof(resourceType));\n\n            if (apiMetadata == null)\n                throw new ArgumentNullException(nameof(apiMetadata));\n\n            if (resourceTypeSchema == null)\n                throw new ArgumentNullException(nameof(resourceTypeSchema));\n\n            if (resourceTypeSchema.Type != \"object\")\n                throw new InvalidOperationException(\"Invalid resource-type schema ('type' is not 'object').\");\n\n            if (knownDataTypes == null)\n                throw new ArgumentNullException(nameof(knownDataTypes));\n\n            Stack<string> propertyPathSegments = new Stack<string>();\n\n            Dictionary<string, KubeModelProperty> modelProperties = new Dictionary<string, KubeModelProperty>();\n            foreach ((string jsonPropertyName, JSONSchemaPropsV1 propertySchema) in resourceTypeSchema.Properties)\n            {\n                propertyPathSegments.Push(jsonPropertyName);\n\n                KubeDataType propertyDataType = ParseDataType(resourceType, propertyPathSegments, propertySchema, knownDataTypes);\n\n                string sanitizedPropertyName = NameWrangler.CapitalizeName(\n                    NameWrangler.SanitizeName(jsonPropertyName)\n                );\n\n                string[] mergeStrategies = (resourceTypeSchema.KubernetesPatchMergeStrategy ?? String.Empty).Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);\n\n                modelProperties.Add(sanitizedPropertyName,\n                    new KubeModelProperty(\n                        sanitizedPropertyName,\n                        propertySchema.Description,\n                        propertyDataType, jsonPropertyName,\n                        IsOptional: !resourceTypeSchema.Required.Contains(jsonPropertyName),\n                        IsMerge: mergeStrategies.Contains(\"merge\"),\n                        MergeKey: resourceTypeSchema.KubernetesPatchMergeKey,\n                        IsRetainKeys: mergeStrategies.Contains(\"retainKeys\")\n                    )\n                );\n\n                propertyPathSegments.Pop();\n            }\n\n            KubeResourceApis resourceApis = ParseApiMetadata(resourceType, apiMetadata);\n\n            return new KubeModel(\n                ResourceType: resourceType,\n                Summary: resourceTypeSchema.Description ?? \"Documentation is not available for this resource type.\",\n                Properties: ImmutableDictionary.CreateRange(modelProperties),\n                ResourceApis: resourceApis\n            );\n        }\n\n        /// <summary>\n        ///     Parse a data-type schema into a <see cref=\"KubeDataType\"/>.\n        /// </summary>\n        /// <param name=\"resourceType\">\n        ///     A <see cref=\"KubeResourceType\"/> that identifies the target resource type.\n        /// </param>\n        /// <param name=\"propertyPathSegments\">\n        ///     A stack of property names representing the path from the current resource type to the current data-type.\n        /// </param>\n        /// <param name=\"schema\">\n        ///     <see cref=\"JSONSchemaPropsV1\"/> representing the schema for the target data type.\n        /// </param>\n        /// <param name=\"dataTypes\">\n        ///     Known data types that have already been processed (or are well-known).\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"KubeDataType\"/>.\n        /// </returns>\n        static KubeDataType ParseDataType(KubeResourceType resourceType, Stack<string> propertyPathSegments, JSONSchemaPropsV1 schema, Dictionary<string, KubeDataType> dataTypes)\n        {\n            if (resourceType == null)\n                throw new ArgumentNullException(nameof(resourceType));\n\n            if (propertyPathSegments == null)\n                throw new ArgumentNullException(nameof(propertyPathSegments));\n\n            if (schema == null)\n                throw new ArgumentNullException(nameof(schema));\n\n            if (dataTypes == null)\n                throw new ArgumentNullException(nameof(dataTypes));\n\n            KubeDataType? dataType;\n\n            string dataTypeName = GetDataTypeName(resourceType, propertyPathSegments);\n            if (dataTypes.TryGetValue(dataTypeName, out dataType))\n                return dataType;\n\n            string typeName, typeFormat;\n            if (!String.IsNullOrWhiteSpace(schema.Type))\n            {\n                typeName = schema.Type;\n                typeFormat = schema.Format;\n\n                switch (typeName)\n                {\n                    case \"array\":\n                    {\n                        JSONSchemaPropsV1 itemSchema = schema.Items;\n                        if (itemSchema.Description is null)\n                            itemSchema.Description = schema.Description;\n\n                        KubeDataType elementDataType = ParseDataType(resourceType, propertyPathSegments, itemSchema, dataTypes);\n\n                        dataType = new KubeArrayDataType(elementDataType);\n\n                        return dataType;\n                    }\n                    case \"object\":\n                    {\n                        if (schema.Properties.Count == 0 && schema.KubernetesPreserveUnknownFields == true)\n                            return KubeDynamicObjectDataType.Instance;\n\n                        Dictionary<string, KubeModelProperty> modelProperties = new Dictionary<string, KubeModelProperty>();\n                        foreach ((string jsonPropertyName, JSONSchemaPropsV1 propertySchema) in schema.Properties)\n                        {\n                            propertyPathSegments.Push(jsonPropertyName);\n\n                            KubeDataType propertyDataType = ParseDataType(resourceType, propertyPathSegments, propertySchema, dataTypes);\n\n                            string sanitizedPropertyName = NameWrangler.CapitalizeName(\n                                NameWrangler.SanitizeName(jsonPropertyName)\n                            );\n\n                            string[] mergeStrategies = (propertySchema.KubernetesPatchMergeStrategy ?? String.Empty).Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);\n\n                            modelProperties.Add(sanitizedPropertyName,\n                                new KubeModelProperty(\n                                    Name: sanitizedPropertyName,\n                                    Summary: propertySchema.Description,\n                                    DataType: propertyDataType,\n                                    SerializedName: jsonPropertyName,\n                                    IsOptional: !propertySchema.Required.Contains(jsonPropertyName),\n                                    IsMerge: mergeStrategies.Contains(\"merge\"),\n                                    MergeKey: propertySchema.KubernetesPatchMergeKey,\n                                    IsRetainKeys: mergeStrategies.Contains(\"retainKeys\")\n                                )\n                            );\n\n                            propertyPathSegments.Pop();\n                        }\n\n                        KubeComplexType subModel = new KubeComplexType(\n                            Name: dataTypeName,\n                            Summary: schema.Description ?? \"No description is available\",\n                            Properties: ImmutableDictionary.CreateRange(modelProperties)\n                        );\n                        KubeComplexDataType subModelDataType = new KubeComplexDataType(subModel);\n                        dataTypes.Add(dataTypeName, subModelDataType);\n\n                        return subModelDataType;\n                    }\n                    case \"number\":\n                    {\n                        if (typeFormat == \"double\")\n                            return new KubeIntrinsicDataType(\"double\");\n\n                        break;\n                    }\n                    case \"integer\":\n                    {\n                        if (typeFormat == \"int32\")\n                            return new KubeIntrinsicDataType(\"int\");\n                        else if (typeFormat == \"int46\")\n                            return new KubeIntrinsicDataType(\"long\");\n\n                        return new KubeIntrinsicDataType(\"int\");\n                    }\n                    case \"string\":\n                    case \"boolean\":\n                    {\n                        return new KubeIntrinsicDataType(typeName);\n                    }\n                    default:\n                    {\n                        if (!dataTypes.TryGetValue(typeName, out KubeDataType? intrinsicDataType))\n                        {\n                            intrinsicDataType =  new KubeIntrinsicDataType(typeName);\n                            dataTypes.Add(typeName, intrinsicDataType);\n                        }\n                            \n                        return intrinsicDataType;\n                    }\n                }\n            }\n\n            if (String.IsNullOrWhiteSpace(schema.Ref))\n                throw new KubeClientException($\"Schema is missing '$ref'.\");\n\n            typeName = schema.Ref.Replace(\"#/definitions/\", String.Empty);\n\n            if (!dataTypes.TryGetValue(typeName, out dataType))\n            {\n                string summary = schema.Description ?? \"Description not provided.\";\n                dataType = new KubeDataType(typeName, summary);\n                dataTypes.Add(typeName, dataType);\n            }\n\n            return dataType;\n        }\n\n        /// <summary>\n        ///     Detemine the name for a <see cref=\"KubeDataType\"/> representing a complex data-type.\n        /// </summary>\n        /// <param name=\"resourceType\">\n        ///     A <see cref=\"KubeResourceType\"/> that identifies the current resource type.\n        /// </param>\n        /// <param name=\"propertyPathSegments\">\n        ///     A stack of property names representing the path from the current resource type to the current data-type.\n        /// </param>\n        /// <returns>\n        ///     The data-type name.\n        /// </returns>\n        static string GetDataTypeName(KubeResourceType resourceType, Stack<string> propertyPathSegments)\n        {\n            if (resourceType == null)\n                throw new ArgumentNullException(nameof(resourceType));\n\n            if (propertyPathSegments == null)\n                throw new ArgumentNullException(nameof(propertyPathSegments));\n\n            string prettyApiVersion = NameWrangler.CapitalizeName(resourceType.Version);\n\n            string typeNameFromPropertyPath = String.Join(String.Empty,\n                propertyPathSegments.Reverse().Select(NameWrangler.CapitalizeName)\n            );\n\n            return $\"{resourceType.ResourceKind}{typeNameFromPropertyPath}{prettyApiVersion}\";\n        }\n\n        /// <summary>\n        ///     Parse API metadata for the specified Kubernetes resource type.\n        /// </summary>\n        /// <param name=\"resourceType\">\n        ///     A <see cref=\"KubeResourceType\"/> representing the target resource type.\n        /// </param>\n        /// <param name=\"apiMetadata\">\n        ///     API metadata (from a <see cref=\"KubeApiMetadataCache\"/>) for the target resource type.\n        /// </param>\n        /// <returns>\n        ///     <see cref=\"KubeResourceApis\"/> representing the parsed API metadata.\n        /// </returns>\n        static KubeResourceApis ParseApiMetadata(KubeResourceType resourceType, KubeApiMetadata apiMetadata)\n        {\n            if (resourceType == null)\n                throw new ArgumentNullException(nameof(resourceType));\n\n            if (apiMetadata == null)\n                throw new ArgumentNullException(nameof(apiMetadata));\n\n            KubeResourceApi? primaryApi = null;\n            if (apiMetadata.PrimaryPathMetadata != null)\n            {\n                ImmutableList<KubeResourceApiVerb> supportedVerbs = ImmutableList.CreateRange(\n                    apiMetadata.PrimaryPathMetadata.Verbs.Select(KubeResourceApiVerb.FromKubeApiVerb)\n                );\n\n                primaryApi = new KubeResourceApi(apiMetadata.PrimaryPathMetadata.Path, IsNamespaced: false, supportedVerbs);\n            }\n\n            KubeResourceApi? primaryNamespacedApi = null;\n            if (apiMetadata.PrimaryNamespacedPathMetadata != null)\n            {\n                ImmutableList<KubeResourceApiVerb> supportedVerbs = ImmutableList.CreateRange(\n                    apiMetadata.PrimaryNamespacedPathMetadata.Verbs.Select(KubeResourceApiVerb.FromKubeApiVerb)\n                );\n\n                primaryApi = new KubeResourceApi(apiMetadata.PrimaryNamespacedPathMetadata.Path, IsNamespaced: true, supportedVerbs);\n            }\n\n            primaryApi ??= primaryNamespacedApi;\n            if (primaryApi == null)\n                throw new KubeClientException($\"Invalid API metadata for resource type '{resourceType.ToResourceTypeName()}' (resource API metadata must contain at least one of namespaced or global primary path).\");\n\n            ImmutableList<KubeResourceApi> otherApis = ImmutableList.CreateRange(\n                apiMetadata.PathMetadata\n                    .Where(pathMetadata =>\n                    {\n                        if (ReferenceEquals(pathMetadata, apiMetadata.PrimaryPathMetadata))\n                            return false;\n\n                        if (ReferenceEquals(pathMetadata, apiMetadata.PrimaryNamespacedPathMetadata))\n                            return false;\n\n                        return true;\n                    })\n                    .Select(pathMetadata =>\n                    {\n                        ImmutableList<KubeResourceApiVerb> supportedVerbs = ImmutableList.CreateRange(\n                            pathMetadata.Verbs.Select(KubeResourceApiVerb.FromKubeApiVerb)\n                        );\n\n                        return new KubeResourceApi(pathMetadata.Path, pathMetadata.IsNamespaced, supportedVerbs);\n                    })\n            );\n\n            return new KubeResourceApis(primaryApi, otherApis);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/KubeClient.Extensions.CustomResources.Schema.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n    \n    <Nullable>enable</Nullable>\n    \n    <Description>Custom Resource Definition (CRD) schema-validation support for KubeClient</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient.Extensions.CustomResources/KubeClient.Extensions.CustomResources.csproj\" />\n    <ProjectReference Include=\"../KubeClient/KubeClient.csproj\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/Models.cs",
    "content": "﻿using KubeClient.Extensions.CustomResources.Schema.Utilities;\nusing KubeClient.Models;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Collections.Immutable;\nusing System.Net.Http;\n\nnamespace KubeClient.Extensions.CustomResources.Schema\n{\n    /// <summary>\n    ///     Metadata that identifies a Kubernetes resource type.\n    /// </summary>\n    /// <param name=\"Group\">\n    ///     The resource\"s API group (\"group\").\n    /// </param>\n    /// <param name=\"Version\">\n    ///     The resource\"s API version (\"apiVersion\").\n    /// </param>\n    /// <param name=\"ResourceKind\">\n    ///     The resource\"s type name (i.e. \"kind\").\n    /// </param>\n    public record class KubeResourceType(string? Group, string Version, string ResourceKind)\n    {\n        /// <summary>\n        ///     Convert the <see cref=\"KubeResourceType\"/> to a resource type name (e.g. v1/Pod).\n        /// </summary>\n        /// <returns>\n        ///     The resource type name.\n        /// </returns>\n        public string ToResourceTypeName()\n        {\n            if (!String.IsNullOrWhiteSpace(Group))\n                return $\"{Group}/{Version}/{ResourceKind}\";\n\n            return $\"{Version}/{ResourceKind}\";\n        }\n\n        /// <summary>\n        ///     Convert the <see cref=\"KubeResourceType\"/> to a resource type version suffix (e.g. V1Beta1).\n        /// </summary>\n        /// <returns>\n        ///     The resource type version suffix.\n        /// </returns>\n        public string ToVersionSuffix() => NameWrangler.CapitalizeName(Version);\n    }\n\n    /// <summary>\n    ///     Schema for one or more Kubernetes resource types.\n    /// </summary>\n    /// <param name=\"ResourceTypes\">\n    ///     Schemas for resource types, keyed by <see cref=\"KubeResourceType\"/>.\n    /// </param>\n    /// <param name=\"DataTypes\">\n    ///     Schemas for data types, keyed by name.\n    /// </param>\n    public record class KubeSchema(ImmutableDictionary<KubeResourceType, KubeModel> ResourceTypes, ImmutableDictionary<string, KubeDataType> DataTypes);\n\n    /// <summary>\n    ///     A resource model in a Kubernetes API schema.\n    /// </summary>\n    /// <param name=\"ResourceType\">\n    ///     A <see cref=\"KubeResourceType\"/> representing the model's \"group/version/kind\" in the Kubernetes API.\n    /// </param>\n    /// <param name=\"Summary\">\n    ///     Summary documentation for the data type (if available).\n    /// </param>\n    /// <param name=\"Properties\">\n    ///     Schema for the model's properties.\n    /// </param>\n    /// <param name=\"ResourceApis\">\n    ///     Metadata for the resource's APIs.\n    /// </param>\n    public record class KubeModel(KubeResourceType ResourceType, string? Summary, ImmutableDictionary<string, KubeModelProperty> Properties, KubeResourceApis ResourceApis)\n    {\n        /// <summary>\n        ///     The namne of the CLR type used to represent the model.\n        /// </summary>\n        public string ClrTypeName { get; } = ResourceType.ResourceKind + NameWrangler.CapitalizeName(ResourceType.Version);\n    };\n\n    /// <summary>\n    ///     A complex data-type in a Kubernetes API schema.\n    /// </summary>\n    /// <param name=\"Name\">\n    ///     The model's name (except for shared complex types, this is generated from the containing <see cref=\"KubeModel.ResourceType\"/> and the property path where the complex type is located).\n    /// </param>\n    /// <param name=\"Summary\">\n    ///     Summary documentation for the complex type (if available).\n    /// </param>\n    /// <param name=\"Properties\">\n    ///     Schema for the model's properties.\n    /// </param>\n    public record class KubeComplexType(string Name, string? Summary, ImmutableDictionary<string, KubeModelProperty> Properties)\n    {\n        /// <summary>\n        ///     The name of the CLR type used to represent the complex type.\n        /// </summary>\n        public string ClrTypeName => Name;\n    };\n\n    /// <summary>\n    ///     A property of a Kubernetes resource-type model.\n    /// </summary>\n    /// <param name=\"Name\">\n    ///     The property name (sanitised).\n    /// </param>\n    /// <param name=\"Summary\">\n    ///     The property description (i.e. summary documentation).\n    /// </param>\n    /// <param name=\"DataType\">\n    ///     The property data-type.\n    /// </param>\n    /// <param name=\"SerializedName\">\n    ///     The property's name when serialised.\n    /// </param>\n    /// <param name=\"IsOptional\">\n    ///     Is the property optional?\n    /// </param>\n    /// <param name=\"IsMerge\">\n    ///     Does the property support patch-merge?\n    /// </param>\n    /// <param name=\"MergeKey\">\n    ///     If the property supports patch-merge, the key (i.e. fields) used to merge changes.\n    /// </param>\n    /// <param name=\"IsRetainKeys\">\n    ///     If the property supports patch-merge, does it support the \"retainKeys\" strategy?\n    /// </param>\n    public record class KubeModelProperty(string Name, string? Summary, KubeDataType DataType, string SerializedName, bool IsOptional, bool IsMerge, string? MergeKey, bool IsRetainKeys);\n\n    /// <summary>\n    ///     The base class for data types in a Kubernetes API schema.\n    /// </summary>\n    /// <param name=\"Name\">\n    ///     The name of the data type (sanitised).\n    /// </param>\n    /// <param name=\"Summary\">\n    ///     Summary documentation for the data type (if available).\n    /// </param>\n    public record class KubeDataType(string Name, string? Summary)\n    {\n        /// <summary>\n        ///     Is the data-type an intrinsic data type (such as number or string)?\n        /// </summary>\n        public virtual bool IsIntrinsic => false;\n\n        /// <summary>\n        ///     Does the data-type represent a collection data type (such as an array or dictionary)?\n        /// </summary>\n        public virtual bool IsCollection => false;\n\n        /// <summary>\n        ///     Get the name of the CLR <see cref=\"Type\"/> that is used to represent the data type.\n        /// </summary>\n        /// <param name=\"isNullable\">\n        ///     Require that the CLR <see cref=\"Type\"/> is nullable?\n        /// </param>\n        public virtual string GetClrTypeName(bool isNullable = false) => GetCtsTypeName(Name);\n\n        /// <summary>\n        ///     Get the Common Type System (CTS) type name corresponding to a Swagger / OpenAPI type name.\n        /// </summary>\n        /// <param name=\"openApiTypeName\">\n        ///     The Swagger / OpenAPI type name (e.g. \"string\", \"int\", \"boolean\").\n        /// </param>\n        /// <returns>\n        ///     The corresponding CTS type name.\n        /// </returns>\n        protected static string GetCtsTypeName(string openApiTypeName)\n        {\n            if (String.IsNullOrWhiteSpace(openApiTypeName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(openApiTypeName)}.\", nameof(openApiTypeName));\n\n            return openApiTypeName switch\n            {\n                \"integer\" => \"int\",\n                \"boolean\" => \"bool\",\n\n                _ => openApiTypeName,\n            };\n        }\n    };\n\n    /// <summary>\n    ///     An intrinsic data type in the Kubernetes API.\n    /// </summary>\n    /// <param name=\"Name\">\n    ///     The simplified (C#) CTS type name of the data type.\n    /// </param>\n    public record class KubeIntrinsicDataType(string Name)\n        : KubeDataType(Name, Summary: null)\n    {\n        /// <summary>\n        ///     Is the data-type an intrinsic data type (such as number or string)?\n        /// </summary>\n        public override bool IsIntrinsic => false;\n\n        /// <summary>\n        ///     Does the data-type represent a collection data type (such as an array or dictionary)?\n        /// </summary>\n        public override bool IsCollection => false;\n\n        /// <summary>\n        ///     Get the name of the CLR <see cref=\"Type\"/> that is used to represent the data type.\n        /// </summary>\n        /// <param name=\"isNullable\">\n        ///     Require that the CLR <see cref=\"Type\"/> is nullable?\n        /// </param>\n        public override string GetClrTypeName(bool isNullable = false)\n        {\n            string clrTypeName = base.GetClrTypeName(isNullable);\n            if (isNullable && SchemaConstants.ValueTypeNames.Contains(clrTypeName))\n                clrTypeName += \"?\";\n\n            return clrTypeName;\n        }\n    };\n\n    /// <summary>\n    ///     A model (i.e. resource) data type in the Kubernetes API.\n    /// </summary>\n    /// <param name=\"Model\">\n    ///     A <see cref=\"KubeModel\"/> that describes the complex data-type.\n    /// </param>\n    public record class KubeModelDataType(KubeModel Model)\n        : KubeDataType(Model.ClrTypeName, Summary: Model.Summary)\n    {\n        /// <summary>\n        ///     Is the data-type an intrinsic data type (such as number or string)?\n        /// </summary>\n        public override bool IsIntrinsic => false;\n\n        /// <summary>\n        ///     Does the data-type represent a collection data type (such as an array or dictionary)?\n        /// </summary>\n        public override bool IsCollection => false;\n\n        /// <summary>\n        ///     Get the name of the CLR <see cref=\"Type\"/> that is used to represent the data type.\n        /// </summary>\n        /// <param name=\"isNullable\">\n        ///     Require that the CLR <see cref=\"Type\"/> is nullable?\n        /// </param>\n        public override string GetClrTypeName(bool isNullable = false)\n        {\n            string clrTypeName = base.GetClrTypeName(isNullable);\n            if (isNullable && SchemaConstants.ValueTypeNames.Contains(clrTypeName))\n                clrTypeName += \"?\";\n\n            return clrTypeName;\n        }\n    };\n\n    /// <summary>\n    ///     A complex type (i.e. complex) data type in the Kubernetes API.\n    /// </summary>\n    /// <param name=\"ComplexType\">\n    ///     A <see cref=\"KubeComplexType\"/> that describes the complex data-type.\n    /// </param>\n    public record class KubeComplexDataType(KubeComplexType ComplexType)\n        : KubeDataType(ComplexType.ClrTypeName, Summary: ComplexType.Summary)\n    {\n        /// <summary>\n        ///     Is the data-type an intrinsic data type (such as number or string)?\n        /// </summary>\n        public override bool IsIntrinsic => false;\n\n        /// <summary>\n        ///     Does the data-type represent a collection data type (such as an array or dictionary)?\n        /// </summary>\n        public override bool IsCollection => false;\n\n        /// <summary>\n        ///     Get the name of the CLR <see cref=\"Type\"/> that is used to represent the data type.\n        /// </summary>\n        /// <param name=\"isNullable\">\n        ///     Require that the CLR <see cref=\"Type\"/> is nullable?\n        /// </param>\n        public override string GetClrTypeName(bool isNullable = false)\n        {\n            string clrTypeName = base.GetClrTypeName(isNullable);\n            if (isNullable && SchemaConstants.ValueTypeNames.Contains(clrTypeName))\n                clrTypeName += \"?\";\n\n            return clrTypeName;\n        }\n    };\n\n    /// <summary>\n    ///     A JSON object datatype (with dynamic schema) in the Kubernetes API.\n    /// </summary>\n    public record class KubeDynamicObjectDataType()\n        : KubeDataType(Name: \"JObject\", Summary: \"A JSON object with dynamic schema.\")\n    {\n        /// <summary>\n        ///     A singleton instance of <see cref=\"KubeDynamicObjectDataType\"/>.\n        /// </summary>\n        public static readonly KubeDynamicObjectDataType Instance = new KubeDynamicObjectDataType();\n\n        /// <summary>\n        ///     Get the name of the CLR <see cref=\"Type\"/> that is used to represent the data type.\n        /// </summary>\n        /// <param name=\"isNullable\">\n        ///     Require that the CLR <see cref=\"Type\"/> is nullable?\n        /// </param>\n        public override string GetClrTypeName(bool isNullable = false)\n        {\n            if (isNullable)\n                return $\"{nameof(JObject)}?\";\n\n            return nameof(JObject);\n        }\n    }\n\n    /// <summary>\n    ///     An array data type in the Kubernetes API.\n    /// </summary>\n    /// <param name=\"ElementType\">\n    ///     A <see cref=\"KubeDataType\"/> representing the type of element contained in the array.\n    /// </param>\n    public record class KubeArrayDataType(KubeDataType ElementType)\n        : KubeDataType(Name: $\"{ElementType.Name}List\", Summary: null)\n    {\n        /// <summary>\n        ///     Does the data-type represent a collection data type (such as an array or dictionary)?\n        /// </summary>\n        public override bool IsCollection => true;\n\n        /// <summary>\n        ///     Get the name of the CLR <see cref=\"Type\"/> that is used to represent the data type.\n        /// </summary>\n        /// <param name=\"isNullable\">\n        ///     Require that the CLR <see cref=\"Type\"/> is nullable?\n        /// </param>\n        public override string GetClrTypeName(bool isNullable = false)\n        {\n            string elementTypeName = GetCtsTypeName(\n                ElementType.GetClrTypeName(\n                    isNullable: false // List<DateTime?> would be odious to deal with.\n                )\n            );\n\n            return $\"List<{elementTypeName}>\"; // Whereas List<T> is, itself, always nullable.\n        }\n    };\n\n    /// <summary>\n    ///     An dictionary data type in the Kubernetes API.\n    /// </summary>\n    /// <param name=\"ElementType\">\n    ///     A <see cref=\"KubeDataType\"/> representing the type of element contained in the dictionary.\n    /// </param>\n    /// <remarks>\n    ///     We assume all dictionary types use strings as keys.\n    /// </remarks>\n    public record class KubeDictionaryDataType(KubeDataType ElementType)\n        : KubeDataType(Name: $\"{ElementType.Name}Dictionary\", Summary: null)\n    {\n        /// <summary>\n        ///     Does the data-type represent a collection data type (such as an array or dictionary)?\n        /// </summary>\n        public override bool IsCollection => true;\n\n        /// <summary>\n        ///     Get the name of the CLR <see cref=\"Type\"/> that is used to represent the data type.\n        /// </summary>\n        /// <param name=\"isNullable\">\n        ///     Require that the CLR <see cref=\"Type\"/> is nullable?\n        /// </param>\n        public override string GetClrTypeName(bool isNullable = false)\n        {\n            string elementTypeName = GetCtsTypeName(\n                ElementType.GetClrTypeName(\n                    isNullable: false // Dictionary<string, DateTime?> would be odious to deal with.\n                )\n            );\n\n            return $\"Dictionary<string, {elementTypeName}>\"; // Whereas Dictionary<T> is, itself, always nullable.\n        }\n    };\n\n    /// <summary>\n    ///     API metadata for a Kubernetes resource type.\n    /// </summary>\n    /// <param name=\"PrimaryApi\">\n    ///     Metadata for the resource type's primary API.\n    /// </param>\n    /// <param name=\"OtherApis\">\n    ///     Metadata for the resource type's other APIs (if any).\n    /// </param>\n    public record class KubeResourceApis(KubeResourceApi PrimaryApi, ImmutableList<KubeResourceApi> OtherApis);\n\n    /// <summary>\n    ///     Metadata for a Kubernetes resource API.\n    /// </summary>\n    /// <param name=\"Path\">\n    ///     The absolute path (or path template) to the API end-point.\n    /// </param>\n    /// <param name=\"IsNamespaced\">\n    ///     Is the API namespaced?\n    /// </param>\n    /// <param name=\"SupportedVerbs\">\n    ///     Metadata for verbs supported by the API.\n    /// </param>\n    public record class KubeResourceApi(string Path, bool IsNamespaced, ImmutableList<KubeResourceApiVerb> SupportedVerbs);\n\n    /// <summary>\n    ///     Metadata for a well-known action that can be performed by a Kubernetes resource API.\n    /// </summary>\n    /// <param name=\"Name\">\n    ///     The name of the verb.\n    /// </param>\n    /// <param name=\"KubeAction\">\n    ///     A <see cref=\"KubeClient.Models.KubeAction\"/> that identifies the well-known action (if any) that the verb represents.\n    /// </param>\n    /// <param name=\"HttpMethod\">\n    ///     The HTTP method (e.g. GET/PUT/POST) that the verb represents.\n    /// </param>\n    public record class KubeResourceApiVerb(string Name, KubeAction KubeAction, HttpMethod HttpMethod)\n    {\n        /// <summary>\n        ///     Kubernetes resource-API verb: get a single resource.\n        /// </summary>\n        public static readonly KubeResourceApiVerb Get = new KubeResourceApiVerb(nameof(Get), KubeAction.Get, HttpMethod.Get);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: list resources.\n        /// </summary>\n        public static readonly KubeResourceApiVerb List = new KubeResourceApiVerb(nameof(List), KubeAction.List, HttpMethod.Get);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: create a resource.\n        /// </summary>\n        public static readonly KubeResourceApiVerb Create = new KubeResourceApiVerb(nameof(Create), KubeAction.Create, HttpMethod.Post);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: update a resource (request includes a subset of resource fields).\n        /// </summary>\n        public static readonly KubeResourceApiVerb Update = new KubeResourceApiVerb(nameof(Update), KubeAction.Update, HttpMethod.Put);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: patch a resource (request includes a list of patch operations to be performed server-side).\n        /// </summary>\n        public static readonly KubeResourceApiVerb Patch = new KubeResourceApiVerb(nameof(Patch), KubeAction.Patch, HttpMethod.Patch);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: delete a single resource.\n        /// </summary>\n        public static readonly KubeResourceApiVerb Delete = new KubeResourceApiVerb(nameof(Delete), KubeAction.Delete, HttpMethod.Delete);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: delete all matching resources.\n        /// </summary>\n        public static readonly KubeResourceApiVerb DeleteCollection = new KubeResourceApiVerb(nameof(DeleteCollection), KubeAction.DeleteCollection, HttpMethod.Delete);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: watch a single resource for changes.\n        /// </summary>\n        public static readonly KubeResourceApiVerb Watch = new KubeResourceApiVerb(nameof(Watch), KubeAction.Watch, HttpMethod.Get);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: watch all matching resources for changes.\n        /// </summary>\n        public static readonly KubeResourceApiVerb WatchList = new KubeResourceApiVerb(nameof(WatchList), KubeAction.WatchList, HttpMethod.Get);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: open a WebSocket connection to a resource.\n        /// </summary>\n        public static readonly KubeResourceApiVerb Connect = new KubeResourceApiVerb(nameof(Connect), KubeAction.Connect, HttpMethod.Get);\n\n        /// <summary>\n        ///     Kubernetes resource-API verb: open a WebSocket connection as a network proxy to a resource.\n        /// </summary>\n        public static readonly KubeResourceApiVerb Proxy = new KubeResourceApiVerb(nameof(Proxy), KubeAction.Proxy, HttpMethod.Get);\n\n        /// <summary>\n        ///     An unknown Kubernetes resource-API verb.\n        /// </summary>\n        public static readonly KubeResourceApiVerb Unknown = new KubeResourceApiVerb(nameof(Unknown), KubeAction.Unknown, HttpMethod.Get);\n\n        /// <summary>\n        ///     Get or create a <see cref=\"KubeResourceApiVerb\"/> corresponding to a well-known Kubernetes resource-API action.\n        /// </summary>\n        /// <param name=\"kubeAction\">\n        ///     A <see cref=\"Models.KubeAction\"/> value representing the well-known action.\n        /// </param>\n        /// <returns>\n        ///     The corresponding <see cref=\"KubeResourceApiVerb\"/> (for well-known <see cref=\"Models.KubeAction\"/>s, this is a singleton-per-<paramref name=\"kubeAction\"/>), or <see cref=\"Unknown\"/> if the <see cref=\"Models.KubeAction\"/> value is not recognised.\n        /// </returns>\n        public static KubeResourceApiVerb FromKubeAction(KubeAction kubeAction)\n        {\n            return kubeAction switch\n            {\n                KubeAction.Get => Get,\n                KubeAction.List => List,\n\n                KubeAction.Create => Create,\n                KubeAction.Update => Update,\n                KubeAction.Patch => Patch,\n                \n                KubeAction.Delete => Delete,\n                KubeAction.DeleteCollection => DeleteCollection,\n                \n                KubeAction.Watch => Watch,\n                KubeAction.WatchList => WatchList,\n\n                KubeAction.Connect => Connect,\n                KubeAction.Proxy => Proxy,\n\n                KubeAction.Unknown => Unknown,\n\n                _ => Enum.IsDefined(kubeAction) ? new KubeResourceApiVerb(kubeAction.ToString(), kubeAction, HttpMethod.Get) : Unknown,\n            };\n        }\n\n        /// <summary>\n        ///     Get or create a <see cref=\"KubeResourceApiVerb\"/> corresponding to a Kubernetes API verb (usually from <see cref=\"ApiMetadata.KubeApiMetadata\"/>).\n        /// </summary>\n        /// <param name=\"kubeApiVerb\">\n        ///     The resource API verb.\n        /// </param>\n        /// <returns>\n        ///     The corresponding <see cref=\"KubeResourceApiVerb\"/> (for well-known verbs, this is a singleton-per-<paramref name=\"kubeApiVerb\"/>), or <see cref=\"Unknown\"/> if the resource API verb is not recognised.\n        /// </returns>\n        public static KubeResourceApiVerb FromKubeApiVerb(string kubeApiVerb)\n        {\n            if (String.IsNullOrWhiteSpace(kubeApiVerb))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(kubeApiVerb)}.\", nameof(kubeApiVerb));\n\n            return kubeApiVerb.ToLowerInvariant() switch\n            {\n                \"get\" => Get,\n                \"list\" => List,\n\n                \"create\" => Create,\n                \"update\" => Update,\n                \"patch\" => Patch,\n                \n                \"delete\" => Delete,\n                \"deletecollection\" => DeleteCollection,\n\n                \"watch\" => Watch,\n                \"watchlist\" => WatchList,\n\n                \"connect\" => Connect,\n                \"proxy\" => Proxy,\n\n                _ => new KubeResourceApiVerb(kubeApiVerb, KubeAction.Unknown, HttpMethod.Post)\n            };\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/SchemaConstants.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Collections.Immutable;\n\nnamespace KubeClient.Extensions.CustomResources.Schema\n{\n    /// <summary>\n    ///     Well-known Kubernetes resource-schema constants.\n    /// </summary>\n    static class SchemaConstants\n    {\n        /// <summary>\n        ///     The names of well-known value types in Kubernetes resource schemas.\n        /// </summary>\n        public static IReadOnlySet<string> ValueTypeNames = ImmutableHashSet.CreateRange([\n            \"bool\",\n            \"int\",\n            \"long\",\n            \"double\",\n            \"DateTime\",\n        ]);\n\n        /// <summary>\n        ///     The names of data types to ignore when parsing Kubernetes resource schemas.\n        /// </summary>\n        public static IReadOnlySet<string> IgnoreDataTypes = ImmutableHashSet.CreateRange([\n            \"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions\",\n            \"io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n            \"io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n\n            \"io.k8s.apimachinery.pkg.api.resource.Quantity\",\n            \"io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n\n            // Present in both regular and and \"extensions\" groups:\n            \"io.k8s.api.extensions.v1beta1.Deployment\",\n            \"io.k8s.api.extensions.v1beta1.DeploymentList\",\n            \"io.k8s.api.extensions.v1beta1.DeploymentRollback\",\n            \"io.k8s.api.extensions.v1beta1.NetworkPolicy\",\n            \"io.k8s.api.extensions.v1beta1.NetworkPolicyList\",\n            \"io.k8s.api.extensions.v1beta1.PodSecurityPolicy\",\n            \"io.k8s.api.extensions.v1beta1.PodSecurityPolicyList\",\n            \"io.k8s.api.extensions.v1beta1.ReplicaSet\",\n            \"io.k8s.api.extensions.v1beta1.ReplicaSetList\",\n            \"io.k8s.api.extensions.v1.Deployment\",\n            \"io.k8s.api.extensions.v1.DeploymentList\",\n            \"io.k8s.api.extensions.v1.DeploymentRollback\",\n            \"io.k8s.api.extensions.v1.NetworkPolicy\",\n            \"io.k8s.api.extensions.v1.NetworkPolicyList\",\n            \"io.k8s.api.extensions.v1.PodSecurityPolicy\",\n            \"io.k8s.api.extensions.v1.PodSecurityPolicyList\",\n            \"io.k8s.api.extensions.v1.ReplicaSet\",\n            \"io.k8s.api.extensions.v1.ReplicaSetList\",\n            \"io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevision\",\n            \"io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevisionList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSet\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Deployment\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentRollback\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicy\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicy\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicyList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSet\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Scale\",\n            \"io.k8s.kubernetes.pkg.apis.apps.v1.ControllerRevision\",\n            \"io.k8s.kubernetes.pkg.apis.apps.v1.ControllerRevisionList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.DaemonSet\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.DaemonSetList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.Deployment\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.DeploymentList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.DeploymentRollback\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.NetworkPolicy\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.NetworkPolicyList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.PodSecurityPolicy\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.PodSecurityPolicyList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.ReplicaSet\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.ReplicaSetList\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1.Scale\",\n\n            // Special case for EventV1\n            \"io.k8s.api.events.v1.Event\",\n            \"io.k8s.api.events.v1.EventList\",\n\n            // Hand-coded:\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource\",\n            \"io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResourceList\",\n        ]);\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/SchemaGeneratorV1.cs",
    "content": "using KubeClient.Models;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Reflection;\n\nnamespace KubeClient.Extensions.CustomResources.Schema\n{\n    /// <summary>\n    ///     Generator for v1 Custom Resource Definition (CRD) validation schemas.\n    /// </summary>\n    public static class SchemaGeneratorV1\n    {\n        /// <summary>\n        ///     The CLR type representing <see cref=\"KubeCustomResourceV1\"/>.\n        /// </summary>\n        static readonly Type CustomResourceV1Type = typeof(KubeCustomResourceV1);\n\n        /// <summary>\n        ///     Generate the CRD validation schema for a specification model type.\n        /// </summary>\n        /// <typeparam name=\"TModel\">\n        ///     The CLR type representing the model.\n        /// </typeparam>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1\"/>.\n        /// </returns>\n        public static JSONSchemaPropsV1 GenerateSchema<TModel>()\n            where TModel : KubeCustomResourceV1\n        {\n            return GenerateSchema(typeof(TModel));\n        }\n\n        /// <summary>\n        ///     Generate the CRD validation schema for a model type.\n        /// </summary>\n        /// <param name=\"modelType\">\n        ///     The CLR type representing the model.\n        /// </param>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1\"/>.\n        /// </returns>\n        public static JSONSchemaPropsV1 GenerateSchema(Type modelType)\n        {\n            if (modelType == null)\n                throw new ArgumentNullException(nameof(modelType));\n\n            if (!CustomResourceV1Type.IsAssignableFrom(modelType))\n                throw new ArgumentException($\"Cannot generate JSON schema for model type '{modelType.FullName}' because it does not derive from '{CustomResourceV1Type.FullName}'.\");\n\n            TypeInfo modelTypeInfo = modelType.GetTypeInfo();\n            if (modelTypeInfo.IsEnum)\n                return GenerateEnumSchema(modelType);\n\n            TypeCode modelTypeCode = Type.GetTypeCode(modelType);\n            switch (modelTypeCode)\n            {\n                case TypeCode.String:\n                {\n                    return new JSONSchemaPropsV1\n                    {\n                        Type = \"string\"\n                    };\n                }\n                case TypeCode.Boolean:\n                {\n                    return new JSONSchemaPropsV1\n                    {\n                        Type = \"boolean\"\n                    };\n                }\n                case TypeCode.Int32:\n                {\n                    return new JSONSchemaPropsV1\n                    {\n                        Type = \"integer\",\n                        Format = \"int32\"\n                    };\n                }\n                case TypeCode.Int64:\n                {\n                    return new JSONSchemaPropsV1\n                    {\n                        Type = \"integer\",\n                        Format = \"int64\"\n                    };\n                }\n                case TypeCode.Single:\n                {\n                    return new JSONSchemaPropsV1\n                    {\n                        Type = \"number\",\n                        Format = \"float\"\n                    };\n                }\n                case TypeCode.Double:\n                {\n                    return new JSONSchemaPropsV1\n                    {\n                        Type = \"float\",\n                        Format = \"double\"\n                    };\n                }\n                case TypeCode.DateTime:\n                {\n                    return new JSONSchemaPropsV1\n                    {\n                        Type = \"string\",\n                        Format = \"date-time\"\n                    };\n                }\n                case TypeCode.Object:\n                {\n                    if (modelType.IsArray)\n                    {\n                        if (Type.GetTypeCode(modelType.GetElementType()) == TypeCode.Byte)\n                        {\n                            return new JSONSchemaPropsV1\n                            {\n                                Type = \"string\",\n                                Format = \"byte\"\n                            };\n                        }\n\n                        return GenerateArraySchema(modelType);\n                    }\n\n                    if (modelType == typeof(Guid))\n                    {\n                        return new JSONSchemaPropsV1\n                        {\n                            Type = \"string\",\n                            Format = \"uuid\"\n                        };\n                    }\n\n                    return GenerateObjectSchema(modelType);\n                }\n                default:\n                {\n                    throw new NotSupportedException(\n                        $\"Cannot generate schema for unsupported data-type '{modelType.FullName}'.\"\n                    );\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Generate the CRD validation schema for an <see cref=\"Enum\"/> data-type.\n        /// </summary>\n        /// <param name=\"enumType\">\n        ///     A <see cref=\"Type\"/> representing the data-type.\n        /// </param>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1\"/>.\n        /// </returns>\n        static JSONSchemaPropsV1 GenerateEnumSchema(Type enumType)\n        {\n            if (enumType == null)\n                throw new ArgumentNullException(nameof(enumType));\n            \n            JSONSchemaPropsV1 schema = new JSONSchemaPropsV1\n            {\n                Type = \"string\",\n                Description = enumType.Name\n            };\n\n            schema.Enum.AddRange(\n                Enum.GetNames(enumType)\n            );\n\n            return schema;\n        }\n\n        /// <summary>\n        ///     Generate the CRD validation schema for an <see cref=\"Array\"/> data-type.\n        /// </summary>\n        /// <param name=\"arrayType\">\n        ///     A <see cref=\"Type\"/> representing the array data-type.\n        /// </param>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1\"/>.\n        /// </returns>        \n        static JSONSchemaPropsV1 GenerateArraySchema(Type arrayType)\n        {\n            if (arrayType == null)\n                throw new ArgumentNullException(nameof(arrayType));\n\n            return new JSONSchemaPropsV1\n            {\n                Type = \"array\",\n                Items = GenerateSchema(\n                    arrayType.GetElementType() ?? throw new InvalidOperationException($\"Cannot determine element type for CLR type '{arrayType.FullName}'.\")\n                )\n            };\n        }\n\n        /// <summary>\n        ///     Generate the CRD validation schema for a complex data-type.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     A <see cref=\"Type\"/> representing the complex (object) data-type.\n        /// </param>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1\"/>.\n        /// </returns>  \n        static JSONSchemaPropsV1 GenerateObjectSchema(Type objectType)\n        {\n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            var schemaProps = new JSONSchemaPropsV1\n            {\n                Type = \"object\",\n                Description = objectType.Name,\n            };\n\n            foreach (PropertyInfo property in objectType.GetProperties(BindingFlags.Instance | BindingFlags.Public))\n            {\n                if (!(property.CanRead && property.CanWrite))\n                    continue;\n                    \n                // Ignore non-serialised properties.\n                if (property.GetCustomAttribute<JsonIgnoreAttribute>() != null)\n                    continue;\n\n                // We only want properties declared on KubeCustomResourceV1 (or classes derived from it).\n                if (!typeof(KubeCustomResourceV1).IsAssignableFrom(property.DeclaringType))\n                    continue;\n\n                schemaProps.Properties[property.Name] = GenerateSchema(property.PropertyType);\n            }\n\n            schemaProps.Required.AddRange(\n                GetRequiredPropertyNames(objectType)\n            );\n            \n            return schemaProps;\n        }\n\n        /// <summary>\n        ///     Get the names of required properties on the specified complex type.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     A <see cref=\"Type\"/> representing the complex (object) data-type.\n        /// </param>\n        /// <returns>\n        ///     A sequence of property names.\n        /// </returns>\n        static IEnumerable<string> GetRequiredPropertyNames(Type objectType)\n        {\n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            foreach (PropertyInfo property in objectType.GetProperties(BindingFlags.Instance | BindingFlags.Public))\n            {\n                if (property.PropertyType.IsValueType && Nullable.GetUnderlyingType(property.PropertyType) == null)\n                    yield return property.Name; // Value types (unless nullable) are required.\n                else if (property.GetCustomAttribute<JsonRequiredAttribute>() != null)\n                    yield return property.Name; // Marked with [JsonRequired]\n                else if (property.GetCustomAttribute<RequiredAttribute>() != null)\n                    yield return property.Name; // Marked with [Required]\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/SchemaGeneratorV1Beta1.cs",
    "content": "using KubeClient.Models;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Reflection;\n\nnamespace KubeClient.Extensions.CustomResources.Schema\n{\n    /// <summary>\n    ///     Generator for v1beta1 Custom Resource Definition (CRD) validation schemas.\n    /// </summary>\n    /// <remarks>\n    ///     Note: this type is deprecated and will be removed in a future version of dotnet-kube-client (use <see cref=\"SchemaGeneratorV1\"/>, instead).\n    /// </remarks>\n    public static class SchemaGeneratorV1Beta1\n    {\n        /// <summary>\n        ///     The CLR type representing <see cref=\"KubeCustomResourceV1Beta1\"/>.\n        /// </summary>\n        static readonly Type CustomResourceV1Type = typeof(KubeCustomResourceV1Beta1);\n\n        /// <summary>\n        ///     Generate the CRD validation schema for a specification model type.\n        /// </summary>\n        /// <typeparam name=\"TModel\">\n        ///     The CLR type representing the model.\n        /// </typeparam>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1Beta1\"/>.\n        /// </returns>\n        public static JSONSchemaPropsV1Beta1 GenerateSchema<TModel>()\n            where TModel : KubeCustomResourceV1Beta1\n        {\n            return GenerateSchema(typeof(TModel));\n        }\n\n        /// <summary>\n        ///     Generate the CRD validation schema for a model type.\n        /// </summary>\n        /// <param name=\"modelType\">\n        ///     The CLR type representing the model.\n        /// </param>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1Beta1\"/>.\n        /// </returns>\n        public static JSONSchemaPropsV1Beta1 GenerateSchema(Type modelType)\n        {\n            if (modelType == null)\n                throw new ArgumentNullException(nameof(modelType));\n\n            if (!CustomResourceV1Type.IsAssignableFrom(modelType))\n                throw new ArgumentException($\"Cannot generate JSON schema for model type '{modelType.FullName}' because it does not derive from '{CustomResourceV1Type.FullName}'.\");\n\n            TypeInfo modelTypeInfo = modelType.GetTypeInfo();\n            if (modelTypeInfo.IsEnum)\n                return GenerateEnumSchema(modelType);\n\n            TypeCode modelTypeCode = Type.GetTypeCode(modelType);\n            switch (modelTypeCode)\n            {\n                case TypeCode.String:\n                {\n                    return new JSONSchemaPropsV1Beta1\n                    {\n                        Type = \"string\"\n                    };\n                }\n                case TypeCode.Boolean:\n                {\n                    return new JSONSchemaPropsV1Beta1\n                    {\n                        Type = \"boolean\"\n                    };\n                }\n                case TypeCode.Int32:\n                {\n                    return new JSONSchemaPropsV1Beta1\n                    {\n                        Type = \"integer\",\n                        Format = \"int32\"\n                    };\n                }\n                case TypeCode.Int64:\n                {\n                    return new JSONSchemaPropsV1Beta1\n                    {\n                        Type = \"integer\",\n                        Format = \"int64\"\n                    };\n                }\n                case TypeCode.Single:\n                {\n                    return new JSONSchemaPropsV1Beta1\n                    {\n                        Type = \"number\",\n                        Format = \"float\"\n                    };\n                }\n                case TypeCode.Double:\n                {\n                    return new JSONSchemaPropsV1Beta1\n                    {\n                        Type = \"float\",\n                        Format = \"double\"\n                    };\n                }\n                case TypeCode.DateTime:\n                {\n                    return new JSONSchemaPropsV1Beta1\n                    {\n                        Type = \"string\",\n                        Format = \"date-time\"\n                    };\n                }\n                case TypeCode.Object:\n                {\n                    if (modelType.IsArray)\n                    {\n                        if (Type.GetTypeCode(modelType.GetElementType()) == TypeCode.Byte)\n                        {\n                            return new JSONSchemaPropsV1Beta1\n                            {\n                                Type = \"string\",\n                                Format = \"byte\"\n                            };\n                        }\n\n                        return GenerateArraySchema(modelType);\n                    }\n\n                    if (modelType == typeof(Guid))\n                    {\n                        return new JSONSchemaPropsV1Beta1\n                        {\n                            Type = \"string\",\n                            Format = \"uuid\"\n                        };\n                    }\n\n                    return GenerateObjectSchema(modelType);\n                }\n                default:\n                {\n                    throw new NotSupportedException(\n                        $\"Cannot generate schema for unsupported data-type '{modelType.FullName}'.\"\n                    );\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Generate the CRD validation schema for an <see cref=\"Enum\"/> data-type.\n        /// </summary>\n        /// <param name=\"enumType\">\n        ///     A <see cref=\"Type\"/> representing the data-type.\n        /// </param>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1Beta1\"/>.\n        /// </returns>\n        static JSONSchemaPropsV1Beta1 GenerateEnumSchema(Type enumType)\n        {\n            if (enumType == null)\n                throw new ArgumentNullException(nameof(enumType));\n            \n            JSONSchemaPropsV1Beta1 schema = new JSONSchemaPropsV1Beta1\n            {\n                Type = \"string\",\n                Description = enumType.Name\n            };\n\n            schema.Enum.AddRange(\n                Enum.GetNames(enumType).Select(\n                    memberName => new JSONV1Beta1\n                    {\n                        Raw = memberName\n                    }\n                )\n            );\n\n            return schema;\n        }\n\n        /// <summary>\n        ///     Generate the CRD validation schema for an <see cref=\"Array\"/> data-type.\n        /// </summary>\n        /// <param name=\"arrayType\">\n        ///     A <see cref=\"Type\"/> representing the array data-type.\n        /// </param>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1Beta1\"/>.\n        /// </returns>        \n        static JSONSchemaPropsV1Beta1 GenerateArraySchema(Type arrayType)\n        {\n            if (arrayType == null)\n                throw new ArgumentNullException(nameof(arrayType));\n            \n            return new JSONSchemaPropsV1Beta1\n            {\n                Type = \"array\",\n                Items = GenerateSchema(\n                    arrayType.GetElementType() ?? throw new InvalidOperationException($\"Cannot determine element type for CLR type '{arrayType.FullName}'.\")\n                )\n            };\n        }\n\n        /// <summary>\n        ///     Generate the CRD validation schema for a complex data-type.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     A <see cref=\"Type\"/> representing the complex (object) data-type.\n        /// </param>\n        /// <returns>\n        ///     The generated <see cref=\"JSONSchemaPropsV1Beta1\"/>.\n        /// </returns>  \n        static JSONSchemaPropsV1Beta1 GenerateObjectSchema(Type objectType)\n        {\n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            var schemaProps = new JSONSchemaPropsV1Beta1\n            {\n                Type = \"object\",\n                Description = objectType.Name,\n            };\n\n            foreach (PropertyInfo property in objectType.GetProperties(BindingFlags.Instance | BindingFlags.Public))\n            {\n                if (!(property.CanRead && property.CanWrite))\n                    continue;\n                    \n                // Ignore non-serialised properties.\n                if (property.GetCustomAttribute<JsonIgnoreAttribute>() != null)\n                    continue;\n\n                // We only want properties declared on KubeCustomResourceV1 (or classes derived from it).\n                if (!typeof(KubeCustomResourceV1Beta1).IsAssignableFrom(property.DeclaringType))\n                    continue;\n\n                schemaProps.Properties[property.Name] = GenerateSchema(property.PropertyType);\n            }\n\n            schemaProps.Required.AddRange(\n                GetRequiredPropertyNames(objectType)\n            );\n            \n            return schemaProps;\n        }\n\n        /// <summary>\n        ///     Get the names of required properties on the specified complex type.\n        /// </summary>\n        /// <param name=\"objectType\">\n        ///     A <see cref=\"Type\"/> representing the complex (object) data-type.\n        /// </param>\n        /// <returns>\n        ///     A sequence of property names.\n        /// </returns>\n        static IEnumerable<string> GetRequiredPropertyNames(Type objectType)\n        {\n            if (objectType == null)\n                throw new ArgumentNullException(nameof(objectType));\n            \n            foreach (PropertyInfo property in objectType.GetProperties(BindingFlags.Instance | BindingFlags.Public))\n            {\n                if (property.PropertyType.IsValueType && Nullable.GetUnderlyingType(property.PropertyType) == null)\n                    yield return property.Name; // Value types (unless nullable) are required.\n                else if (property.GetCustomAttribute<JsonRequiredAttribute>() != null)\n                    yield return property.Name; // Marked with [JsonRequired]\n                else if (property.GetCustomAttribute<RequiredAttribute>() != null)\n                    yield return property.Name; // Marked with [Required]\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.CustomResources.Schema/Utilities/NameWrangler.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Text.RegularExpressions;\n\nnamespace KubeClient.Extensions.CustomResources.Schema.Utilities\n{\n    /// <summary>\n    ///     Helper methods for working with names/identifiers in Kubernetes resource schemas.\n    /// </summary>\n    static class NameWrangler\n    {\n        /// <summary>\n        ///     A regular expression used to capitalise names/identifiers.\n        /// </summary>\n        /// <remarks>\n        ///     Used to split on either:\n        ///     <list type=\"bullet\">\n        ///         <item>1 or more upper-case letters, NOT followed by 0 or more lower-case letters.</item>\n        ///         <item>0 or 1 upper-case letters, followed by 1 or more lower-case letters.</item>\n        ///         <item>1 or more digits.</item>\n        ///     </list>\n        /// </remarks>\n        static readonly Regex Capitalizer = new Regex(@\"([A-Z]+(?![a-z])|[A-Z]?[a-z]+|\\d+)\");\n\n        /// <summary>\n        ///     A regular expression used to sanitise names/identifiers.\n        /// </summary>\n        static readonly Regex Sanitizer = new Regex(@\"([\\-\\$0-9])\");\n\n        /// <summary>\n        ///     <see cref=\"TextInfo\"/> representing text behaviour for the invariant culture (<see cref=\"CultureInfo.InvariantCulture\"/>).\n        /// </summary>\n        static readonly TextInfo InvariantText = CultureInfo.InvariantCulture.TextInfo;\n\n        /// <summary>\n        ///     Capitalise the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The name to capitalise.\n        /// </param>\n        /// <returns>\n        ///     The capitalised name.\n        /// </returns>\n        /// <remarks>\n        ///     This function is number-aware:\n        ///     <list type=\"bullet\">\n        ///         <item>\"v1\" becomes \"V1\"</item>\n        ///         <item>\"v1beta1\" becomes \"V1Beta1\"</item>\n        ///         <item>\"v12beta34\" becomes \"V12Beta34\"</item>\n        ///         <item>\"v12etaBetaPi34\" becomes \"V12EtaBetaPi34\"</item>\n        ///         <item>\"v12EtaBetaPi34\" becomes \"V12EtaBetaPi34\"</item>\n        ///         <item>\"v12etabetaPi34\" becomes \"V12EtabetaPi34\"</item>\n        ///     </list>\n        /// </remarks>\n        public static string CapitalizeName(string name)\n        {\n            if (name == null)\n                throw new ArgumentNullException(nameof(name));\n\n            if (String.IsNullOrWhiteSpace(name))\n                return name;\n\n            string[] nameComponents = Capitalizer.Split(name);\n            for (int componentIndex = 0; componentIndex < nameComponents.Length; componentIndex++)\n            {\n                string nameComponent = nameComponents[componentIndex];\n                nameComponents[componentIndex] = InvariantText.ToTitleCase(nameComponent);\n            }\n\n            return String.Join(String.Empty, nameComponents);\n        }\n\n        public static string SanitizeName(string name)\n        {\n            if (name == null)\n                throw new ArgumentNullException(nameof(name));\n\n            return Sanitizer.Replace(name, String.Empty);\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.DataProtection/DataProtectionExtensions.cs",
    "content": "﻿using Microsoft.AspNetCore.DataProtection;\nusing Microsoft.AspNetCore.DataProtection.KeyManagement;\nusing Microsoft.Extensions.DependencyInjection;\nusing System;\n\nnamespace KubeClient\n{\n    using Extensions.DataProtection;\n\n    /// <summary>\n    ///     <see cref=\"IDataProtectionBuilder\"/> extension methods to persist Keys in a Kubernetes Secret.\n    /// </summary>\n    public static class DataProtectionExtensions\n    {\n        /// <summary>\n        /// Add or Create a Kubernetes Secret as a Repository. \n        /// </summary>\n        /// <param name=\"builder\">\n        /// The <see cref=\"IDataProtectionBuilder\"/> to Configure.\n        /// </param>\n        /// <param name=\"clientOptions\">\n        /// <see cref=\"KubeClientOptions\"/> for the <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </param>\n        /// <param name=\"secretName\">\n        ///  The name of the target Secret.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///  The namespace of the target Secret.\n        /// </param>\n        /// <returns>\n        /// The configured <see cref=\"IDataProtectionBuilder\"/>.\n        /// </returns>\n        public static IDataProtectionBuilder PersistKeysToKubeSecret(this IDataProtectionBuilder builder, KubeClientOptions clientOptions, string secretName, string kubeNamespace = null)\n        {\n            if (builder == null)\n                throw new ArgumentNullException(nameof(builder));\n\n            if (clientOptions == null)\n                throw new ArgumentNullException(nameof(clientOptions));\n\n            if (String.IsNullOrWhiteSpace(secretName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(secretName)}.\", nameof(secretName));\n\n            builder.Services.Configure<KeyManagementOptions>(options =>\n            {\n                KubeApiClient client = KubeApiClient.Create(clientOptions);\n\n                // Persist secret data in the target K8s secret.\n                options.XmlRepository = new KubeSecretXmlRepository(client, secretName, kubeNamespace ?? client.DefaultNamespace);\n            });\n\n            return builder;\n        }\n\n        /// <summary>\n        /// Add or Create a Kubernetes Secret as a Repository. \n        /// </summary>\n        /// <param name=\"builder\">\n        /// The <see cref=\"IDataProtectionBuilder\"/> to Configure.\n        /// </param>\n        /// <param name=\"client\">\n        /// The <see cref=\"IKubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </param>\n        /// <param name=\"secretName\">\n        ///  The name of the target Secret.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///  The namespace of the target Secret.\n        /// </param>\n        /// <returns>\n        /// The configured <see cref=\"IDataProtectionBuilder\"/>.\n        /// </returns>\n        public static IDataProtectionBuilder PersistKeysToKubeSecret(this IDataProtectionBuilder builder, IKubeApiClient client, string secretName, string kubeNamespace = null)\n        {\n            if (builder == null)\n                throw new ArgumentNullException(nameof(builder));\n\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (String.IsNullOrWhiteSpace(secretName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(secretName)}.\", nameof(secretName));\n\n            builder.Services.Configure<KeyManagementOptions>(options =>\n            {\n                // Persist secret data in the target K8s secret.\n                options.XmlRepository = new KubeSecretXmlRepository(client, secretName, kubeNamespace ?? client.DefaultNamespace);\n            });\n\n            return builder;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.DataProtection/KubeClient.Extensions.DataProtection.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n\n    <Description>KubeClient extensions for ASP.NET Core data-protection</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../KubeClient.Extensions.Configuration/KubeClient.Extensions.Configuration.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Nito.AsyncEx.Coordination\" Version=\"5.1.2\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'netstandard2.1'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.DataProtection\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.DataProtection\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.DataProtection\" Version=\"8.0.8\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.DataProtection\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.DataProtection\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Extensions.DataProtection/KubeSecretXmlRepository.cs",
    "content": "﻿using Microsoft.AspNetCore.DataProtection.Repositories;\nusing Microsoft.Extensions.Logging;\nusing Nito.AsyncEx;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing System.Xml.Linq;\n\nnamespace KubeClient.Extensions.DataProtection\n{\n    using Models;\n\n    /// <summary>\n    ///     An <see cref=\"IXmlRepository\"/> implementation that uses a Kubernetes Secret to store data-protection keys.\n    /// </summary>\n    public sealed class KubeSecretXmlRepository\n        : IXmlRepository, IDisposable\n    {\n        /// <summary>\n        ///     The default \"friendly\" name used for top-level elements in the repository when a friendly name is not supplied.\n        /// </summary>\n        public static readonly string DefaultElementFriendlyName = \"KeyElement\";\n\n        /// <summary>\n        ///     An async-friendly lock used to synchronise access to repository state.\n        /// </summary>\n        readonly AsyncLock _stateLock = new AsyncLock();\n\n        /// <summary>\n        ///     <see cref=\"KubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </summary>\n        readonly IKubeApiClient _client;\n\n        /// <summary>\n        ///     The name of the target Secret.\n        /// </summary>\n        readonly string _secretName;\n\n        /// <summary>\n        ///     The namespace of the target Secret.\n        /// </summary>\n        readonly string _kubeNamespace;\n\n        /// <summary>\n        ///     A <see cref=\"SecretV1\"/> representing the Secret used to store the XML keys.\n        /// </summary>\n        SecretV1 _keyManagementSecret;\n\n        /// <summary>\n        ///     An <see cref=\"IDisposable\"/> representing the subscription to change notifications for the key-management secret.\n        /// </summary>\n        IDisposable _watchSubscription;\n\n        /// <summary>\n        ///     An XML repository backed by KubeClient.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     An <see cref=\"IKubeApiClient\"/> used to communicate with the Kubernetes API.\n        /// </param>\n        /// <param name=\"secretName\">\n        ///     The name of the target Secret.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The namespace of the target Secret.\n        /// </param>\n        public KubeSecretXmlRepository(IKubeApiClient client, string secretName, string kubeNamespace = null)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (String.IsNullOrEmpty(secretName))\n                throw new ArgumentNullException(nameof(secretName));\n\n            _client = client;\n            _secretName = secretName;\n            _kubeNamespace = kubeNamespace;\n\n            Log = client.LoggerFactory.CreateLogger<KubeSecretXmlRepository>();\n\n            // Init\n            LoadOrCreateSecret().GetAwaiter().GetResult();\n            AttachWatcher();\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the <see cref=\"KubeSecretXmlRepository\"/>.\n        /// </summary>\n        public void Dispose()\n        {\n            if (_watchSubscription != null)\n            {\n                _watchSubscription.Dispose();\n                _watchSubscription = null;\n            }\n\n            _client.Dispose();\n        }\n\n        /// <summary>\n        ///     The logger for the secret repository.\n        /// </summary>\n        ILogger Log { get; }\n\n        /// <summary>\n        ///     Get all top-level XML elements in the repository.\n        /// </summary>\n        /// <returns>\n        ///     A sequence of <see cref=\"XElement\"/>s representing the top-level elements.\n        /// </returns>\n        public IReadOnlyCollection<XElement> GetAllElements() => GetAllElementsCore().ToArray();\n\n        /// <summary>\n        ///     Add a top-level XML element to the repository.\n        /// </summary>\n        /// <param name=\"element\">\n        ///     An <see cref=\"XElement\"/> representing the element to add.\n        /// </param>\n        /// <param name=\"friendlyName\">\n        ///     An optional name to be associated with the XML element.\n        /// </param>\n        /// <remarks>\n        ///     Element friendly names must be unique per Secret.\n        /// </remarks>\n        public void StoreElement(XElement element, string friendlyName) => StoreElementCore(element, friendlyName).GetAwaiter().GetResult();\n\n        /// <summary>\n        ///     Load or Create the Kubernetes Secret used for persistence.\n        /// </summary>\n        async Task LoadOrCreateSecret()\n        {\n            using (await _stateLock.LockAsync())\n            {\n                Log.LogDebug(\"Attempting to load Secret {SecretName} in namespace {SecretNamespace} for persistence of data-protection keys...\",\n                    _secretName, _kubeNamespace\n                );\n\n                SecretV1 secret = await _client.SecretsV1().Get(_secretName, _kubeNamespace);\n                if (secret == null)\n                {\n                    Log.LogDebug(\"Secret {SecretName} was not found in namespace {SecretNamespace} for persistence of data-protection keys; creating...\",\n                        _secretName, _kubeNamespace\n                    );\n\n                    secret = await _client.SecretsV1().Create(new SecretV1\n                    {\n                        Metadata = new ObjectMetaV1\n                        {\n                            Name = _secretName,\n                            Namespace = _kubeNamespace\n                        }\n                    });\n\n                    Log.LogDebug(\"Successfully created Secret {SecretName} in namespace {SecretNamespace} for persistence of data-protection keys.\",\n                        secret.Metadata.Name, secret.Metadata.Namespace\n                    );\n                }\n                else\n                {\n                    Log.LogDebug(\"Successfully loaded Secret {SecretName} in namespace {SecretNamespace} for persistence of data-protection keys.\",\n                        secret.Metadata.Name, secret.Metadata.Namespace\n                    );\n                }\n\n                _keyManagementSecret = secret;\n            }\n        }\n\n        /// <summary>\n        /// Attach the Watcher to the Secret for Changes\n        /// </summary>\n        void AttachWatcher()\n        {\n            _watchSubscription = _client.SecretsV1()\n                .Watch(_secretName, _kubeNamespace)\n                .Subscribe(OnKeyManagementSecretChanged);\n        }\n\n        /// <summary>\n        ///     Called by the watch subscription when the key-management secret has changed.\n        /// </summary>\n        /// <param name=\"secretEvent\">\n        ///     An <see cref=\"IResourceEventV1{TResource}\"/> containing information about the changed Secret.\n        /// </param>\n        /// <remarks>\n        ///     If the Secret <see cref=\"ResourceEventType\"/> is Modified, the internal properties will be reset.\n        /// </remarks>\n        void OnKeyManagementSecretChanged(IResourceEventV1<SecretV1> secretEvent)\n        {\n            if (secretEvent == null)\n                throw new ArgumentNullException(nameof(secretEvent));\n\n            if (secretEvent.Resource == null)\n                throw new ArgumentNullException(nameof(secretEvent.Resource));\n\n            switch (secretEvent.EventType)\n            {\n                case ResourceEventType.Added:\n                case ResourceEventType.Modified:\n                {\n                    // Attach the changed Secret\n                    using (_stateLock.Lock())\n                    {\n                        _keyManagementSecret = secretEvent.Resource;\n                    }\n\n                    break;\n                }\n                case ResourceEventType.Deleted:\n                {\n                    // TODO: How do we handle the underlying Secret being deleted?\n\n                    Log.LogWarning(\"Secret {SecretName} in namespace {SecretNamespace} (which is used for persistence of data-protection key material) has been deleted.\", _secretName, _kubeNamespace);\n\n                    break;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Add a top-level XML element to the repository.\n        /// </summary>\n        /// <param name=\"element\">\n        ///     An <see cref=\"XElement\"/> representing the element to add.\n        /// </param>\n        /// <param name=\"friendlyName\">\n        ///     An optional name to be associated with the XML element.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        /// <remarks>\n        ///     Element friendly names must be unique per Secret.\n        /// </remarks>\n        async Task StoreElementCore(XElement element, string friendlyName)\n        {\n            if (element == null)\n                throw new ArgumentNullException(nameof(element));\n\n            if (String.IsNullOrWhiteSpace(friendlyName))\n                friendlyName = DefaultElementFriendlyName;\n\n            // Convert to XML String\n            string elementXml = element.ToString(SaveOptions.DisableFormatting);\n\n            // Convert to Base64 String\n            string encodedElementXml = Convert.ToBase64String(\n                Encoding.UTF8.GetBytes(elementXml)\n            );\n\n            // Add a file extension to simplify mounting of Secret as a volume (some consumers may want to do this).\n            const string xmlExtension = \".xml\";\n            if (!String.Equals(Path.GetExtension(friendlyName), xmlExtension, StringComparison.OrdinalIgnoreCase))\n                friendlyName += xmlExtension;\n\n            using (await _stateLock.LockAsync())\n            {\n                _keyManagementSecret.Data[friendlyName] = encodedElementXml;\n\n                await _client.SecretsV1().Update(_secretName, kubeNamespace: _kubeNamespace, patchAction: patch =>\n                {\n                    patch.Replace(secret => secret.Data, _keyManagementSecret.Data);\n                });\n            }\n        }\n\n        /// <summary>\n        /// Get all top-level elements from the repository \n        /// </summary>\n        /// <returns>A sequence of <see cref=\"XElement\"/>s.</returns>\n        IEnumerable<XElement> GetAllElementsCore()\n        {\n            // Use a snapshot of the underlying secret data so we don't tie up the state lock while consumers are enumerating elements.\n            (string elementFriendlyName, string encodedElementXml)[] elements;\n\n            using (_stateLock.Lock())\n            {\n                elements = _keyManagementSecret.Data\n                    .Select(\n                        item => (elementFriendlyName: item.Key, encodedElementXml: item.Value)\n                    )\n                    .ToArray();\n            }\n\n            foreach (string elementFriendlyName in _keyManagementSecret.Data.Keys)\n            {\n                string encodedElementXml = _keyManagementSecret.Data[elementFriendlyName];\n\n                // Convert from Base64 to XMLString\n                string elementXml;\n\n                try\n                {\n                    elementXml = Encoding.UTF8.GetString(\n                        Convert.FromBase64String(encodedElementXml)\n                    );\n                }\n                catch (ArgumentException cannotDecodeUtf8String)\n                {\n                    Log.LogError(cannotDecodeUtf8String, \"Unable to decode UTF8-encoded data for key XML {KeyName} in secret {SecretName} (namespace {SecretNamespace}); this key will be ignored.\",\n                        elementFriendlyName, _keyManagementSecret.Metadata.Name, _keyManagementSecret.Metadata.Namespace\n                    );\n\n                    continue;\n                }\n                catch (FormatException cannotDecodeBase64String)\n                {\n                    Log.LogError(cannotDecodeBase64String, \"Unable to decode Base64-encoded data for key XML {KeyName} in secret {SecretName} (namespace {SecretNamespace}); this key will be ignored.\",\n                        elementFriendlyName, _keyManagementSecret.Metadata.Name, _keyManagementSecret.Metadata.Namespace\n                    );\n\n                    continue;\n                }\n                catch (Exception unexpectedError)\n                {\n                    Log.LogError(unexpectedError, \"An unexpected error occurred while decoding data for key XML {KeyName} in secret {SecretName} (namespace {SecretNamespace}); this key will be ignored.\",\n                        elementFriendlyName, _keyManagementSecret.Metadata.Name, _keyManagementSecret.Metadata.Namespace\n                    );\n\n                    continue;\n                }\n\n                XElement element;\n\n                try\n                {\n                    element = XElement.Parse(elementXml);\n                }\n                catch (XmlException invalidKeyXml)\n                {\n                    Log.LogError(invalidKeyXml, \"Unable to parse XML for key {KeyName} in secret {SecretName} (namespace {SecretNamespace}); this key will be ignored.\",\n                        elementFriendlyName, _keyManagementSecret.Metadata.Name, _keyManagementSecret.Metadata.Namespace\n                    );\n\n                    continue;\n                }\n\n                yield return element;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.DependencyInjection/ClientRegistrationExtensions.cs",
    "content": "﻿using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.Options;\nusing System;\nusing System.Linq;\nusing Microsoft.Extensions.Configuration;\n\nnamespace KubeClient\n{\n    /// <summary>\n    ///     Extension methods for registering <see cref=\"KubeApiClient\"/> as a component.\n    /// </summary>\n    public static class ClientRegistrationExtensions\n    {\n        /// <summary>\n        ///     Add a <see cref=\"KubeApiClient\"/> to the service collection.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"usePodServiceAccount\">\n        ///     Configure the client to use the service account for the current Pod?\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClient(this IServiceCollection services, bool usePodServiceAccount = false)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (usePodServiceAccount)\n            {\n                services.AddScoped<KubeApiClient>(ResolveWithPodServiceAccount);\n                services.AddScopedPassThrough<IKubeApiClient, KubeApiClient>();\n            }\n            else\n            {\n                services.AddScoped<KubeApiClient>(ResolveWithDefaultOptions);\n                services.AddScopedPassThrough<IKubeApiClient, KubeApiClient>();\n            }\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add a <see cref=\"KubeApiClient\"/> to the service collection.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"options\">\n        ///     <see cref=\"KubeClientOptions\"/> containing the client configuration to use.\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClient(this IServiceCollection services, KubeClientOptions options)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n            \n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            options.EnsureValid();\n\n            services.AddScoped<KubeApiClient>(\n                BuildResolverWithOptions(options)\n            );\n            services.AddScopedPassThrough<IKubeApiClient, KubeApiClient>();\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add a <see cref=\"KubeApiClient\" /> to the service collection. Automatically use a pod service account if no API endpoint is configured.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"configuration\">\n        ///     Configuration to be deserialized as <see cref=\"KubeClientOptions\"/>.\n        /// </param>\n        public static IServiceCollection AddKubeClient(this IServiceCollection services, IConfiguration configuration)\n        {\n            var options = new KubeClientOptions();\n            configuration.Bind(options);\n\n            if (options.ApiEndPoint == null)\n            {\n                options = KubeClientOptions.FromPodServiceAccount();\n                configuration.Bind(options);\n            }\n\n            services.AddKubeClient(options);\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add a named <see cref=\"KubeApiClient\"/> to the service collection.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"name\">\n        ///     A name used to resolve the Kubernetes client.\n        /// </param>\n        /// <param name=\"configure\">\n        ///     A delegate that performs required configuration of the <see cref=\"KubeClientOptions\"/> to use.\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClient(this IServiceCollection services, string name, Action<KubeClientOptions> configure)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (configure == null)\n                throw new ArgumentNullException(nameof(configure));\n            \n            services.AddKubeClientOptions(name, configure);\n            services.AddNamedKubeClients();\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add support for named Kubernetes client instances.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddNamedKubeClients(this IServiceCollection services)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n            \n            if (!services.Any(service => service.ServiceType == typeof(NamedKubeClients)))\n                services.AddScoped<INamedKubeClients, NamedKubeClients>();\n\n            return services;\n        }\n\n        /// <summary>\n        ///     When running inside Kubernetes, resolve a <see cref=\"KubeApiClient\"/> using the pod-level service account (e.g. access token from mounted Secret).\n        /// </summary>\n        /// <param name=\"serviceProvider\">\n        ///     The service provider used to resolve the <see cref=\"KubeApiClient\"/>.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        static KubeApiClient ResolveWithPodServiceAccount(IServiceProvider serviceProvider)\n        {\n            if (serviceProvider == null)\n                throw new ArgumentNullException(nameof(serviceProvider));\n\n            return KubeApiClient.CreateFromPodServiceAccount(\n                loggerFactory: serviceProvider.GetService<ILoggerFactory>()\n            );\n        }\n\n        /// <summary>\n        ///     Resolve a <see cref=\"KubeApiClient\"/> using the default registered options.\n        /// </summary>\n        /// <param name=\"serviceProvider\">\n        ///     The service provider used to resolve the <see cref=\"KubeApiClient\"/>.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        static KubeApiClient ResolveWithDefaultOptions(IServiceProvider serviceProvider)\n        {\n            if (serviceProvider == null)\n                throw new ArgumentNullException(nameof(serviceProvider));\n\n            KubeClientOptions clientOptions = serviceProvider.GetRequiredService<IOptionsMonitor<KubeClientOptions>>().CurrentValue;\n            if (clientOptions.IsUsingDefaultLoggerFactory())\n                clientOptions.LoggerFactory = serviceProvider.GetService<ILoggerFactory>();\n\n            return KubeApiClient.Create(clientOptions);\n        }\n\n        /// <summary>\n        ///     Build a delegate that resolves a <see cref=\"KubeApiClient\"/> using the specified <see cref=\"KubeClientOptions\"/>.\n        /// </summary>\n        /// <param name=\"options\">\n        ///     The <see cref=\"KubeClientOptions\"/>.\n        /// </param>\n        /// <returns>\n        ///     The resolver delegate.\n        /// </returns>\n        static Func<IServiceProvider, KubeApiClient> BuildResolverWithOptions(KubeClientOptions options)\n        {\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            KubeClientOptions optionsSnapshot = options.EnsureValid().Clone();\n\n            return (IServiceProvider serviceProvider) =>\n            {\n                KubeClientOptions clientOptions = optionsSnapshot.Clone();\n                if (clientOptions.IsUsingDefaultLoggerFactory())\n                    clientOptions.LoggerFactory = serviceProvider.GetService<ILoggerFactory>();\n\n                return KubeApiClient.Create(options);\n            };\n        }\n\n        /// <summary>\n        ///     Register a scoped service that resolves another service as its implementation.\n        /// </summary>\n        /// <typeparam name=\"TService\">\n        ///     The service type.\n        /// </typeparam>\n        /// <typeparam name=\"TImplementation\">\n        ///     The implementation type to resolve when the service is resolved.\n        /// </typeparam>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        static IServiceCollection AddScopedPassThrough<TService, TImplementation>(this IServiceCollection services)\n            where TService : class\n            where TImplementation : class, TService\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            return services.AddScoped<TService>(\n                serviceProvider => serviceProvider.GetRequiredService<TImplementation>()\n            );\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.DependencyInjection/INamedKubeClients.cs",
    "content": "using Microsoft.Extensions.DependencyInjection;\n\nnamespace KubeClient\n{\n    /// <summary>\n    ///     Represents a service for resolving named Kubernetes clients.\n    /// </summary>\n    public interface INamedKubeClients\n    {\n        /// <summary>\n        ///     Resolve the Kubernetes API client with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The client name.\n        /// </param>\n        /// <returns>\n        ///     The resolved <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        IKubeApiClient Get(string name);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.DependencyInjection/KubeClient.Extensions.DependencyInjection.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n\n  <Nullable>enable</Nullable>\n\n    <Description>Dependency-injection support for KubeClient</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'netstandard2.1'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration.Binder\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration.Binder\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration.Binder\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration.Binder\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration.Binder\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Extensions.DependencyInjection/KubeClientOptionsRegistrationExtensions.cs",
    "content": "﻿using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Options;\nusing System;\nusing System.IO;\n\nnamespace KubeClient\n{\n    using Extensions.KubeConfig.Models;\n\n    /// <summary>\n    ///     Extension methods for registering Kubernetes client options.\n    /// </summary>\n    public static class KubeClientOptionsRegistrationExtensions\n    {\n        /// <summary>\n        ///     Add <see cref=\"KubeClientOptions\"/> to the service collection.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"configure\">\n        ///     A delegate that performs required configuration of the <see cref=\"KubeClientOptions\"/>.\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClientOptions(this IServiceCollection services, Action<KubeClientOptions> configure)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (configure == null)\n                throw new ArgumentNullException(nameof(configure));\n\n            services.Configure<KubeClientOptions>(options =>\n            {\n                configure(options);\n                options.EnsureValid();\n            });\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add named <see cref=\"KubeClientOptions\"/> to the service collection.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"name\">\n        ///     A name used to resolve the options.\n        /// </param>\n        /// <param name=\"configure\">\n        ///     A delegate that performs required configuration of the <see cref=\"KubeClientOptions\"/>.\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClientOptions(this IServiceCollection services, string name, Action<KubeClientOptions> configure)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (configure == null)\n                throw new ArgumentNullException(nameof(configure));\n\n            services.Configure<KubeClientOptions>(name, options =>\n            {\n                configure(options);\n                options.EnsureValid();\n            });\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add <see cref=\"KubeClientOptions\"/> from local Kubernetes client configuration.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"kubeConfigFileName\">\n        ///     The optional name of a specific configuration file to use (if not specified, defaults to the path returned by <see cref=\"K8sConfig.Locate\"/>).\n        /// </param>\n        /// <param name=\"kubeContextName\">\n        ///     The optional name of a specific Kubernetes client context to use.\n        /// </param>\n        /// <param name=\"defaultKubeNamespace\">\n        ///     The default namespace to use (if not specified, \"default\" is used).\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClientOptionsFromKubeConfig(this IServiceCollection services, string? kubeConfigFileName = null, string? kubeContextName = null, string defaultKubeNamespace = \"default\")\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(defaultKubeNamespace))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'defaultNamespace'.\", nameof(defaultKubeNamespace));\n\n            FileInfo kubeConfigFile = GetKubeConfigFile(kubeConfigFileName);\n\n            // IOptions<KubeClientOptions>\n            services.Configure<KubeClientOptions>(kubeClientOptions =>\n            {\n                K8sConfig config = K8sConfig.Load(kubeConfigFile);\n                KubeClientOptions optionsForTargetContext = config.ToKubeClientOptions(kubeContextName, defaultKubeNamespace);\n\n                optionsForTargetContext.CopyTo(kubeClientOptions);\n\n                kubeClientOptions.KubeNamespace = defaultKubeNamespace;\n            });\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add named <see cref=\"KubeClientOptions\"/> from local Kubernetes client configuration.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"name\">\n        ///     The name used to resolve these options.\n        /// </param>\n        /// <param name=\"kubeConfigFileName\">\n        ///     The optional name of a specific configuration file to use (if not specified, defaults to the path returned by <see cref=\"K8sConfig.Locate\"/>).\n        /// </param>\n        /// <param name=\"kubeContextName\">\n        ///     The optional name of a specific Kubernetes client context to use.\n        /// </param>\n        /// <param name=\"defaultKubeNamespace\">\n        ///     The default namespace to use (if not specified, \"default\" is used).\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClientOptionsFromKubeConfig(this IServiceCollection services, string name, string? kubeConfigFileName = null, string? kubeContextName = null, string defaultKubeNamespace = \"default\")\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n\n            if (String.IsNullOrWhiteSpace(defaultKubeNamespace))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'defaultNamespace'.\", nameof(defaultKubeNamespace));\n\n            FileInfo kubeConfigFile = GetKubeConfigFile(kubeConfigFileName);\n\n            services.AddKubeClientOptions(name, kubeClientOptions =>\n            {\n                K8sConfig config = K8sConfig.Load(kubeConfigFile);\n                KubeClientOptions optionsForTargetContext = config.ToKubeClientOptions(kubeContextName, defaultKubeNamespace);\n\n                optionsForTargetContext.CopyTo(kubeClientOptions);\n\n                kubeClientOptions.KubeNamespace = defaultKubeNamespace;\n            });\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add a named <see cref=\"KubeClientOptions\"/> for each context in the local Kubernetes client configuration.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"kubeConfigFileName\">\n        ///     The optional name of a specific configuration file to use (if not specified, defaults to the path returned by <see cref=\"K8sConfig.Locate\"/>).\n        /// </param>\n        /// <param name=\"defaultKubeNamespace\">\n        ///     The default namespace to use (if not specified, \"default\" is used).\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClientOptionsFromKubeConfig(this IServiceCollection services, string? kubeConfigFileName = null, string defaultKubeNamespace = \"default\")\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(defaultKubeNamespace))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'defaultNamespace'.\", nameof(defaultKubeNamespace));\n\n            FileInfo kubeConfigFile = GetKubeConfigFile(kubeConfigFileName);\n\n            // List of contexts is static for application lifetime...\n            K8sConfig config = K8sConfig.Load(kubeConfigFile);\n\n            foreach (Context targetContext in config.Contexts)\n            {\n                services.AddKubeClientOptions(targetContext.Name, kubeClientOptions =>\n                {\n                    // ...but config for those contexts is dynamic.\n                    K8sConfig currentConfig = K8sConfig.Load(kubeConfigFile);\n\n                    KubeClientOptions optionsForTargetContext = currentConfig.ToKubeClientOptions(targetContext.Name, defaultKubeNamespace);\n                    optionsForTargetContext.CopyTo(kubeClientOptions);\n\n                    kubeClientOptions.KubeNamespace = defaultKubeNamespace;\n                });\n            }\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add <see cref=\"KubeClientOptions\"/> from the pod service account.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"defaultKubeNamespace\">\n        ///     The default namespace to use (if not specified, \"default\" is used).\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClientOptionsFromPodServiceAccount(this IServiceCollection services, string defaultKubeNamespace = \"default\")\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(defaultKubeNamespace))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(defaultKubeNamespace)}.\", nameof(defaultKubeNamespace));\n\n            services.AddKubeClientOptions(kubeClientOptions =>\n            {\n                KubeClientOptions fromPodServiceAccount = KubeClientOptions.FromPodServiceAccount();\n                fromPodServiceAccount.CopyTo(kubeClientOptions);\n\n                kubeClientOptions.KubeNamespace = defaultKubeNamespace;\n            });\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Add named <see cref=\"KubeClientOptions\"/> from the pod service account.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        /// <param name=\"name\">\n        ///     The name used to resolve these options.\n        /// </param>\n        /// <param name=\"defaultKubeNamespace\">\n        ///     The default namespace to use (if not specified, \"default\" is used).\n        /// </param>\n        /// <returns>\n        ///     The configured service collection.\n        /// </returns>\n        public static IServiceCollection AddKubeClientOptionsFromPodServiceAccount(this IServiceCollection services, string name, string defaultKubeNamespace = \"default\")\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(name)}.\", nameof(name));\n\n            if (String.IsNullOrWhiteSpace(defaultKubeNamespace))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(defaultKubeNamespace)}.\", nameof(defaultKubeNamespace));\n\n            services.AddKubeClientOptions(name, kubeClientOptions =>\n            {\n                KubeClientOptions fromPodServiceAccount = KubeClientOptions.FromPodServiceAccount();\n                fromPodServiceAccount.CopyTo(kubeClientOptions);\n\n                kubeClientOptions.KubeNamespace = defaultKubeNamespace;\n            });\n\n            return services;\n        }\n\n        /// <summary>\n        ///     Get a <see cref=\"FileInfo\"/> representing a Kubernetes client configuration file.\n        /// </summary>\n        /// <param name=\"kubeConfigFileName\">\n        ///     The full path to the configuration file, or <c>null</c> to use the default config file (via <see cref=\"K8sConfig.Locate\"/>).\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"FileInfo\"/> representing the configuration file.\n        /// </returns>\n        static FileInfo GetKubeConfigFile(string? kubeConfigFileName)\n        {\n            if (String.IsNullOrWhiteSpace(kubeConfigFileName))\n                kubeConfigFileName = K8sConfig.Locate();\n\n            return new FileInfo(kubeConfigFileName);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.DependencyInjection/NamedKubeClients.cs",
    "content": "using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.Options;\nusing System;\n\nnamespace KubeClient\n{\n    /// <summary>\n    ///     A service for resolving named Kubernetes clients.\n    /// </summary>\n    public class NamedKubeClients\n        : INamedKubeClients\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"NamedKubeClients\"/> service.\n        /// </summary>\n        /// <param name=\"serviceProvider\">\n        ///     The underlying service provider used to resolve required services.\n        /// </param>\n        public NamedKubeClients(IServiceProvider serviceProvider)\n        {\n            if (serviceProvider == null)\n                throw new ArgumentNullException(nameof(serviceProvider));\n            \n            ServiceProvider = serviceProvider;\n        }\n\n        /// <summary>\n        ///     The underlying service provider used to resolve required services.\n        /// </summary>\n        public IServiceProvider ServiceProvider { get; }\n\n        /// <summary>\n        ///     Resolve the Kubernetes API client with the specified name.\n        /// </summary>\n        /// <param name=\"name\">\n        ///     The client name.\n        /// </param>\n        /// <returns>\n        ///     The resolved <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        public IKubeApiClient Get(string name)\n        {\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'name'.\", nameof(name));\n            \n            KubeClientOptions clientOptions = ServiceProvider.GetRequiredService<IOptionsMonitor<KubeClientOptions>>().Get(name);\n            if (clientOptions == null)\n                throw new InvalidOperationException($\"Cannot resolve a {nameof(KubeClientOptions)} instance named '{name}'.\");\n\n            clientOptions.LoggerFactory = ServiceProvider.GetService<ILoggerFactory>();\n\n            return KubeApiClient.Create(clientOptions);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/Assembly.cs",
    "content": "using System.Runtime.CompilerServices;\n\n[assembly: InternalsVisibleTo(\"KubeClient.Extensions.KubeConfig.Tests\")]"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/CryptoHelper.cs",
    "content": "using Org.BouncyCastle.Crypto;\nusing Org.BouncyCastle.OpenSsl;\nusing Org.BouncyCastle.Pkcs;\nusing Org.BouncyCastle.Security;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Security.Cryptography;\n\nusing BCX509Certificate = Org.BouncyCastle.X509.X509Certificate;\nusing X509Certificate2 = System.Security.Cryptography.X509Certificates.X509Certificate2;\n\n#if NET9_0_OR_GREATER\nusing X509CertificateLoader = System.Security.Cryptography.X509Certificates.X509CertificateLoader;\n#endif // NET9_0_OR_GREATER\n\nnamespace KubeClient.Extensions.KubeConfig\n{\n    /// <summary>\n    ///     Cryptographic helper methods.\n    /// </summary>\n    static class CryptoHelper\n    {\n        /// <summary>\n        ///     Convert a BouncyCastle X.509 certificate to a native (System.Security.Cryptography) certificate.\n        /// </summary>\n        /// <param name=\"certificate\">\n        ///     The <see cref=\"BCX509Certificate\"/> to convert.\n        /// </param>\n        /// <returns>\n        ///     The converted <see cref=\"X509Certificate2\"/>.\n        /// </returns>\n        public static X509Certificate2 ToNativeX509Certificate(this BCX509Certificate certificate)\n        {\n            if (certificate == null)\n                throw new ArgumentNullException(nameof(certificate));\n\n            byte[] derEncodedCertificate = certificate.GetEncoded();\n\n#if !NET9_0_OR_GREATER\n            return new X509Certificate2(derEncodedCertificate);\n#else // !NET9_0_OR_GREATER\n            return X509CertificateLoader.LoadCertificate(derEncodedCertificate);\n#endif // !NET9_0_OR_GREATER\n        }\n\n        /// <summary>\n        ///     Get the thumbprint of a BouncyCastle X.509 certificate.\n        /// </summary>\n        /// <param name=\"certificate\">\n        ///     The <see cref=\"BCX509Certificate\"/>.\n        /// </param>\n        /// <returns>\n        ///     The certificate thumbprint.\n        /// </returns>\n        public static string GetThumbprint(this BCX509Certificate certificate)\n        {\n            if (certificate == null)\n                throw new ArgumentNullException(nameof(certificate));\n\n            using (X509Certificate2 nativeCertificate = certificate.ToNativeX509Certificate())\n            {\n                return nativeCertificate.Thumbprint;\n            }\n        }\n\n        /// <summary>\n        ///     Build a PFX (PKCS12) store containing the specified certificate and private key.\n        /// </summary>\n        /// <param name=\"certificatePem\">\n        ///     A PEM block containing the certificate data.\n        /// </param>\n        /// <param name=\"keyPem\">\n        ///     A PEM block containing the private key data.\n        /// </param>\n        /// <param name=\"password\">\n        ///     The password to use for protecting the exported data.\n        /// </param>\n        /// <returns>\n        ///     A byte array containing the exported data.\n        /// </returns>\n        public static byte[] BuildPfx(string certificatePem, string keyPem, string password)\n        {\n            if (String.IsNullOrWhiteSpace(certificatePem))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'certificateData'.\", nameof(certificatePem));\n            \n            if (String.IsNullOrWhiteSpace(keyPem))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'keyData'.\", nameof(keyPem));\n\n            if (String.IsNullOrWhiteSpace(password))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'password'.\", nameof(password));\n\n            List<X509CertificateEntry> chain = new List<X509CertificateEntry>();\n            AsymmetricCipherKeyPair privateKey = null;\n\n            foreach (object pemObject in EnumeratePemObjects(password, certificatePem, keyPem))\n            {\n                if (pemObject is BCX509Certificate certificate)\n                    chain.Add(new X509CertificateEntry(certificate));\n                else if (pemObject is AsymmetricCipherKeyPair keyPair)\n                    privateKey = keyPair;\n            }\n\n            if (chain.Count == 0)\n                throw new CryptographicException(\"Cannot find X.509 certificate in PEM data.\");\n\n            if (privateKey == null)\n                throw new CryptographicException(\"Cannot find private key in PEM data.\");\n\n            string certificateSubject = chain[0].Certificate.SubjectDN.ToString();\n\n            Pkcs12Store store = new Pkcs12StoreBuilder().Build();\n            store.SetKeyEntry(certificateSubject, new AsymmetricKeyEntry(privateKey.Private), chain.ToArray());\n\n            using (MemoryStream pfxData = new MemoryStream())\n            {\n                store.Save(pfxData, password.ToCharArray(), new SecureRandom());\n\n                return pfxData.ToArray();\n            }\n        }\n\n        /// <summary>\n        ///     Enumerate the objects in one or more PEM-encoded blocks.\n        /// </summary>\n        /// <param name=\"pemPassword\">\n        ///     The password used to protect the encoded data.\n        /// </param>\n        /// <param name=\"pemBlocks\">\n        ///     The PEM-encoded blocks.\n        /// </param>\n        /// <returns>\n        ///     A sequence of BouncyCastle cryptographic objects (e.g. <see cref=\"BCX509Certificate\"/>, <see cref=\"AsymmetricCipherKeyPair\"/>, etc).\n        /// </returns>\n        public static IEnumerable<object> EnumeratePemObjects(string pemPassword, params string[] pemBlocks) => EnumeratePemObjects(pemPassword, (IEnumerable<string>)pemBlocks);\n\n        /// <summary>\n        ///     Enumerate the objects in one or more PEM-encoded blocks.\n        /// </summary>\n        /// <param name=\"pemPassword\">\n        ///     The password used to protect the encoded data.\n        /// </param>\n        /// <param name=\"pemBlocks\">\n        ///     The PEM-encoded blocks.\n        /// </param>\n        /// <returns>\n        ///     A sequence of BouncyCastle cryptographic objects (e.g. <see cref=\"BCX509Certificate\"/>, <see cref=\"AsymmetricCipherKeyPair\"/>, etc).\n        /// </returns>\n        public static IEnumerable<object> EnumeratePemObjects(string pemPassword, IEnumerable<string> pemBlocks)\n        {\n            if (pemBlocks == null)\n                throw new ArgumentNullException(nameof(pemBlocks));\n\n            if (String.IsNullOrWhiteSpace(pemPassword))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'password'.\", nameof(pemPassword));\n\n            var passwordStore = new StaticPasswordStore(pemPassword);\n\n            foreach (string pemBlock in pemBlocks)\n            {\n                if (String.IsNullOrWhiteSpace(pemBlock))\n                    continue;\n\n                using (StringReader pemBlockReader = new StringReader(pemBlock))\n                {\n                    PemReader pemReader = new PemReader(pemBlockReader, passwordStore);\n\n                    object pemObject;\n                    while ((pemObject = pemReader.ReadObject()) != null)\n                        yield return pemObject;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     A static implementation of <see cref=\"IPasswordFinder\"/> used to feed the decryption password to BouncyCastle.\n        /// </summary>\n        class StaticPasswordStore\n            : IPasswordFinder\n        {\n            /// <summary>\n            ///     The decryption password.\n            /// </summary>\n            readonly string _password;\n\n            /// <summary>\n            ///     Create a new <see cref=\"StaticPasswordStore\"/>.\n            /// </summary>\n            /// <param name=\"password\">\n            ///     The decryption password.\n            /// </param>\n            public StaticPasswordStore(string password)\n            {\n                if (String.IsNullOrWhiteSpace(password))\n                    throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'password'.\", nameof(password));\n\n                _password = password;\n            }\n\n            /// <summary>\n            ///     Get a copy of the decryption password.\n            /// </summary>\n            /// <returns>\n            ///     An array of characters representing the decryption password.\n            /// </returns>\n            public char[] GetPassword() => _password.ToCharArray();\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/K8sConfig.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient\n{\n    using Extensions.KubeConfig.Models;\n    using Microsoft.Extensions.Logging;\n\n    /// <summary>\n    ///     Kubernetes client configuration.\n    /// </summary>\n    public class K8sConfig\n    {\n        /// <summary>\n        ///     The client configuration API version (should be \"v1\").\n        /// </summary>\n        [YamlMember(Alias = \"apiVersion\")]\n        public string ApiVersion { get; set; } = \"v1\";\n\n        /// <summary>\n        ///     The client configuration kind (should be \"Configuration\").\n        /// </summary>\n        [YamlMember(Alias = \"kind\")]\n        public string Kind { get; set; } = \"Configuration\";\n\n        /// <summary>\n        ///     The currently-selected Kubernetes context.\n        /// </summary>\n        [YamlMember(Alias = \"current-context\")]\n        public string CurrentContextName { get; set; }\n\n        /// <summary>\n        ///     Kubernetes contexts.\n        /// </summary>\n        [YamlMember(Alias = \"contexts\")]\n        public List<Context> Contexts { get; set; } = new List<Context>();\n\n        /// <summary>\n        ///     Kubernetes clusters.\n        /// </summary>\n        [YamlMember(Alias = \"clusters\")]\n        public List<Cluster> Clusters { get; set; } = new List<Cluster>();\n\n        /// <summary>\n        ///     Kubernetes user identities.\n        /// </summary>\n        [YamlMember(Alias = \"users\")]\n        public List<UserIdentity> UserIdentities { get; set; } = new List<UserIdentity>();\n\n        /// <summary>\n        ///     Locate the full path of the configuration file ~/.kube/config.\n        /// </summary>\n        /// <returns>\n        ///     The full path of the config file.\n        /// </returns>\n        public static string Locate()\n        {\n            //Windows users in an AD domain with a Home Drive mapped will have the HOME environment variable set.\n            //Mirror the logic that kubectl and other Kubernetes tools use for homedir resolution: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/client-go/util/homedir/homedir.go\n            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))\n            {\n                var home = Environment.GetEnvironmentVariable(\"HOME\");\n                if (!String.IsNullOrEmpty(home))\n                    return Path.Combine(home, \".kube\", \"config\");\n\n                var homeDrive = Environment.GetEnvironmentVariable(\"HOMEDRIVE\");\n                var homePath = Environment.GetEnvironmentVariable(\"HOMEPATH\");\n                if (!String.IsNullOrEmpty(homeDrive) && !String.IsNullOrEmpty(homePath))\n                    return Path.Combine(homeDrive + homePath, \".kube\", \"config\");\n\n                var userProfile = Environment.GetEnvironmentVariable(\"USERPROFILE\");\n                if (!String.IsNullOrEmpty(userProfile))\n                    return Path.Combine(userProfile, \".kube\", \"config\");\n            }\n\n            return Path.Combine(Environment.GetEnvironmentVariable(\"HOME\"), \".kube\", \"config\");\n        }\n\n        /// <summary>\n        ///     Load and parse configuration from ~/.kube/config.\n        /// </summary>\n        /// <returns>\n        ///     The parsed configuration.\n        /// </returns>\n        public static K8sConfig Load()\n        {\n            return Load(configFile: Locate());\n        }\n\n        /// <summary>\n        ///     Load and parse configuration from the specified file (usually ~/.kube/config).\n        /// </summary>\n        /// <param name=\"configFile\">\n        ///     The path of the configuration file.\n        /// </param>\n        /// <returns>\n        ///     The parsed configuration.\n        /// </returns>\n        public static K8sConfig Load(string configFile) => Load(new FileInfo(configFile));\n\n        /// <summary>\n        ///     Load and parse configuration from the specified file (usually ~/.kube/config).\n        /// </summary>\n        /// <param name=\"configFile\">\n        ///     A <see cref=\"FileInfo\"/> representing the configuration file.\n        /// </param>\n        /// <returns>\n        ///     The parsed configuration.\n        /// </returns>\n        public static K8sConfig Load(FileInfo configFile)\n        {\n            if (configFile == null)\n                throw new ArgumentNullException(nameof(configFile));\n\n            IDeserializer deserializer = new DeserializerBuilder()\n                .IgnoreUnmatchedProperties()\n                .Build();\n\n            using (StreamReader configReader = configFile.OpenText())\n            {\n                return deserializer.Deserialize<K8sConfig>(configReader);\n            }\n        }\n\n        /// <summary>\n        ///     Create <see cref=\"KubeClientOptions\"/> from the settings specified in the <see cref=\"K8sConfig\"/>.\n        /// </summary>\n        /// <param name=\"kubeContextName\">\n        ///     The name of the Kubernetes context to use.\n        /// \n        ///     If not specified, then the current context (as configured) will be used.\n        /// </param>\n        /// <param name=\"defaultKubeNamespace\">\n        ///     The default Kubernetes namespace to use.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeClientOptions\"/>.\n        /// </returns>\n        public KubeClientOptions ToKubeClientOptions(string kubeContextName = null, string defaultKubeNamespace = null, ILoggerFactory loggerFactory = null)\n        {\n            var clientOptions = new KubeClientOptions { LoggerFactory = loggerFactory };\n\n            return ConfigureKubeClientOptions(clientOptions, kubeContextName, defaultKubeNamespace);\n        }\n\n        /// <summary>\n        ///     Configure <see cref=\"KubeClientOptions\"/> from the settings specified in the <see cref=\"K8sConfig\"/>.\n        /// </summary>\n        /// <param name=\"kubeClientOptions\">\n        ///     \n        /// </param>\n        /// <param name=\"kubeContextName\">\n        ///     The name of the Kubernetes context to use.\n        /// \n        ///     If not specified, then the current context (as configured) will be used.\n        /// </param>\n        /// <param name=\"defaultKubeNamespace\">\n        ///     The default Kubernetes namespace to use.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeClientOptions\"/>.\n        /// </returns>\n        public KubeClientOptions ConfigureKubeClientOptions(KubeClientOptions kubeClientOptions, string kubeContextName = null, string defaultKubeNamespace = null)\n        {\n            if (kubeClientOptions == null)\n                throw new ArgumentNullException(nameof(kubeClientOptions));\n\n            string targetContextName = kubeContextName ?? CurrentContextName;\n            if (String.IsNullOrWhiteSpace(targetContextName))\n                throw new InvalidOperationException(\"The kubeContextName parameter was not specified, and the Kubernetes client configuration does not specify a current context.\");\n\n            Context targetContext = Contexts.Find(context => context.Name == targetContextName);\n            if (targetContext == null)\n                throw new InvalidOperationException($\"Cannot find a context in the Kubernetes client configuration named '{targetContextName}'.\");\n\n            Cluster targetCluster = Clusters.Find(cluster => cluster.Name == targetContext.Config.ClusterName);\n            if (targetCluster == null)\n                throw new InvalidOperationException($\"Cannot find a cluster in the Kubernetes client configuration named '{targetContext.Config.ClusterName}'.\");\n\n            UserIdentity targetUser = UserIdentities.Find(user => user.Name == targetContext.Config.UserName);\n            if (targetUser == null)\n                throw new InvalidOperationException($\"Cannot find a user identity in the Kubernetes client configuration named '{targetContext.Config.UserName}'.\");\n\n            kubeClientOptions.ApiEndPoint = new Uri(targetCluster.Config.Server);\n            kubeClientOptions.KubeNamespace = defaultKubeNamespace;\n            kubeClientOptions.ClientCertificate = targetUser.Config.GetClientCertificate();\n            kubeClientOptions.AllowInsecure = targetCluster.Config.AllowInsecure;\n            kubeClientOptions.CertificationAuthorityCertificate = targetCluster.Config.GetCACertificate();\n\n            // Mixed authentication types are not supported.\n            if (kubeClientOptions.ClientCertificate == null)\n            {\n                string accessToken = targetUser.Config.GetRawToken();\n                if (!String.IsNullOrWhiteSpace(accessToken))\n                {\n                    kubeClientOptions.AccessToken = accessToken;\n                    kubeClientOptions.AuthStrategy = KubeAuthStrategy.BearerToken;\n                }\n                else if (!String.IsNullOrEmpty(targetUser.Config.Username) && !String.IsNullOrEmpty(targetUser.Config.Password))\n                {\n                    kubeClientOptions.Username = targetUser.Config.Username;\n                    kubeClientOptions.Password = targetUser.Config.Password;\n                    kubeClientOptions.AuthStrategy = KubeAuthStrategy.Basic;\n                }\n                else\n                {\n                    kubeClientOptions.AuthStrategy = KubeAuthStrategy.None;\n                }\n\n                AuthProviderConfig authProvider = targetUser.Config.AuthProvider;\n                if (authProvider != null)\n                {\n                    kubeClientOptions.AuthStrategy = KubeAuthStrategy.BearerTokenProvider;\n\n                    if (authProvider.Config.TryGetValue(\"cmd-path\", out object accessTokenCommand))\n                        kubeClientOptions.AccessTokenCommand = (string)accessTokenCommand;\n\n                    if (authProvider.Config.TryGetValue(\"cmd-args\", out object accessTokenCommandArguments))\n                        kubeClientOptions.AccessTokenCommandArguments = (string)accessTokenCommandArguments;\n\n                    if (authProvider.Config.TryGetValue(\"token-key\", out object accessTokenSelector))\n                        kubeClientOptions.AccessTokenSelector = (string)accessTokenSelector;\n\n                    if (authProvider.Config.TryGetValue(\"expiry-key\", out object accessTokenExpirySelector))\n                        kubeClientOptions.AccessTokenExpirySelector = (string)accessTokenExpirySelector;\n\n                    if (authProvider.Config.TryGetValue(\"access-token\", out object initialAccessToken))\n                        kubeClientOptions.InitialAccessToken = (string)initialAccessToken;\n\n                    if (authProvider.Config.TryGetValue(\"expiry\", out object initialTokenExpiry))\n                    {\n                        kubeClientOptions.InitialTokenExpiryUtc = DateTime.Parse((string)initialTokenExpiry,\n                            provider: CultureInfo.InvariantCulture,\n                            styles: DateTimeStyles.AssumeUniversal\n                        );\n                    }\n                }\n\n                CredentialPluginConfig execProvider = targetUser.Config.Exec;\n                if (execProvider != null)\n                {\n                    kubeClientOptions.AuthStrategy = KubeAuthStrategy.CredentialPlugin;\n                    kubeClientOptions.AccessTokenCommand = execProvider.Command;\n                    kubeClientOptions.AccessTokenCommandArguments = string.Join(\" \", execProvider.Arguments);\n                    kubeClientOptions.AccessTokenSelector = \".status.token\";\n                    kubeClientOptions.AccessTokenExpirySelector = \".status.expirationTimestamp\";\n                    if (execProvider.EnvironmentVariables?.Count > 0)\n                        foreach (var envVar in execProvider.EnvironmentVariables)\n                            Environment.SetEnvironmentVariable(envVar.Name, envVar.Value);\n                }\n            }\n            else\n                kubeClientOptions.AuthStrategy = KubeAuthStrategy.ClientCertificate;\n\n            return kubeClientOptions;\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/K8sConfigException.cs",
    "content": "using System;\n\nnamespace KubeClient\n{\n    /// <summary>\n    ///     Exception raised when invalid Kubernetes client configuration is encountered.\n    /// </summary>\n    public class K8sConfigException\n        : KubeClientException\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"K8sConfigException\"/>.\n        /// </summary>\n        /// <param name=\"message\">\n        ///     The exception message.\n        /// </param>\n        public K8sConfigException(string message)\n            : base(message)\n        {\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"K8sConfigException\"/>, as caused by a previous exception.\n        /// </summary>\n        /// <param name=\"message\">\n        ///     The exception message.\n        /// </param>\n        /// <param name=\"innerException\">\n        ///     The exception that caused the <see cref=\"K8sConfigException\"/> to be raised.\n        /// </param>\n        public K8sConfigException(string message, Exception innerException)\n            : base(message, innerException)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n\n    <Description>Kubernetes client configuration support for KubeClient</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n      <ProjectReference Include=\"../KubeClient/KubeClient.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n      <PackageReference Include=\"BouncyCastle.Cryptography\" Version=\"2.4.0\" />\n      <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n      <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n      <PackageReference Include=\"YamlDotNet\" Version=\"16.1.3\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/Models/AuthProviderConfig.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Extensions.KubeConfig.Models\n{\n    /// <summary>\n    ///     Configuration for a K8s client authentication provider.\n    /// </summary>\n    public class AuthProviderConfig\n    {\n        /// <summary>\n        ///     The provider name.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The raw provider configuration.\n        /// </summary>\n        [YamlMember(Alias = \"config\")]\n        public Dictionary<string, object> Config { get; set; } = new Dictionary<string, object>();\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/Models/Cluster.cs",
    "content": "﻿using YamlDotNet.Serialization;\n\nnamespace KubeClient.Extensions.KubeConfig.Models\n{\n    /// <summary>\n    ///     A Kubernetes cluster that clients can connect to.\n    /// </summary>\n    public class Cluster\n    {\n        /// <summary>\n        ///     The cluster name.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The cluster configuration.\n        /// </summary>\n        [YamlMember(Alias = \"cluster\")]\n        public ClusterConfig Config { get; set; }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/Models/ClusterConfig.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Security.Cryptography.X509Certificates;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Extensions.KubeConfig.Models\n{\n    /// <summary>\n    ///     Client configuration for a Kubernetes cluster.\n    /// </summary>\n    public class ClusterConfig\n    {\n        /// <summary>\n        ///     The base address of the target server's API end-point.\n        /// </summary>\n        [YamlMember(Alias = \"server\")]\n        public string Server { get; set; }\n\n        /// <summary>\n        ///     Allow insecure connections (i.e. skip TLS verification)?\n        /// </summary>\n        [YamlMember(Alias = \"insecure-skip-tls-verify\")]\n        public bool AllowInsecure { get; set; }\n\n        /// <summary>\n        ///     A file containing the certification authority's PEM-encoded certificate.\n        /// </summary>\n        [YamlMember(Alias = \"certificate-authority\")]\n        public string CertificateAuthorityFile { get; set; }\n\n        /// <summary>\n        ///     The certification authority's certificate (Base64-encoded bytes representing a PEM block).\n        /// </summary>\n        [YamlMember(Alias = \"certificate-authority-data\")]\n        public string CertificateAuthorityData { get; set; }\n\n        /// <summary>\n        ///     Get the cluster's certification authority certificate.\n        /// </summary>\n        /// <returns>\n        ///     The CA certificate, as an <see cref=\"X509Certificate2\"/>, if configured; otherwise, <c>null</c>.\n        /// </returns>\n        public X509Certificate2 GetCACertificate()\n        {\n            byte[] certificateData;\n            if (!String.IsNullOrWhiteSpace(CertificateAuthorityFile))\n                certificateData = File.ReadAllBytes(CertificateAuthorityFile);\n            else if (!String.IsNullOrWhiteSpace(CertificateAuthorityData))\n                certificateData = Convert.FromBase64String(CertificateAuthorityData);\n            else\n                return null;\n\n#if !NET9_0_OR_GREATER\n            return new X509Certificate2(certificateData);\n#else // !NET9_0_OR_GREATER\n            return X509CertificateLoader.LoadCertificate(certificateData);\n#endif // !NET9_0_OR_GREATER\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/Models/Context.cs",
    "content": "﻿using YamlDotNet.Serialization;\n\nnamespace KubeClient.Extensions.KubeConfig.Models\n{\n    /// <summary>\n    ///     A Kubernetes context links a cluster with a specific user identity.\n    /// </summary>\n    public class Context\n    {\n        /// <summary>\n        ///     The context name.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The context configuration.\n        /// </summary>\n        [YamlMember(Alias = \"context\")]\n        public ContextConfig Config { get; set; } = new ContextConfig();\n    }\n\n    /// <summary>\n    ///     Configuration for a Kubernetes client context.\n    /// </summary>\n    public class ContextConfig\n    {\n        /// <summary>\n        ///     The name of the target cluster.\n        /// </summary>\n        [YamlMember(Alias = \"cluster\")]\n        public string ClusterName { get; set; }\n\n        /// <summary>\n        ///     The name of the user identity to use.\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        public string UserName { get; set; }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/Models/CredentialPluginConfig.cs",
    "content": "using System.Collections.Generic;\nusing KubeClient.Models;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Extensions.KubeConfig.Models\n{\n    /// <summary>\n    ///     Configuration for a K8s client-go credential plugin.\n    /// </summary>\n    public class CredentialPluginConfig\n    {\n        /// <summary>\n        ///     The plugin command.\n        /// </summary>\n        [YamlMember(Alias = \"command\")]\n        public string Command { get; set; }\n\n        /// <summary>\n        ///     The API version to use when decoding the ExecCredentials resource.\n        /// </summary>\n        /// <remarks>\n        ///     The API version returned by the plugin MUST match the version specified here.\n        /// </remarks>\n        [YamlMember(Alias = \"apiVersion\")]\n        public string ApiVersion { get; set; }\n\n        /// <summary>\n        ///     Environment variables (if any) to set when running the plugin command.\n        /// </summary>\n        [YamlMember(Alias = \"env\")]\n        public List<EnvVarV1> EnvironmentVariables { get; set; } = new List<EnvVarV1>();\n\n        /// <summary>\n        ///     Should <see cref=\"EnvironmentVariables\"/> be serialised?\n        /// </summary>\n        /// <returns>\n        ///     <c>true</c>, if <see cref=\"EnvironmentVariables\"/> should be serialised; otherwise, <c>false</c>.\n        /// </returns>\n        public bool ShouldSerializeEnvironmentVariables() => EnvironmentVariables.Count > 0;\n\n        /// <summary>\n        ///     Command-line arguments (if any) to pass to the plugin command.\n        /// </summary>\n        [YamlMember(Alias = \"args\")]\n        public List<string> Arguments { get; set; } = new List<string>();\n\n        /// <summary>\n        ///     Should <see cref=\"Arguments\"/> be serialised?\n        /// </summary>\n        /// <returns>\n        ///     <c>true</c>, if <see cref=\"Arguments\"/> should be serialised; otherwise, <c>false</c>.\n        /// </returns>\n        public bool ShouldSerializeArguments() => Arguments.Count > 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/Models/UserIdentity.cs",
    "content": "﻿using YamlDotNet.Serialization;\n\nnamespace KubeClient.Extensions.KubeConfig.Models\n{\n    /// <summary>\n    ///     A user identity that clients can use when authenticating to a Kubernetes cluster.\n    /// </summary>\n    public class UserIdentity\n    {\n        /// <summary>\n        ///     The user identity name.\n        /// </summary>\n        [YamlMember(Alias = \"name\")]\n        public string Name { get; set; }\n\n        /// <summary>\n        ///     The user identity configuration.\n        /// </summary>\n        [YamlMember(Alias = \"user\")]\n        public UserIdentityConfig Config { get; set; }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.KubeConfig/Models/UserIdentityConfig.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Security.Cryptography.X509Certificates;\nusing System.Text;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Extensions.KubeConfig.Models\n{\n    /// <summary>\n    ///     User identity configuration for a Kubernetes client.\n    /// </summary>\n    public class UserIdentityConfig\n    {\n        /// <summary>\n        ///     A Base64-encoded string containing the access token to use (will be placed in the \"Authorization\" header).\n        /// </summary>\n        [YamlMember(Alias = \"token\")]\n        public string Token { get; set; }\n\n        /// <summary>\n        ///     Optional configuration for an authentication provider.\n        /// </summary>\n        [YamlMember(Alias = \"auth-provider\")]\n        public AuthProviderConfig AuthProvider { get; set; }\n\n        /// <summary>\n        ///     Optional configuration for a client-go credential plugin.\n        /// </summary>\n        [YamlMember(Alias = \"exec\")]\n        public CredentialPluginConfig Exec { get; set; }\n\n        /// <summary>\n        ///     A file containing the PEM-encoded client certificate to use.\n        /// </summary>\n        [YamlMember(Alias = \"client-certificate\")]\n        public string ClientCertificateFile { get; set; }\n\n        /// <summary>\n        ///     A file containing the PEM-encoded private key associated with the client certificate to use.\n        /// </summary>\n        [YamlMember(Alias = \"client-key\")]\n        public string ClientKeyFile { get; set; }\n\n        /// <summary>\n        ///     The client certificate to use (Base64-encoded bytes representing a PEM block).\n        /// </summary>\n        [YamlMember(Alias = \"client-certificate-data\")]\n        public string ClientCertificateData { get; set; }\n\n        /// <summary>\n        ///     The private key to use (Base64-encoded bytes representing a PEM block).\n        /// </summary>\n        [YamlMember(Alias = \"client-key-data\")]\n        public string ClientKeyData { get; set; }\n        \n        /// <summary>\n        ///     The username to use.\n        /// </summary>\n        [YamlMember(Alias = \"username\")]\n        public string Username { get; set; }\n\n        /// <summary>\n        ///     The password to use.\n        /// </summary>\n        [YamlMember(Alias = \"password\")]\n        public string Password { get; set; }\n\n        /// <summary>\n        ///     Get the raw Kubernetes authentication token (if any).\n        /// </summary>\n        /// <returns>\n        ///     The authentication token, if configured; otherwise, <c>null</c>.\n        /// </returns>\n        /// <remarks>\n        ///     If the token starts with a \"Bearer \" prefix (i.e. already in HTTP Authorization header format), then this prefix will be stripped.\n        /// </remarks>\n        public string GetRawToken()\n        {\n            if (String.IsNullOrWhiteSpace(Token))\n                return null;\n\n            try\n            {\n                string token = Encoding.ASCII.GetString(\n                    Convert.FromBase64String(Token)\n                );\n                if (token.StartsWith(\"Bearer \", StringComparison.OrdinalIgnoreCase))\n                    return token.Substring(\"Bearer \".Length);\n            }\n            catch (FormatException)\n            {\n                // ignored in case the string is not base64 encoded.  There's no good/reliable way to say for sure that a string is base64 encoded ('abcd' is technically a valid base64 string)\n            }\n\n            return Token;\n        }\n\n        /// <summary>\n        ///     Get the user's client certificate (if configured).\n        /// </summary>\n        /// <returns>\n        ///     The certificate (with private key), as an <see cref=\"X509Certificate2\"/>, if configured; otherwise, <c>null</c>.\n        /// </returns>\n        public X509Certificate2 GetClientCertificate()\n        {\n            string certificatePem, keyPem;\n            if (!String.IsNullOrWhiteSpace(ClientCertificateFile) && !String.IsNullOrWhiteSpace(ClientKeyFile))\n            {\n                certificatePem = File.ReadAllText(ClientCertificateFile);\n                keyPem = File.ReadAllText(ClientKeyFile);\n            }\n            else if (!String.IsNullOrWhiteSpace(ClientCertificateData) && !String.IsNullOrWhiteSpace(ClientKeyData))\n            {\n                certificatePem = Encoding.ASCII.GetString(\n                    Convert.FromBase64String(ClientCertificateData)\n                );\n                keyPem = Encoding.ASCII.GetString(\n                    Convert.FromBase64String(ClientKeyData)\n                );\n            }\n            else\n                return null;\n\n            string pemPassword = Guid.NewGuid().ToString(\"N\"); // AF: Not cryptographically-secure, but honestly in this context who cares?\n            byte[] pfxData = CryptoHelper.BuildPfx(certificatePem, keyPem, pemPassword);\n\n#if !NET9_0_OR_GREATER\n            return new X509Certificate2(pfxData, pemPassword, X509KeyStorageFlags.EphemeralKeySet);\n#else // !NET9_0_OR_GREATER\n            return X509CertificateLoader.LoadPkcs12(pfxData, pemPassword, X509KeyStorageFlags.EphemeralKeySet);\n#endif // !NET9_0_OR_GREATER\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/K8sChannelProtocol.cs",
    "content": "namespace KubeClient.Extensions.WebSockets\n{\n    /// <summary>\n    ///     Well-known WebSocket sub-protocols used by the Kubernetes API.\n    /// </summary>\n    public static class K8sChannelProtocol\n    {\n        /// <summary>\n        ///     Version 1 of the Kubernetes channel WebSocket protocol.\n        /// </summary>\n        /// <remarks>\n        ///     This protocol prepends each binary message with a byte indicating the channel number (zero indexed) that the message was sent on.\n        ///     Messages in both directions should prefix their messages with this channel byte.\n        /// \n        ///     When used for remote execution, the channel numbers are by convention defined to match the POSIX file-descriptors assigned to STDIN, STDOUT, and STDERR (0, 1, and 2).\n        ///     No other conversion is performed on the raw subprotocol - writes are sent as they are received by the server.\n        ///\n        ///     Example client session:\n        ///\n        ///        CONNECT http://server.com with subprotocol \"channel.k8s.io\"\n        ///        WRITE []byte{0, 102, 111, 111, 10} # send \"foo\\n\" on channel 0 (STDIN)\n        ///        READ  []byte{1, 10}                # receive \"\\n\" on channel 1 (STDOUT)\n        ///        CLOSE\n        /// </remarks>\n        public static readonly string V1 = \"channel.k8s.io\";\n\n        /// <summary>\n        ///     Version 1 of the Kubernetes Base64-encoded channel WebSocket protocol.\n        /// </summary>\n        /// <remarks>\n        ///     This protocol base64 encodes each message with a character representing the channel number (zero indexed) the message was sent on (if the channel number is 1, then the character is '1', i.e. a byte value of 49).\n        ///     Messages in both directions should prefix their messages with this character.\n        /// \n        ///     When used for remote execution, the channel numbers are by convention defined to match the POSIX file-descriptors assigned to STDIN, STDOUT, and STDERR ('0', '1', and '2').\n        ///     The data received on the server is base64 decoded (and must be be valid) and data written by the server to the client is base64 encoded.\n        ///\n        ///     Example client session:\n        ///\n        ///        CONNECT http://server.com with subprotocol \"base64.channel.k8s.io\"\n        ///        WRITE []byte{48, 90, 109, 57, 118, 67, 103, 111, 61} # send \"foo\\n\" (base64: \"Zm9vCgo=\") on channel '0' (STDIN)\n        ///        READ  []byte{49, 67, 103, 61, 61} # receive \"\\n\" (base64: \"Cg==\") on channel '1' (STDOUT)\n        ///        CLOSE\n        /// </remarks>\n        public static readonly string Base64V1 = \"base64.channel.k8s.io\";\n    }\n\n    /// <summary>\n    ///     Well-known Kubernetes channel (stream) indexes.\n    /// </summary>\n    public static class K8sChannel\n    {\n        /// <summary>\n        ///     The Kubernetes channel index representing process STDIN.\n        /// </summary>\n        public static readonly byte StdIn = 0;\n\n        /// <summary>\n        ///     The Kubernetes channel index representing process STDOUT.\n        /// </summary>\n        public static readonly byte StdOut = 1;\n\n        /// <summary>\n        ///     The Kubernetes channel index representing process STDERR.\n        /// </summary>\n        public static readonly byte StdErr = 2;\n\n        /// <summary>\n        ///     The Kubernetes channel index representing the data stream for port-forwarding.\n        /// </summary>\n        public static readonly byte PortForwardData = 0;\n\n        /// <summary>\n        ///     The Kubernetes channel index representing the error stream for port-forwarding.\n        /// </summary>\n        public static readonly byte PortForwardError = 1;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/K8sMultiplexer.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing Nito.AsyncEx;\nusing System;\nusing System.Buffers;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Net.WebSockets;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Extensions.WebSockets\n{\n    using Streams;\n\n    /// <summary>\n    ///     A multiplexer / demultiplexer for Kubernetes-style WebSocket streams.\n    /// </summary>\n    /// <remarks>\n    ///     Kubernetes streams add a single-byte prefix (indicating the stream index) to each payload (this can be one or more WebSocket packets, until EndOfMessage=<c>true</c>).\n    /// \n    ///     For example, when using the PodV1 exec API, there are up to 3 separate streams: STDIN, STDOUT, and STDERR (with indexes 0, 1, and 2, respectively).\n    /// </remarks>\n    public sealed class K8sMultiplexer\n        : IDisposable\n    {\n        /// <summary>\n        ///     The default buffer size used for Kubernetes WebSockets.\n        /// </summary>\n        public const int DefaultBufferSize = 1024;\n\n        /// <summary>\n        ///     The default maximum number of pending bytes that input streams can contain.\n        /// </summary>\n        public const int DefaultMaxInputStreamBytes = 4096;\n\n        /// <summary>\n        ///     An asynchronous lock used to synchronise sending to the underlying WebSocket.\n        /// </summary>\n        readonly AsyncLock _sendMutex = new AsyncLock();\n\n        /// <summary>\n        ///     An asynchronous lock used to synchronise receiving from the underlying WebSocket.\n        /// </summary>\n        readonly AsyncLock _receiveMutex = new AsyncLock();\n\n        /// <summary>\n        ///     Input (read) streams, keyed by stream index.\n        /// </summary>\n        readonly Dictionary<byte, K8sMultiplexedReadStream> _inputStreams = new Dictionary<byte, K8sMultiplexedReadStream>();\n\n        /// <summary>\n        ///     Output (write) streams, keyed by stream index.\n        /// </summary>\n        readonly Dictionary<byte, K8sMultiplexedWriteStream> _outputStreams = new Dictionary<byte, K8sMultiplexedWriteStream>();\n\n        /// <summary>\n        ///     Pending write requests from output streams that will be interleaved and written to the WebSocket.\n        /// </summary>\n        readonly BlockingCollection<PendingSend> _pendingSends = new BlockingCollection<PendingSend>(new ConcurrentQueue<PendingSend>());\n\n        /// <summary>\n        ///     Task completion source for <see cref=\"WhenConnectionClosed\"/>.\n        /// </summary>\n        TaskCompletionSource<object> _closeCompletion = new TaskCompletionSource<object>();\n\n        /// <summary>\n        ///     A source for cancellation tokens used to halt the multiplexer's operation.\n        /// </summary>\n        CancellationTokenSource _cancellationSource;\n        \n        /// <summary>\n        ///     A <see cref=\"Task\"/> representing the WebSocket message-send pump.\n        /// </summary>\n        Task _sendPump;\n\n        /// <summary>\n        ///     A <see cref=\"Task\"/> representing the WebSocket message-receive pump.\n        /// </summary>\n        Task _receivePump;\n\n        /// <summary>\n        ///     Create a new <see cref=\"K8sMultiplexer\"/>.\n        /// </summary>\n        /// <param name=\"socket\">\n        ///     The target WebSocket.\n        /// </param>\n        /// <param name=\"inputStreamIndexes\">\n        ///     An array of bytes containing the indexes of the expected input streams.\n        /// </param>\n        /// <param name=\"outputStreamIndexes\">\n        ///     An array of bytes containing the indexes of the expected output streams.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     The <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <param name=\"maxInputStreamBytes\">\n        ///     The maximum number of pending bytes that input streams can contain.\n        /// </param>\n        public K8sMultiplexer(WebSocket socket, byte[] inputStreamIndexes, byte[] outputStreamIndexes, ILoggerFactory loggerFactory, int maxInputStreamBytes = DefaultMaxInputStreamBytes)\n        {\n            if (socket == null)\n                throw new ArgumentNullException(nameof(socket));\n\n            if (inputStreamIndexes == null)\n                throw new ArgumentNullException(nameof(inputStreamIndexes));\n            \n            if (outputStreamIndexes == null)\n                throw new ArgumentNullException(nameof(outputStreamIndexes));   \n\n            if (inputStreamIndexes.Length == 0 && outputStreamIndexes.Length == 0)\n                throw new ArgumentException($\"Must specify at least one of {nameof(inputStreamIndexes)} or {nameof(outputStreamIndexes)}.\");\n\n            if (loggerFactory == null)\n                throw new ArgumentNullException(nameof(loggerFactory));\n            \n            Log = loggerFactory.CreateLogger<K8sMultiplexer>();\n            Socket = socket;\n\n            foreach (byte inputStreamIndex in inputStreamIndexes)\n                _inputStreams[inputStreamIndex] = new K8sMultiplexedReadStream(inputStreamIndex, maxInputStreamBytes, loggerFactory);\n\n            foreach (byte outputStreamIndex in outputStreamIndexes)\n                _outputStreams[outputStreamIndex] = new K8sMultiplexedWriteStream(outputStreamIndex, EnqueueSend, loggerFactory);\n\n            Log.LogTrace(\"K8sMultiplexer created with {InputStreamCount} input streams (indexes: [{InputStreamIndexes}]) and {OutputStreamCount} output streams (indexes: [{OutputStreamIndexes}]).\",\n                _inputStreams.Count,\n                String.Join(\", \", _inputStreams.Keys),\n                _outputStreams.Count,\n                String.Join(\", \", _outputStreams.Keys)\n            );\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the <see cref=\"K8sMultiplexer\"/>.\n        /// </summary>\n        public void Dispose()\n        {\n            Log.LogTrace(\"Disposing...\");\n\n            try\n            {\n                if (_receivePump != null || _sendPump != null)\n                    Shutdown().GetAwaiter().GetResult();\n                else\n                    _closeCompletion.TrySetResult(null);\n            }\n            catch (OperationCanceledException)\n            {\n                // Close operation timed out; nothing useful we can do here.\n            }\n            catch (AggregateException stopFailed)\n            {\n                _closeCompletion?.TrySetException(stopFailed);\n\n                stopFailed.Flatten().Handle(exception =>\n                {\n                    Log.LogError(EventIds.K8sMultiplexer.DisposeStopError, stopFailed, \"An unexpected error occurred during disposal of the K8sMultiplexer (failed to stop the send / receive loop).\");\n\n                    return true;\n                });\n            }\n\n            Log.LogTrace(\"Disposing K8sMultiplexer input / output channel streams...\");\n\n            foreach (Stream inputStream in _inputStreams.Values)\n                inputStream.Dispose();\n\n            foreach (Stream outputStream in _outputStreams.Values)\n                outputStream.Dispose();\n\n            Log.LogTrace(\"Disposal complete.\");\n        }\n\n        /// <summary>\n        ///     A <see cref=\"Task\"/> that completes when the underlying WebSocket connection is closed.\n        /// </summary>\n        public Task WhenConnectionClosed => _closeCompletion.Task;\n\n        /// <summary>\n        ///     The target WebSocket.\n        /// </summary>\n        WebSocket Socket { get; }\n        \n        /// <summary>\n        ///     The multiplexer's log facility.\n        /// </summary>\n        ILogger Log { get; }\n\n        /// <summary>\n        ///     The <see cref=\"CancellationToken\"/> used to halt the multiplexer's operation.\n        /// </summary>\n        CancellationToken Cancellation => _cancellationSource?.Token ?? CancellationToken.None;\n\n        /// <summary>\n        ///     Get the input stream (if defined) with the specified stream index.\n        /// </summary>\n        /// <param name=\"streamIndex\">\n        ///     The Kubernetes stream index of the target stream.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"Stream\"/>, or <c>null</c> if no stream is defined with the specified index.\n        /// </returns>\n        public Stream GetInputStream(byte streamIndex)\n        {\n            K8sMultiplexedReadStream readStream;\n            _inputStreams.TryGetValue(streamIndex, out readStream);\n\n            return readStream;\n        }\n\n        /// <summary>\n        ///     Get the output stream (if defined) with the specified stream index.\n        /// </summary>\n        /// <param name=\"streamIndex\">\n        ///     The Kubernetes stream index of the target stream.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"Stream\"/>, or <c>null</c> if no stream is defined with the specified index.\n        /// </returns>\n        public Stream GetOutputStream(byte streamIndex)\n        {\n            K8sMultiplexedWriteStream writeStream;\n            _outputStreams.TryGetValue(streamIndex, out writeStream);\n\n            return writeStream;\n        }\n\n        /// <summary>\n        ///     Start processing stream data.\n        /// </summary>\n        public void Start()\n        {\n            if (_sendPump != null && _receivePump != null)\n                throw new InvalidOperationException(\"Send / receive pumps are already running.\");\n\n            _cancellationSource = new CancellationTokenSource();\n            _closeCompletion = new TaskCompletionSource<object>();\n            _sendPump = SendPump();\n            _receivePump = ReceivePump();\n        }\n\n        /// <summary>\n        ///     Stop processing stream data and close the underlying <see cref=\"WebSocket\"/>.\n        /// </summary>\n        /// <param name=\"cancellation\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to abort the WebSocket's close operation.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        public async Task Shutdown(CancellationToken cancellation = default)\n        {\n            if (_sendPump == null && _receivePump == null)\n                throw new InvalidOperationException(\"Send / receive pumps are not running.\");\n\n            Log.LogTrace(\"Shutting down...\");\n\n            if (_cancellationSource != null)\n            {\n                Log.LogTrace(\"Initiating cancellation of the send / receive pumps...\");\n\n                _cancellationSource.Cancel();\n                _cancellationSource.Dispose();\n                _cancellationSource = null;\n            }\n\n            Log.LogTrace(\"Waiting for send / receive pumps to shut down...\");\n\n            Task timeout = Task.Delay(TimeSpan.FromMilliseconds(100), cancellation);\n            Task firstCompleted = await Task.WhenAny(Task.WhenAll(_sendPump, _receivePump), timeout).ConfigureAwait(false);\n            if (ReferenceEquals(firstCompleted, timeout))\n                await timeout.ConfigureAwait(false); // Propagate exception from cancellation (if required), but not from stopping the send / receive pumps.\n\n            _sendPump = null;\n            _receivePump = null;\n\n            if (Socket.State == WebSocketState.Open)\n            {\n                Log.LogTrace(\"Closing WebSocket...\");\n\n                await Socket.CloseAsync(\n                     WebSocketCloseStatus.NormalClosure,\n                    \"Connection closed.\",\n                    CancellationToken.None\n                ).ConfigureAwait(false);\n\n                Log.LogTrace(\"WebSocket closed.\");\n            }\n            else\n                Log.LogTrace(\"Not closing WebSocket (current state is {WebSocketState}).\", Socket.State);\n\n            _closeCompletion.TrySetResult(null);\n            _closeCompletion = new TaskCompletionSource<object>();\n\n            Log.LogTrace(\"Shutdown complete.\");\n        }\n\n        /// <summary>\n        ///     Enqueue a send operation (asynchronously write data to the outgoing stream).\n        /// </summary>\n        /// <param name=\"streamIndex\">\n        ///     The index of the target stream.\n        /// </param>\n        /// <param name=\"data\">\n        ///     The data to write.\n        /// </param>\n        /// <param name=\"cancellation\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        Task EnqueueSend(byte streamIndex, ArraySegment<byte> data, CancellationToken cancellation)\n        {\n            Log.LogTrace(\"Enqueuing {DataLength} bytes for sending on stream {StreamIndex}...\", data.Count, streamIndex);\n\n            PendingSend pendingSend = new PendingSend(streamIndex, data, cancellation);\n            cancellation.Register(\n                () => pendingSend.Completion.TrySetCanceled(cancellation)\n            );\n            _pendingSends.Add(pendingSend);\n\n            Log.LogTrace(\"Enqueued {DataLength} bytes for sending on stream {StreamIndex}.\", data.Count, streamIndex);\n\n            return pendingSend.Completion.Task;\n        }\n\n        /// <summary>\n        ///     Receive incoming data from the WebSocket.\n        /// </summary>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the pump's operation.\n        /// </returns>\n        async Task ReceivePump()\n        {\n            // Capture our cancellation token so it works even if the source is disposed.\n            CancellationToken cancellation = Cancellation;\n\n            await Task.Yield();\n\n            Log.LogTrace(\"Message-receive pump started.\");\n\n            ArraySegment<byte> buffer = ArraySegment<byte>.Empty;\n\n            try\n            {\n                while (Socket.State == WebSocketState.Open)\n                {\n                    using (await _receiveMutex.LockAsync(cancellation).ConfigureAwait(false))\n                    {\n                        buffer = CreateReadBuffer();\n\n                        WebSocketReceiveResult readResult = await Socket.ReceiveAsync(buffer, cancellation).ConfigureAwait(false);\n                        if (readResult.MessageType == WebSocketMessageType.Close)\n                        {\n                            Log.LogDebug(\"Received first half of connection-close handshake (Status = {CloseStatus}, Description = {CloseStatusDescription}).\",\n                                readResult.CloseStatus.Value,\n                                readResult.CloseStatusDescription\n                            );\n\n                            Log.LogDebug(\"Sending second half of connection-close handshake...\");\n                            await Socket.CloseAsync(readResult.CloseStatus.Value, readResult.CloseStatusDescription, cancellation);\n                            Log.LogDebug(\"Sent second half of connection-close handshake.\");\n\n                            _closeCompletion.TrySetResult(null);\n\n                            return;\n                        }\n\n                        if (readResult.Count <= 1 && readResult.EndOfMessage)\n                        {\n                            // Effectively an empty packet; ignore.\n                            buffer = buffer.Release();\n\n                            continue;\n                        }\n\n                        // Extract stream index.\n                        byte streamIndex = buffer[0];\n\n                        Log.LogTrace(\"Received {DataLength} bytes for stream {StreamIndex} (EndOfMessage = {EndOfMessage}).\",\n                            readResult.Count - 1,\n                            streamIndex,\n                            readResult.EndOfMessage\n                        );\n                        \n                        K8sMultiplexedReadStream readStream;\n                        if (!_inputStreams.TryGetValue(streamIndex, out readStream))\n                        {\n                            Log.LogTrace(\"Stream {StreamIndex} is not registered; discarding data...\", streamIndex);\n\n                            await DiscardMessageRemainder(buffer, cancellation).ConfigureAwait(false);\n                            buffer = buffer.Release();\n\n                            Log.LogTrace(\"Ignored remaining data for stream {StreamIndex}.\", streamIndex);\n\n                            continue;\n                        }\n                        \n                        if (readStream.IsCompleted)\n                        {\n                            Log.LogTrace(\"Stream {StreamIndex} is completed; discarding data...\", streamIndex);\n\n                            await DiscardMessageRemainder(buffer, cancellation).ConfigureAwait(false);\n                            buffer = buffer.Release();\n\n                            Log.LogTrace(\"Ignored remaining data for completed stream {StreamIndex}.\", streamIndex);\n\n                            continue;\n                        }\n\n                        // Skip over stream index.\n                        buffer = buffer.Slice(offset: 1, count: readResult.Count - 1);\n\n                        readStream.AddPendingRead(buffer);\n\n                        // Capture any remaining data for this stream segment.\n                        while (!readResult.EndOfMessage)\n                        {\n                            buffer = CreateReadBuffer();\n                            readResult = await Socket.ReceiveAsync(buffer, cancellation).ConfigureAwait(false);\n                            if (readResult.Count == 0 || readResult.MessageType != WebSocketMessageType.Binary)\n                            {\n                                buffer = buffer.Release();\n\n                                break;\n                            }\n\n                            Log.LogTrace(\"Received {DataLength} additional bytes for stream {StreamIndex} (EndOfMessage = {EndOfMessage}).\",\n                                readResult.Count,\n                                streamIndex,\n                                readResult.EndOfMessage\n                            );\n\n                            if (readStream.IsCompleted)\n                            {\n                                Log.LogTrace(\"Stream {StreamIndex} is completed; discarding remaining data...\", streamIndex);\n\n                                await DiscardMessageRemainder(buffer, cancellation).ConfigureAwait(false);\n                                buffer = buffer.Release();\n\n                                Log.LogTrace(\"Ignored remaining data for completed stream {StreamIndex}.\", streamIndex);\n\n                                break;\n                            }\n\n                            buffer = buffer.Slice(readResult.Count);\n                            readStream.AddPendingRead(buffer);\n                        }\n                    }\n                }\n\n                foreach (K8sMultiplexedReadStream readStream in _inputStreams.Values)\n                    readStream.Complete();\n            }\n            catch (OperationCanceledException)\n            {\n                // Clean termination.\n                \n                foreach (K8sMultiplexedReadStream readStream in _inputStreams.Values)\n                    readStream.Complete();\n            }\n            catch (WebSocketException websocketError) when (websocketError.WebSocketErrorCode == WebSocketError.ConnectionClosedPrematurely)\n            {\n                // Connection closed by remote host without completing the close handshake. Consider writing a Trace log entry noting this fact.\n\n                foreach (K8sMultiplexedReadStream readStream in _inputStreams.Values)\n                    readStream.Fault(websocketError);\n            }\n            catch (Exception unexpectedError)\n            {\n                Log.LogError(EventIds.K8sMultiplexer.ReceivePumpError, unexpectedError, \"The message-receive pump encountered an unexpected error.\");\n\n                foreach (K8sMultiplexedReadStream readStream in _inputStreams.Values)\n                    readStream.Fault(unexpectedError);\n            }\n            finally\n            {\n                if (buffer.Array != null)\n                    ArrayPool<byte>.Shared.Return(buffer.Array);\n\n                Log.LogTrace(\"Message-receive pump terminated.\");\n            }\n        }\n\n        /// <summary>\n        ///     Send outgoing data to the WebSocket.\n        /// </summary>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the pump's operation.\n        /// </returns>\n        async Task SendPump()\n        {\n            // Capture our cancellation token so it works even if the source is disposed.\n            CancellationToken cancellation = Cancellation;\n\n            await Task.Yield();\n\n            Log.LogTrace(\"Message-send pump started.\");\n\n            try\n            {\n                while (!cancellation.IsCancellationRequested && Socket.State == WebSocketState.Open)\n                {\n                    PendingSend pendingSend;\n                    if (_pendingSends.TryTake(out pendingSend, Timeout.Infinite, cancellation) )\n                    {\n                        using (CancellationTokenSource linkedCancellation = CancellationTokenSource.CreateLinkedTokenSource(cancellation, pendingSend.Cancellation))\n                        using (await _sendMutex.LockAsync(linkedCancellation.Token).ConfigureAwait(false))\n                        {\n                            byte[] dataWithPrefix = ArrayPool<byte>.Shared.Rent(pendingSend.Data.Count + 1);\n\n                            try\n                            {\n                                dataWithPrefix[0] = pendingSend.StreamIndex;\n                                Array.Copy(pendingSend.Data.Array, pendingSend.Data.Offset, dataWithPrefix, 1, pendingSend.Data.Count);\n                                \n                                var sendBuffer = new ArraySegment<byte>(dataWithPrefix, 0, pendingSend.Data.Count + 1);\n\n                                await Socket.SendAsync(sendBuffer,\n                                    messageType: WebSocketMessageType.Binary,\n                                    endOfMessage: true,\n                                    cancellationToken: linkedCancellation.Token\n                                ).ConfigureAwait(false);\n\n                                pendingSend.Completion.TrySetResult(null);\n                            }\n                            catch (OperationCanceledException sendCancelled) when (sendCancelled.CancellationToken == linkedCancellation.Token)\n                            {\n                                pendingSend.Completion.TrySetCanceled(sendCancelled.CancellationToken);\n                            }\n                            catch (Exception writeFailed)\n                            {\n                                pendingSend.Completion.TrySetException(writeFailed);\n                            }\n                            finally\n                            {\n                                ArrayPool<byte>.Shared.Return(dataWithPrefix, clearArray: true);\n                            }\n                        }\n                    }\n                }\n            }\n            catch (OperationCanceledException canceled) when (canceled.CancellationToken == cancellation)\n            {\n                // Clean termination.\n            }\n            catch (Exception unexpectedError)\n            {\n                Log.LogError(EventIds.K8sMultiplexer.SendPumpError, unexpectedError, \"The message-send pump encountered an unexpected error.\");\n            }\n            finally\n            {\n                Log.LogTrace(\"Message-receive pump terminated.\");\n            }\n        }\n\n        /// <summary>\n        ///     Rent a buffer from the pool for reading from the transport.\n        /// </summary>\n        /// <returns>\n        ///     The buffer, as an <see cref=\"ArraySegment{T}\"/>.\n        /// </returns>\n        ArraySegment<byte> CreateReadBuffer() => new ArraySegment<byte>(\n            ArrayPool<byte>.Shared.Rent(minimumLength: DefaultBufferSize),\n            offset: 0,\n            count: DefaultBufferSize\n        );\n\n        /// <summary>\n        ///     Asynchronously discard the remainder of an incoming message from the underlying WebSocket.\n        /// </summary>\n        /// <param name=\"buffer\">\n        ///     The buffer used to receive data.\n        /// </param>\n        /// <param name=\"cancellation\">\n        ///     A <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        async Task DiscardMessageRemainder(ArraySegment<byte> buffer, CancellationToken cancellation)\n        {\n            WebSocketReceiveResult readResult = readResult = await Socket.ReceiveAsync(buffer, cancellation).ConfigureAwait(false);\n            while (!readResult.EndOfMessage)\n                readResult = await Socket.ReceiveAsync(buffer, cancellation).ConfigureAwait(false);\n        }\n\n        /// <summary>\n        ///     Represents a pending send operation.\n        /// </summary>\n        class PendingSend // TODO: Include stream index here and let the multiplexer prepend it instead of doing it in the write-stream.\n        {\n            /// <summary>\n            ///     Create a new <see cref=\"PendingSend\"/>.\n            /// </summary>\n            /// <param name=\"streamIndex\">\n            ///     The index of the target stream.\n            /// </param>\n            /// <param name=\"data\">\n            ///     The data (including stream-index prefix) to be written to the web socket.\n            /// </param>\n            /// <param name=\"cancellation\">\n            ///     A cancellation token to that can be used to cancel the send operation.\n            /// </param>\n            public PendingSend(byte streamIndex, ArraySegment<byte> data, CancellationToken cancellation)\n            {\n                if (data.Array == null)\n                    throw new ArgumentNullException(nameof(data));\n\n                StreamIndex = streamIndex;\n                Data = data;\n                Cancellation = cancellation;\n            }\n\n            /// <summary>\n            ///     The index of the target stream.\n            /// </summary>\n            public byte StreamIndex { get; }\n\n            /// <summary>\n            ///     The data (including stream-index prefix) to be written to the web socket.\n            /// </summary>\n            public ArraySegment<byte> Data { get; }\n\n            /// <summary>\n            ///     A cancellation token to that can be used to cancel the send operation.\n            /// </summary>\n            public CancellationToken Cancellation { get; }\n\n            /// <summary>\n            ///     A <see cref=\"TaskCompletionSource{TResult}\"/> used to represent the asynchronous send operation.\n            /// </summary>\n            public TaskCompletionSource<object> Completion { get; } = new TaskCompletionSource<object>();\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/K8sMultiplexerChannelExtensions.cs",
    "content": "using System;\nusing System.IO;\n\nnamespace KubeClient.Extensions.WebSockets\n{\n    /// <summary>\n    ///     Channel-related extension methods for <see cref=\"K8sMultiplexer\"/>.\n    /// </summary>\n    public static class K8sMultiplexerChannelExtensions\n    {\n        /// <summary>\n        ///     Get an output stream representing process STDIN.\n        /// </summary>\n        /// <param name=\"multiplexer\">\n        ///     The Kubernetes channel multiplexer.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"Stream\"/>, or <c>null</c> if the STDIN stream is not available.\n        /// </returns>\n        public static Stream GetStdIn(this K8sMultiplexer multiplexer)\n        {\n            if (multiplexer == null)\n                throw new ArgumentNullException(nameof(multiplexer));\n            \n            return multiplexer.GetOutputStream(K8sChannel.StdIn);\n        }\n\n        /// <summary>\n        ///     Get an output stream representing process STDOUT.\n        /// </summary>\n        /// <param name=\"multiplexer\">\n        ///     The Kubernetes channel multiplexer.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"Stream\"/>, or <c>null</c> if the STDOUT stream is not available.\n        /// </returns>\n        public static Stream GetStdOut(this K8sMultiplexer multiplexer)\n        {\n            if (multiplexer == null)\n                throw new ArgumentNullException(nameof(multiplexer));\n            \n            return multiplexer.GetInputStream(K8sChannel.StdOut);\n        }\n\n        /// <summary>\n        ///     Get an output stream representing process STDERR.\n        /// </summary>\n        /// <param name=\"multiplexer\">\n        ///     The Kubernetes channel multiplexer.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"Stream\"/>, or <c>null</c> if the STDERR stream is not available.\n        /// </returns>\n        public static Stream GetStdErr(this K8sMultiplexer multiplexer)\n        {\n            if (multiplexer == null)\n                throw new ArgumentNullException(nameof(multiplexer));\n            \n            return multiplexer.GetInputStream(K8sChannel.StdErr);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/KubeClient.Extensions.WebSockets.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n\n    <Description>WebSockets support for KubeClient</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n      <ProjectReference Include=\"../KubeClient/KubeClient.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n      <PackageReference Include=\"Nito.AsyncEx.Coordination\" Version=\"5.1.2\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/KubeClientExtensions.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Net.Security;\nusing System.Net.WebSockets;\nusing System.Reflection;\nusing System.Security.Cryptography.X509Certificates;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient\n{\n    using Extensions.WebSockets;\n    using Http;\n\n    /// <summary>\n    ///     WebSockets extension methods for <see cref=\"KubeClient\"/>.\n    /// </summary>\n    public static class KubeClientExtensions\n    {\n        /// <summary>\n        ///     Apply client web-socket options from the specified Kubernetes API client.\n        /// </summary>\n        /// <param name=\"socketOptions\">\n        ///     The <see cref=\"ClientWebSocketOptions\"/> to configure.\n        /// </param>\n        /// <param name=\"client\">\n        ///     The <see cref=\"IKubeApiClient\"/>.\n        /// </param>\n        /// <exception cref=\"ArgumentNullException\"></exception>\n        public static void ApplyClientOptions(this  ClientWebSocketOptions socketOptions, IKubeApiClient client)\n        {\n            if (socketOptions == null)\n                throw new ArgumentNullException(nameof(socketOptions));\n\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            KubeClientOptions clientOptions = client.GetClientOptions();\n\n            if (!String.IsNullOrWhiteSpace(clientOptions.AccessToken))\n                socketOptions.SetRequestHeader(\"Authorization\", $\"Bearer {clientOptions.AccessToken}\");\n\n            if (clientOptions.ClientCertificate != null)\n                socketOptions.ClientCertificates.Add(clientOptions.ClientCertificate);\n\n            if (clientOptions.CertificationAuthorityCertificate != null)\n            {\n                socketOptions.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>\n                {\n                    if (sslPolicyErrors != SslPolicyErrors.RemoteCertificateChainErrors)\n                        return false;\n\n                    try\n                    {\n                        using (X509Chain certificateChain = new X509Chain())\n                        {\n                            certificateChain.ChainPolicy.ExtraStore.Add(clientOptions.CertificationAuthorityCertificate);\n                            certificateChain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;\n                            certificateChain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;\n\n                            return certificateChain.Build(\n                                (X509Certificate2)certificate\n                            );\n                        }\n                    }\n                    catch (Exception chainException)\n                    {\n                        ILoggerFactory loggerFactory = clientOptions.LoggerFactory;\n                        if (loggerFactory != null)\n                        {\n                            loggerFactory.CreateLogger(typeof(KubeClientExtensions))\n                                .LogError(chainException, \"Failed to build X.509 certificate chain for remote certificate.\");\n                        }\n                        else\n                            Debug.WriteLine(chainException);\n\n                        return false;\n                    }\n                };\n            }\n            else if (clientOptions.AllowInsecure)\n                socketOptions.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;\n        }\n\n        /// <summary>\n        ///     Open a WebSocket connection using the <see cref=\"K8sChannelProtocol.V1\"/> sub-protocol.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"targetUri\">\n        ///     The target URI.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional cancellation token that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebSocket\"/>.\n        /// </returns>\n        public static Task<WebSocket> ConnectWebSocket(this IKubeApiClient client, string targetUri, CancellationToken cancellationToken = default)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (String.IsNullOrWhiteSpace(targetUri))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'targetUri'.\", nameof(targetUri));\n            \n            return client.ConnectWebSocket(new Uri(client.ApiEndPoint, targetUri), cancellationToken);\n        }\n\n        /// <summary>\n        ///     Open a WebSocket connection using the <see cref=\"K8sChannelProtocol.V1\"/> sub-protocol.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"targetUri\">\n        ///     The target URI.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional cancellation token that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebSocket\"/>.\n        /// </returns>\n        public static async Task<WebSocket> ConnectWebSocket(this IKubeApiClient client, Uri targetUri, CancellationToken cancellationToken = default)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (targetUri == null)\n                throw new ArgumentNullException(nameof(targetUri));\n\n            if (!targetUri.IsAbsoluteUri)\n                targetUri = new Uri(client.ApiEndPoint, targetUri);\n            \n            UriBuilder targetUriBuilder = new UriBuilder(targetUri);\n            switch (targetUriBuilder.Scheme)\n            {\n                case \"ws\":\n                case \"wss\":\n                {\n                    break;\n                }\n                case \"http\":\n                {\n                    targetUriBuilder.Scheme = \"ws\";\n\n                    break;\n                }\n                case \"https\":\n                {\n                    targetUriBuilder.Scheme = \"wss\";\n                    \n                    break;\n                }\n                default:\n                {\n                    throw new ArgumentException($\"Target URI has invalid scheme '{targetUriBuilder.Scheme}' (expected one of 'http', 'https', 'ws', or 'wss').\", nameof(targetUri));\n                }\n            }\n\n            targetUri = targetUriBuilder.Uri;\n\n            ClientWebSocket webSocket = new ClientWebSocket();\n\n            try\n            {\n                ClientWebSocketOptions webSocketOptions = webSocket.Options;\n                webSocketOptions.ApplyClientOptions(client);\n                webSocketOptions.AddSubProtocol(K8sChannelProtocol.V1);\n                webSocketOptions.SetBuffer(\n                    receiveBufferSize: 2048,\n                    sendBufferSize: 2048\n                );\n\n                await webSocket.ConnectAsync(targetUri, cancellationToken).ConfigureAwait(false);\n\n                return webSocket;\n            }\n            catch (Exception)\n            {\n                // Clean up.\n                using (webSocket)\n                {\n                    throw;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Open a WebSocket connection using the <see cref=\"K8sChannelProtocol.V1\"/> sub-protocol.\n        /// </summary>\n        /// <typeparam name=\"TParameters\">\n        ///     The type to use use as template parameters.\n        /// </typeparam>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"targetUri\">\n        ///     The target URI or URI template.\n        /// </param>\n        /// <param name=\"uriTemplateParameters\">\n        ///     The <typeparamref name=\"TParameters\"/> whose properties will be used as template parameters.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional cancellation token that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebSocket\"/>.\n        /// </returns>\n        public static Task<WebSocket> ConnectWebSocket<TParameters>(this IKubeApiClient client, string targetUri, TParameters uriTemplateParameters, CancellationToken cancellationToken = default)\n            where TParameters : class\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (uriTemplateParameters == null)\n                throw new ArgumentNullException(nameof(uriTemplateParameters));\n\n            var parameters = new Dictionary<string, string>();\n            \n            // yesyesyes, reflection might be \"slow\", but it's still blazingly fast compared to making a request over the network.\n\t\t\tforeach (PropertyInfo property in typeof(TParameters).GetTypeInfo().DeclaredProperties)\n\t\t\t{\n\t\t\t\t// Ignore write-only properties.\n\t\t\t\tif (!property.CanRead)\n\t\t\t\t\tcontinue;\n\t\t\t\t\t\n\t\t\t\t// Public instance properties only.\n\t\t\t\tif (!property.GetMethod.IsPublic || property.GetMethod.IsStatic)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tparameters.Add(property.Name,\n                    property.GetValue(uriTemplateParameters)?.ToString()\n                );\n\t\t\t}\n\n            return client.ConnectWebSocket(new UriTemplate(targetUri), parameters, cancellationToken);\n        }\n\n        /// <summary>\n        ///     Open a WebSocket connection using the <see cref=\"K8sChannelProtocol.V1\"/> sub-protocol.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The Kubernetes API client.\n        /// </param>\n        /// <param name=\"targetUri\">\n        ///     The template used to generate the target URI.\n        /// </param>\n        /// <param name=\"templateParameters\">\n        ///     A <see cref=\"Dictionary{TKey, TValue}\"/> containing the template parameters.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional cancellation token that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebSocket\"/>.\n        /// </returns>\n        public static Task<WebSocket> ConnectWebSocket(this IKubeApiClient client, UriTemplate targetUri, Dictionary<string, string> templateParameters, CancellationToken cancellationToken = default)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n            \n            if (targetUri == null)\n                throw new ArgumentNullException(nameof(targetUri));\n            \n            if (templateParameters == null)\n                throw new ArgumentNullException(nameof(templateParameters));\n            \n            return client.ConnectWebSocket(\n                targetUri.Populate(client.ApiEndPoint, templateParameters),\n                cancellationToken\n            );\n        }\n\n        /// <summary>\n        ///     Create a Kubernetes-style multiplexed connection over the WebSocket.\n        /// </summary>\n        /// <param name=\"websocket\">\n        ///     The <see cref=\"WebSocket\"/>.\n        /// </param>\n        /// <param name=\"inputStreamIndexes\">\n        ///     An array of bytes containing the indexes of the expected input streams.\n        /// </param>\n        /// <param name=\"outputStreamIndexes\">\n        ///     An array of bytes containing the indexes of the expected output streams.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"K8sMultiplexer\"/>.\n        /// </returns>\n        public static K8sMultiplexer Multiplexed(this WebSocket websocket, byte[] inputStreamIndexes = null, byte[] outputStreamIndexes = null, ILoggerFactory loggerFactory = null)\n        {\n            if (websocket == null)\n                throw new ArgumentNullException(nameof(websocket));\n            \n            if (!(inputStreamIndexes?.Length > 0 || outputStreamIndexes?.Length > 0))\n                throw new ArgumentException($\"Must specify at least one of {nameof(inputStreamIndexes)} or {nameof(outputStreamIndexes)}.\");\n\n            if (loggerFactory == null)\n                loggerFactory = new LoggerFactory();\n\n            K8sMultiplexer multiplexer = null;\n            try\n            {\n                multiplexer = new K8sMultiplexer(websocket, inputStreamIndexes, outputStreamIndexes, loggerFactory);\n                multiplexer.Start();\n\n                return multiplexer;\n            }\n            catch (Exception)\n            {\n                using (multiplexer)\n                    throw;\n            }\n        }\n\n        /// <summary>\n        ///     Create a Kubernetes-style multiplexed connection over the WebSocket.\n        /// </summary>\n        /// <param name=\"webSocketTask\">\n        ///     The <see cref=\"WebSocket\"/>.\n        /// </param>\n        /// <param name=\"inputStreamIndexes\">\n        ///     An array of bytes containing the indexes of the expected input streams.\n        /// </param>\n        /// <param name=\"outputStreamIndexes\">\n        ///     An array of bytes containing the indexes of the expected output streams.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"K8sMultiplexer\"/>.\n        /// </returns>\n        public static async Task<K8sMultiplexer> Multiplexed(this Task<WebSocket> webSocketTask, byte[] inputStreamIndexes = null, byte[] outputStreamIndexes = null, ILoggerFactory loggerFactory = null)\n        {\n            if (webSocketTask == null)\n                throw new ArgumentNullException(nameof(webSocketTask));\n            \n            WebSocket webSocket = await webSocketTask;\n\n            try\n            {\n                return webSocket.Multiplexed(inputStreamIndexes, outputStreamIndexes, loggerFactory);\n            }\n            catch (Exception)\n            {\n                using (webSocket)\n                    throw;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/LogEventIds.cs",
    "content": "using Microsoft.Extensions.Logging;\n\nnamespace KubeClient.Extensions.WebSockets\n{\n    /// <summary>\n    ///     Well-known event Ids for KubeClient.Extensions.WebSockets log entries.\n    /// </summary>\n    static class EventIds\n    {\n        /// <summary>\n        ///     Well-known event Ids for <see cref=\"WebSockets.K8sMultiplexer\"/>.\n        /// </summary>\n        public static class K8sMultiplexer\n        {\n            /// <summary>\n            ///     An unexpected error occurred while running the send  pump.\n            /// </summary>\n            public static EventId SendPumpError = new EventId(400, nameof(SendPumpError));\n\n            /// <summary>\n            ///     An unexpected error occurred while running the receive pump.\n            /// </summary>\n            public static EventId ReceivePumpError = new EventId(401, nameof(ReceivePumpError));\n\n            /// <summary>\n            ///     An error occurred while stopping the multiplexer during disposal.\n            /// </summary>\n            public static EventId DisposeStopError = new EventId(520, nameof(DisposeStopError));\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/ResourceClientWebSocketExtensions.cs",
    "content": "using System;\nusing System.Net.WebSockets;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient\n{\n    using Extensions.WebSockets;\n    using ResourceClients;\n\n    /// <summary>\n    ///     WebSocket-related extension methods for Kubernetes resource clients.\n    /// </summary>\n    public static class ResourceClientWebSocketExtensions\n    {\n        /// <summary>\n        ///     Start a new process in a Pod's container and open a multiplexed connection to its STDIN / STDOUT / STDERR.\n        /// </summary>\n        /// <param name=\"podClient\">\n        ///     The <see cref=\"PodClientV1\"/>.\n        /// </param>\n        /// <param name=\"podName\">\n        ///     The name of the target pod.\n        /// </param>\n        /// <param name=\"command\">\n        ///     The command to execute (command-line arguments not supported yet).\n        /// </param>\n        /// <param name=\"stdin\">\n        ///     Create an output stream connected to the target container's STDIN?\n        /// </param>\n        /// <param name=\"stdout\">\n        ///     Create an output stream connected to the target container's STDOUT?\n        /// </param>\n        /// <param name=\"stderr\">\n        ///     Create an output stream connected to the target container's STDERR?\n        /// </param>\n        /// <param name=\"tty\">\n        ///     Attach a TTY to the process?\n        /// </param>\n        /// <param name=\"container\">\n        ///     The name of the target container within the pod.\n        /// \n        ///     Optional if the pod only has a single container.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The name of the target Kubernetes namespace that contains the pod.\n        /// \n        ///     If not specified, the <see cref=\"KubeApiClient.DefaultNamespace\"/> is used.\n        /// </param>\n        /// <param name=\"cancellation\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"K8sMultiplexer\"/> that provides access to the input and output streams.\n        /// </returns>\n        public static Task<K8sMultiplexer> ExecAndConnect(this IPodClientV1 podClient, string podName, string command, bool stdin = false, bool stdout = true, bool stderr = false, bool tty = false, string container = null, string kubeNamespace = null, CancellationToken cancellation = default)\n        {\n            if (podClient == null)\n                throw new ArgumentNullException(nameof(podClient));\n\n            byte[] outputStreamIndexes = stdin ? new byte[1] { 0 } : new byte[0];\n            byte[] inputStreamIndexes;\n            if (stdout && stderr)\n                inputStreamIndexes = new byte[2] { 1, 2 };\n            else if (stdout)\n                inputStreamIndexes = new byte[1] { 1 };\n            else if (stderr)\n                inputStreamIndexes = new byte[1] { 2 };\n            else if (!stdin)\n                throw new InvalidOperationException(\"Must specify at least one of STDIN, STDOUT, or STDERR.\");\n            else\n                inputStreamIndexes = new byte[0];\n            \n            return podClient.ExecAndConnectRaw(podName, command, stdin, stdout, stderr, tty, container, kubeNamespace, cancellation)\n                .Multiplexed(inputStreamIndexes, outputStreamIndexes,\n                    loggerFactory: podClient.KubeClient.LoggerFactory\n                );\n        }\n\n        /// <summary>\n        ///     Start a new process in a Pod's container and open a WebSocket connection to its STDIN / STDOUT / STDERR.\n        /// </summary>\n        /// <param name=\"podClient\">\n        ///     The <see cref=\"PodClientV1\"/>.\n        /// </param>\n        /// <param name=\"podName\">\n        ///     The name of the target pod.\n        /// </param>\n        /// <param name=\"command\">\n        ///     The command to execute (command-line arguments not supported yet).\n        /// </param>\n        /// <param name=\"stdin\">\n        ///     Create an output stream connected to the target container's STDIN?\n        /// </param>\n        /// <param name=\"stdout\">\n        ///     Create an output stream connected to the target container's STDOUT?\n        /// </param>\n        /// <param name=\"stderr\">\n        ///     Create an output stream connected to the target container's STDERR?\n        /// </param>\n        /// <param name=\"tty\">\n        ///     Attach a TTY to the process?\n        /// </param>\n        /// <param name=\"container\">\n        ///     The name of the target container within the pod.\n        /// \n        ///     Optional if the pod only has a single container.\n        /// </param>\n        /// <param name=\"kubeNamespace\">\n        ///     The name of the target Kubernetes namespace that contains the pod.\n        /// \n        ///     If not specified, the <see cref=\"KubeApiClient.DefaultNamespace\"/> is used.\n        /// </param>\n        /// <param name=\"cancellation\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     The connected <see cref=\"WebSocket\"/>.\n        /// </returns>\n        public static async Task<WebSocket> ExecAndConnectRaw(this IPodClientV1 podClient, string podName, string command, bool stdin = false, bool stdout = true, bool stderr = false, bool tty = false, string container = null, string kubeNamespace = null, CancellationToken cancellation = default)\n        {\n            if (podClient == null)\n                throw new ArgumentNullException(nameof(podClient));\n\n            var uriTemplateParameters = new\n            {\n                PodName = podName,\n                Command = command,\n                StdIn = stdin,\n                StdOut = stdout,\n                StdErr = stderr,\n                TTY = tty,\n                Container = container,\n                KubeNamespace = kubeNamespace ?? podClient.KubeClient.DefaultNamespace\n            };\n\n            return await podClient.KubeClient.ConnectWebSocket(\n                \"api/v1/namespaces/{KubeNamespace}/pods/{PodName}/exec?stdin={StdIn?}&stdout={StdOut?}&stderr={StdErr?}&tty={TTY?}&command={Command}&container={Container?}\",\n                uriTemplateParameters,\n                cancellation\n            );\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/Streams/K8sMultiplexedReadStream.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing Nito.AsyncEx;\nusing System;\nusing System.Buffers;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Extensions.WebSockets.Streams\n{\n    /// <summary>\n    ///     Represents a single input substream within a Kubernetes-style multiplexed stream.\n    /// </summary>\n    sealed class K8sMultiplexedReadStream\n        : Stream\n    {\n        /// <summary>\n        ///     A lock used to synchronise access to reader state.\n        /// </summary>\n        readonly AsyncLock _mutex;\n\n        /// <summary>\n        ///     A condition variable indicating availability of data to read or the stream's completion.\n        /// </summary>\n        readonly AsyncConditionVariable _completedOrDataAvailable;\n\n        /// <summary>\n        ///     The stream's queue of pending read operations.\n        /// </summary>\n        readonly Queue<PendingRead> _pendingReads = new Queue<PendingRead>();\n\n        /// <summary>\n        ///     The number of bytes currently pending in the stream.\n        /// </summary>\n        int _bytesPending;\n\n        /// <summary>\n        ///     If the stream is in the faulted completed or faulted state, this caches the task representing that state.\n        /// </summary>\n        Task<int> _completion;\n\n        /// <summary>\n        ///     Create a new <see cref=\"K8sMultiplexedReadStream\"/>.\n        /// </summary>\n        /// <param name=\"streamIndex\">\n        ///     The Kubernetes stream index of the target input stream.\n        /// </param>\n        /// <param name=\"maxPendingBytes\">\n        ///     The maximum number of pending bytes that the stream can hold.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     The <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        public K8sMultiplexedReadStream(byte streamIndex, int maxPendingBytes, ILoggerFactory loggerFactory)\n        {\n            if (maxPendingBytes < 1)\n                throw new ArgumentOutOfRangeException(nameof(maxPendingBytes), maxPendingBytes, \"Maximum number of pending bytes cannot be less than 1.\");\n\n            _mutex = new AsyncLock();\n            _completedOrDataAvailable = new AsyncConditionVariable(_mutex);\n\n            StreamIndex = streamIndex;\n            MaxPendingBytes = maxPendingBytes;\n            Log = loggerFactory.CreateLogger<K8sMultiplexedReadStream>();\n        }\n\n        /// <summary>\n        ///     Dispose of resources used by the <see cref=\"K8sMultiplexedReadStream\"/>.\n        /// </summary>\n        /// <param name=\"disposing\">\n        ///     Explicit disposal?\n        /// </param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && !IsDisposed)\n            {\n                using (_mutex.Lock())\n                {\n                    IsDisposed = true;\n\n                    _completedOrDataAvailable.NotifyAll(); // Release any tasks that are waiting.\n\n                    // Ensure we don't leak memory.\n                    foreach (PendingRead pendingRead in _pendingReads)\n                        pendingRead.Release();\n\n                    _pendingReads.Clear();\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Check if the stream has been disposed.\n        /// </summary>\n        void CheckDisposed()\n        {\n            if (IsDisposed)\n                throw new ObjectDisposedException(GetType().FullName);\n        }\n\n        /// <summary>\n        ///     The Kubernetes stream index of the target input stream.\n        /// </summary>\n        public byte StreamIndex { get; }\n\n        /// <summary>\n        ///     The maximum number of pending bytes that the stream can hold.\n        /// </summary>\n        public int MaxPendingBytes { get; }\n\n        /// <summary>\n        ///     Has the stream been disposed?\n        /// </summary>\n        public bool IsDisposed { get; private set; }\n\n        /// <summary>\n        ///     Does the stream support reading?\n        /// </summary>\n        public override bool CanRead => true;\n\n        /// <summary>\n        ///     Does the stream support seeking?\n        /// </summary>\n        public override bool CanSeek => false;\n\n        /// <summary>\n        ///     Does the stream support writing?\n        /// </summary>\n        public override bool CanWrite => false;\n\n        /// <summary>\n        ///     The stream length (not supported).\n        /// </summary>\n        public override long Length => throw new NotSupportedException(\"The stream does not support seeking.\");\n\n        /// <summary>\n        ///     The stream position (not supported).\n        /// </summary>\n        public override long Position { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }\n\n        /// <summary>\n        ///     Is the stream in the completed state?\n        /// </summary>\n        public bool IsCompleted => _completion != null || IsDisposed;\n\n        /// <summary>\n        ///     The stream's log facility.\n        /// </summary>\n        ILogger Log { get; }\n\n        /// <summary>\n        ///     Read data from the stream.\n        /// </summary>\n        /// <param name=\"buffer\">\n        ///     The buffer to which the incoming data will be written.\n        /// </param>\n        /// <param name=\"offset\">\n        ///     The offset within the buffer to which data will be written.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The maximum number of bytes to read.\n        /// </param>\n        /// <returns>\n        ///     The number of bytes that were read from the stream.\n        /// </returns>\n        public override int Read(byte[] buffer, int offset, int count)\n        {\n            if (buffer == null)\n                throw new ArgumentNullException(nameof(buffer));\n\n            CheckDisposed();\n\n            if (IsCompleted)\n                return _completion.GetAwaiter().GetResult();\n\n            using (_mutex.Lock())\n            {\n                PendingRead pendingRead;\n                if (!_pendingReads.TryPeek(out pendingRead))\n                {\n                    // Wait for data.\n                    _completedOrDataAvailable.Wait();\n                    if (!_pendingReads.TryPeek(out pendingRead))\n                    {\n                        // If we get here, then the stream was completed, so our read should be aborted.\n                        Debug.Assert(IsCompleted, \"No pending read available, but stream is not completed.\");\n\n                        return _completion.GetAwaiter().GetResult();\n                    }\n                }\n\n                int bytesRead = pendingRead.DrainTo(buffer, offset);\n                _bytesPending -= bytesRead;\n\n                if (pendingRead.IsEmpty)\n                    Consume(pendingRead); // Source buffer has been consumed.\n\n                return bytesRead;\n            }\n        }\n\n        /// <summary>\n        ///     Asynchronously read data from the stream.\n        /// </summary>\n        /// <param name=\"buffer\">\n        ///     The buffer to which the incoming data will be written.\n        /// </param>\n        /// <param name=\"offset\">\n        ///     The offset within the buffer to which data will be written.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The maximum number of bytes to read.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     A <see cref=\"CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///     The number of bytes that were read from the stream.\n        /// </returns>\n        public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)\n        {\n            if (buffer == null)\n                throw new ArgumentNullException(nameof(buffer));\n\n            CheckDisposed();\n\n            if (IsCompleted)\n                return await _completion.ConfigureAwait(false);\n\n            PendingRead pendingRead;\n            using (await _mutex.LockAsync(cancellationToken).ConfigureAwait(false))\n            {\n                if (!_pendingReads.TryPeek(out pendingRead))\n                {\n                    // Wait for data.\n                    await _completedOrDataAvailable.WaitAsync(cancellationToken).ConfigureAwait(false);\n                    if (!_pendingReads.TryPeek(out pendingRead))\n                    {\n                        // If we get here, then the stream was completed, so our read should be aborted.\n                        Debug.Assert(IsCompleted, \"No pending read available, but stream is not completed.\");\n\n                        return await _completion.ConfigureAwait(false);\n                    }\n                }\n\n                // Last chance to cancel non-destructively.\n                cancellationToken.ThrowIfCancellationRequested();\n\n                int bytesRead = pendingRead.DrainTo(buffer, offset);\n                _bytesPending -= bytesRead;\n\n                if (pendingRead.IsEmpty)\n                    Consume(pendingRead); // Source buffer has been consumed.\n\n                return bytesRead;\n            }\n        }\n\n        /// <summary>\n        ///     Flush pending data (not supported).\n        /// </summary>\n        public override void Flush() => throw new NotSupportedException(\"The stream does not support writing.\");\n\n        /// <summary>\n        ///     Seek to the specified position in the stream (not supported).\n        /// </summary>\n        /// <param name=\"offset\">\n        ///     The seek offset, relative to the specified <paramref name=\"origin\"/>.\n        /// </param>\n        /// <param name=\"origin\">\n        ///     The seek origin.\n        /// </param>\n        /// <returns>\n        ///     The new stream position.\n        /// </returns>\n        public override long Seek(long offset, SeekOrigin origin) => throw new NotSupportedException(\"Stream does not support seeking.\");\n\n        /// <summary>\n        ///     Set the stream length (not supported).\n        /// </summary>\n        /// <param name=\"value\">\n        ///     The new stream length.\n        /// </param>\n        public override void SetLength(long value) => throw new NotSupportedException(\"Stream does not support seeking.\");\n\n        /// <summary>\n        ///     Write data to the stream (not supported).\n        /// </summary>\n        /// <param name=\"buffer\">\n        ///     A buffer containing the data to write.\n        /// </param>\n        /// <param name=\"offset\">\n        ///     The offset, within the buffer, of the data to write.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The number of bytes to write.\n        /// </param>\n        public override void Write(byte[] buffer, int offset, int count) => throw new NotSupportedException(\"Stream does not support writing.\");\n\n        /// <summary>\n        ///     Make data available to be read from the stream.\n        /// </summary>\n        /// <param name=\"data\">\n        ///     An <see cref=\"ArraySegment{T}\"/> representing the data.\n        /// </param>\n        internal void AddPendingRead(ArraySegment<byte> data)\n        {\n            if (data.Array == null)\n                throw new ArgumentNullException(nameof(data));\n\n            using (_mutex.Lock())\n            {\n                if (IsDisposed)\n                {\n                    ArrayPool<byte>.Shared.Return(data.Array, clearArray: true);\n\n                    return;\n                }\n\n                if (_bytesPending + data.Count > MaxPendingBytes)\n                {\n                    Fault(new IOException(\n                        $\"Capacity of read buffer for stream {StreamIndex} ({MaxPendingBytes} bytes) has been exceeded.\"\n                    ));\n\n                    ArrayPool<byte>.Shared.Return(data.Array, clearArray: true);\n\n                    return;\n                }\n\n                _pendingReads.Enqueue(new PendingRead(data));\n                _bytesPending += data.Count;\n                _completedOrDataAvailable.Notify();\n            }\n        }\n\n        /// <summary>\n        ///     Mark the stream as completed.\n        /// </summary>\n        internal void Complete()\n        {\n            using (_mutex.Lock())\n            {\n                if (IsDisposed)\n                    return;\n\n                if (_completion == null)\n                {\n                    _completion = Task.FromResult(0);\n                \n                    Log.LogTrace(\"Marked read stream {StreamIndex} as successfully completed.\", StreamIndex);\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Mark the stream as faulted.\n        /// </summary>\n        /// <param name=\"exception\">\n        ///     An <see cref=\"Exception\"/> representing the cause of the fault.\n        /// </param>\n        internal void Fault(Exception exception)\n        {\n            if (exception == null)\n                throw new ArgumentNullException(nameof(exception));\n\n            using (_mutex.Lock())\n            {\n                if (IsDisposed)\n                    return;\n                \n                if (_completion == null)\n                {\n                    _completion = Task.FromException<int>(exception);\n\n                    Log.LogTrace(\"Marked read stream {StreamIndex} as faulted ({ExceptionType}).\", StreamIndex, exception.GetType().FullName);\n                }    \n            }\n        }\n\n        /// <summary>\n        ///     Consume the a pending read, removing it from the queue.\n        /// </summary>\n        /// <remarks>\n        ///     The <see cref=\"PendingRead\"/> must be at the head of the <see cref=\"_pendingReads\"/> queue.\n        /// </remarks>\n        void Consume(PendingRead pending)\n        {\n            if (pending == null)\n                throw new ArgumentNullException(nameof(pending));\n\n            PendingRead consumed;\n            bool wasConsumed = _pendingReads.TryDequeue(out consumed);\n            Debug.Assert(wasConsumed, \"Attempted to consume pending read when none was available.\");\n\n            // AF: This should not happen; if it does, then I've fucked up somewhere and we have a race condition.\n            Debug.Assert(ReferenceEquals(consumed, pending),\n                \"Consumed a pending read that was not at the head of the queue.\"                \n            );\n        }\n\n        /// <summary>\n        ///     Represents a pending read operation.\n        /// </summary>\n        class PendingRead\n        {\n            /// <summary>\n            ///     The data that will be returned by the pending read.\n            /// </summary>\n            ArraySegment<byte> _data;\n\n            /// <summary>\n            ///     Create a new <see cref=\"PendingRead\"/>.\n            /// </summary>\n            /// <param name=\"data\">\n            ///     The data that will be returned by the pending read.\n            /// </param>\n            public PendingRead(ArraySegment<byte> data)\n            {\n                if (data.Array == null)\n                    throw new ArgumentNullException(nameof(data));\n\n                _data = data;\n            }\n\n            /// <summary>\n            ///     The number of bytes available to read.\n            /// </summary>\n            public int Count => _data.Count;\n\n            /// <summary>\n            ///     Has the read buffer been exhausted?\n            /// </summary>\n            public bool IsEmpty => Count == 0;\n\n            /// <summary>\n            ///     Drain the read-buffer into the specified buffer.\n            /// </summary>\n            /// <param name=\"buffer\">\n            ///     The buffer to which data will be written.\n            /// </param>\n            /// <param name=\"offset\">\n            ///     The offset within the buffer at which data will be written.\n            /// </param>\n            /// <returns>\n            ///     The number of bytes written to the buffer.\n            /// </returns>\n            public int DrainTo(byte[] buffer, int offset)\n            {\n                int bytesAvailable = _data.Count;\n                int bufferCapacity = buffer.Length - (offset + 1);\n                if (bufferCapacity <= bytesAvailable)\n                {\n                    // We still have data remaining.\n                    Array.Copy(_data.Array, _data.Offset, buffer, offset, bufferCapacity);\n                    _data = new ArraySegment<byte>(_data.Array,\n                        offset: _data.Offset + bufferCapacity,\n                        count: _data.Count - bufferCapacity\n                    );\n\n                    return bufferCapacity;\n                }\n                \n                // This is the last of our data; copy it all.\n                Array.Copy(_data.Array, _data.Offset, buffer, offset, bytesAvailable);\n\n                Release();\n\n                return bytesAvailable;\n            }\n\n            /// <summary>\n            ///     Release any the buffer (if any) held by the pending read.\n            /// </summary>\n            public void Release()\n            {\n                if (_data.Array != null)\n                {\n                    ArrayPool<byte>.Shared.Return(_data.Array, clearArray: true);\n                    _data = ArraySegment<byte>.Empty;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/Streams/K8sMultiplexedWriteStream.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Buffers;\nusing System.IO;\nusing System.Net.WebSockets;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Extensions.WebSockets.Streams\n{\n    /// <summary>\n    ///     Represents a single output substream within a Kubernetes-style multiplexed stream.\n    /// </summary>\n    sealed class K8sMultiplexedWriteStream\n        : Stream\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"K8sMultiplexedWriteStream\"/>.\n        /// </summary>\n        /// <param name=\"streamIndex\">\n        ///     The Kubernetes stream index of the target output stream.\n        /// </param>\n        /// <param name=\"sendAsync\">\n        ///     A delegate used to asynchronously send outgoing data.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     The <see cref=\"ILoggerFactory\"/> used to create loggers for client components.\n        /// </param>\n        public K8sMultiplexedWriteStream(byte streamIndex, Func<byte, ArraySegment<byte>, CancellationToken, Task> sendAsync, ILoggerFactory loggerFactory)\n        {\n            if (sendAsync == null)\n                throw new ArgumentNullException(nameof(sendAsync));\n\n            StreamIndex = streamIndex;\n            SendAsync = sendAsync;\n            Log = loggerFactory.CreateLogger<K8sMultiplexedReadStream>();\n        }\n\n        /// <summary>\n        ///     The Kubernetes stream index of the target output stream.\n        /// </summary>\n        public byte StreamIndex { get; }\n\n        /// <summary>\n        ///     A delegate used to asynchronously send outgoing data.\n        /// </summary>\n        public Func<byte, ArraySegment<byte>, CancellationToken, Task> SendAsync { get; }\n\n        /// <summary>\n        ///     Does the stream support reading?\n        /// </summary>\n        public override bool CanRead => false;\n\n        /// <summary>\n        ///     Does the stream support seeking?\n        /// </summary>\n        public override bool CanSeek => false;\n\n        /// <summary>\n        ///     Does the stream support writing?\n        /// </summary>\n        public override bool CanWrite => true;\n\n        /// <summary>\n        ///     The stream length (not supported).\n        /// </summary>\n        public override long Length => throw new NotSupportedException(\"The stream does not support seeking.\");\n\n        /// <summary>\n        ///     The stream position (not supported).\n        /// </summary>\n        public override long Position { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }\n\n        /// <summary>\n        ///     The stream's log facility.\n        /// </summary>\n        ILogger Log { get; }\n\n        /// <summary>\n        ///     Flush pending data (a no-op for this implementation).\n        /// </summary>\n        public override void Flush()\n        {\n        }\n\n        /// <summary>\n        ///     Write data to the stream.\n        /// </summary>\n        /// <param name=\"buffer\">\n        ///     A buffer containing the data to write.\n        /// </param>\n        /// <param name=\"offset\">\n        ///     The offset, within the buffer, of the data to write.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The number of bytes to write.\n        /// </param>\n        public override void Write(byte[] buffer, int offset, int count)\n        {\n            SendAsync(StreamIndex, new ArraySegment<byte>(buffer, offset, count), CancellationToken.None)\n                .GetAwaiter()\n                .GetResult();\n        }\n\n        /// <summary>\n        ///     Asynchronously write data to the stream (not supported).\n        /// </summary>\n        /// <param name=\"buffer\">\n        ///     A buffer containing the data to write.\n        /// </param>\n        /// <param name=\"offset\">\n        ///     The offset, within the buffer, of the data to write.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The number of bytes to write.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     A <see cref=\"CancellationToken\"/> that can be used to cancel the write operation.\n        /// </param>\n        public override async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)\n        {\n            await SendAsync(StreamIndex, new ArraySegment<byte>(buffer, offset, count), cancellationToken).ConfigureAwait(false);\n        }\n\n        /// <summary>\n        ///     Seek to the specified position in the stream (not supported).\n        /// </summary>\n        /// <param name=\"offset\">\n        ///     The seek offset, relative to the specified <paramref name=\"origin\"/>.\n        /// </param>\n        /// <param name=\"origin\">\n        ///     The seek origin.\n        /// </param>\n        /// <returns>\n        ///     The new stream position.\n        /// </returns>\n        public override long Seek(long offset, SeekOrigin origin) => throw new NotSupportedException(\"Stream does not support seeking.\");\n\n        /// <summary>\n        ///     Set the stream length (not supported).\n        /// </summary>\n        /// <param name=\"value\">\n        ///     The new stream length.\n        /// </param>\n        public override void SetLength(long value) => throw new NotSupportedException(\"Stream does not support seeking.\");\n\n        /// <summary>\n        ///     Read data from the stream (not supported).\n        /// </summary>\n        /// <param name=\"buffer\">\n        ///     The buffer to which the incoming data will be written.\n        /// </param>\n        /// <param name=\"offset\">\n        ///     The offset within the buffer to which data will be written.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The maximum number of bytes to read.\n        /// </param>\n        /// <returns>\n        ///     The number of bytes that were read from the stream.\n        /// </returns>\n        public override int Read(byte[] buffer, int offset, int count) => throw new NotSupportedException(\"Stream does not support reading.\");\n    }\n}"
  },
  {
    "path": "src/KubeClient.Extensions.WebSockets/Utilities.cs",
    "content": "using System;\nusing System.Buffers;\nusing System.Threading;\n\nnamespace KubeClient.Extensions.WebSockets\n{\n    /// <summary>\n    ///     Helper functions.\n    /// </summary>\n    static class Utilities\n    {\n        /// <summary>\n        ///     Create a new array segment, dropping the specified number of elements from the start of the array segment.\n        /// </summary>\n        /// <param name=\"arraySegment\">\n        ///     The array segment.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The number of elements to drop.\n        /// </param>\n        /// <returns>\n        ///     The new array segment.\n        /// </returns>\n        public static ArraySegment<T> DropLeft<T>(this ArraySegment<T> arraySegment, int count)\n        {\n            if (count > arraySegment.Count)\n                throw new ArgumentOutOfRangeException(nameof(count), count, \"Cannot drop more elements than the array segment contains.\");\n\n            return new ArraySegment<T>(arraySegment.Array,\n                offset: arraySegment.Offset + 1,\n                count: arraySegment.Count - count\n            );\n        }\n\n        /// <summary>\n        ///     Create a new array segment, dropping the specified number of elements from the start of the array segment.\n        /// </summary>\n        /// <param name=\"arraySegment\">\n        ///     The array segment.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The number of elements to drop.\n        /// </param>\n        /// <returns>\n        ///     The new array segment.\n        /// </returns>\n        public static ArraySegment<T> DropRight<T>(this ArraySegment<T> arraySegment, int count)\n        {\n            if (count > arraySegment.Count)\n                throw new ArgumentOutOfRangeException(nameof(count), count, \"Cannot drop more elements than the array segment contains.\");\n\n            return new ArraySegment<T>(arraySegment.Array,\n                offset: arraySegment.Offset,\n                count: arraySegment.Count - count\n            );\n        }\n\n        /// <summary>\n        ///     Create a new array segment containing the specified elements from the start of the array segment.\n        /// </summary>\n        /// <param name=\"arraySegment\">\n        ///     The array segment.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The number of elements the slice will contain.\n        /// </param>\n        /// <returns>\n        ///     The new array segment.\n        /// </returns>\n        public static ArraySegment<T> Slice<T>(this ArraySegment<T> arraySegment, int count) => arraySegment.Slice(arraySegment.Offset, count);\n\n        /// <summary>\n        ///     Create a new array segment containing the specified elements from the array segment.\n        /// </summary>\n        /// <param name=\"arraySegment\">\n        ///     The array segment.\n        /// </param>\n        /// <param name=\"offset\">\n        ///     The offset, within the array segment, where the slice will start.\n        /// </param>\n        /// <param name=\"count\">\n        ///     The number of elements the slice will contain.\n        /// </param>\n        /// <returns>\n        ///     The new array segment.\n        /// </returns>\n        public static ArraySegment<T> Slice<T>(this ArraySegment<T> arraySegment, int offset, int count)\n        {\n            if (offset < 0 || offset >= arraySegment.Count)\n                throw new ArgumentOutOfRangeException(nameof(offset), offset, \"Offset must be within the bounds of the array.\");\n\n            if ((offset + count) > arraySegment.Count)\n                throw new ArgumentOutOfRangeException(nameof(count), count, \"Slice cannot contain more elements than the source array segment.\");\n\n            return new ArraySegment<T>(arraySegment.Array, offset, count);\n        }\n\n        /// <summary>\n        ///     Return the underlying array to the shared pool.\n        /// </summary>\n        /// <param name=\"arraySegment\">\n        ///     The array segment.\n        /// </param>\n        /// <param name=\"clearArray\">\n        ///     Initialise the array's elements to their default values?\n        /// </param>\n        /// <returns>\n        ///     <see cref=\"ArraySegment{T}.Empty\"/>.\n        /// </returns>\n        public static ArraySegment<T> Release<T>(this ArraySegment<T> arraySegment, bool clearArray = false)\n        {\n            if (arraySegment.Array != null)\n                ArrayPool<T>.Shared.Return(arraySegment.Array, clearArray);\n\n            return ArraySegment<T>.Empty;\n        }\n\n        /// <summary>\n        ///     Block the current thread until the <see cref=\"WaitHandle\"/> receives a signal or the specified <see cref=\"CancellationToken\"/> is canceled.\n        /// </summary>\n        /// <param name=\"waitHandle\">\n        ///     The <see cref=\"WaitHandle\"/>.\n        /// </param>\n        /// <param name=\"cancellation\">\n        ///     A <see cref=\"CancellationToken\"/> can can be used to cancel the wait.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"WaitHandle\"/> received a signal; <c>false</c>, if the <see cref=\"CancellationToken\"/> is canceled.\n        /// </returns>\n        public static bool WaitOne(this WaitHandle waitHandle, CancellationToken cancellation)\n        {\n            if (!cancellation.CanBeCanceled) // e.g. CancellationToken.None.\n                return waitHandle.WaitOne();\n\n            int signaledHandleIndex = WaitHandle.WaitAny(new[] { waitHandle, cancellation.WaitHandle });\n\n            return signaledHandleIndex == 0; // WaitAny returns the index of the signaled wait handle.\n        }\n\n        /// <summary>\n        ///     Block the current thread until the <see cref=\"WaitHandle\"/> receives a signal, the specified timeout period has elapsed, or the specified <see cref=\"CancellationToken\"/> is canceled.\n        /// </summary>\n        /// <param name=\"waitHandle\">\n        ///     The <see cref=\"WaitHandle\"/>.\n        /// </param>\n        /// <param name=\"timeout\">\n        ///     The span of time to wait for a signal.\n        /// </param>\n        /// <param name=\"cancellation\">\n        ///     A <see cref=\"CancellationToken\"/> can can be used to cancel the wait.\n        /// </param>\n        /// <returns>\n        ///     <c>true</c>, if the <see cref=\"WaitHandle\"/> received a signal; <c>false</c>, if the <paramref name=\"timeout\"/> expires or the <see cref=\"CancellationToken\"/> is canceled.\n        /// </returns>\n        public static bool WaitOne(this WaitHandle waitHandle, TimeSpan timeout, CancellationToken cancellation)\n        {\n            if (!cancellation.CanBeCanceled) // e.g. CancellationToken.None.\n                return waitHandle.WaitOne(timeout);\n\n            int signaledHandleIndex = WaitHandle.WaitAny(new[] { waitHandle, cancellation.WaitHandle }, timeout);\n\n            return signaledHandleIndex == 0; // WaitAny returns the index of the signaled wait handle.\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Http/AssemblyVisiblity.cs",
    "content": "﻿using System.Runtime.CompilerServices;\n\n[assembly: InternalsVisibleTo(\"KubeClient.Tests\")]\n"
  },
  {
    "path": "src/KubeClient.Http/ClientExtensions.Streamed.cs",
    "content": "﻿using System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\tInvocation-related extension methods for <see cref=\"HttpClient\"/>s that use an <see cref=\"HttpRequest\"/>.\n    /// </summary>\n    public static partial class ClientExtensions\n    {\n\t\t#region Invoke (streamed)\n\n\t\t/// <summary>\n        ///     Asynchronously execute a request as a streamed HTTP GET.\n        /// </summary>\n        /// <param name=\"httpClient\">\n        ///     The HTTP client.\n        /// </param>\n        /// <param name=\"request\">\n        ///     The <see cref=\"HttpRequest\"/> to execute.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"CancellationToken\"/> that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     An <see cref=\"HttpResponseMessage\"/> representing the response.\n        /// </returns>\n        public static async Task<HttpResponseMessage> GetStreamedAsync(this HttpClient httpClient, HttpRequest request, CancellationToken cancellationToken = default)\n        {\n            using (HttpRequestMessage requestMessage = request.BuildRequestMessage(HttpMethod.Get, baseUri: httpClient.BaseAddress))\n            {\n\t\t\t\trequestMessage.MarkAsStreamed();\n\n                return await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead);\n            }\n        }\n\n\t\t#endregion // Invoke (streamed)\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/ClientExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\tInvocation-related extension methods for <see cref=\"HttpClient\"/>s that use an <see cref=\"HttpRequest\"/>.\n    /// </summary>\n    public static partial class ClientExtensions\n    {\n\t\t#region Invoke\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP HEAD.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> HeadAsync(this HttpClient httpClient, HttpRequest request, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Head, cancellationToken: cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP GET.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> GetAsync(this HttpClient httpClient, HttpRequest request, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Get, cancellationToken: cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP POST.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"postBody\">\n\t\t///\t\tOptional <see cref=\"HttpContent\"/> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PostAsync(this HttpClient httpClient, HttpRequest request, HttpContent postBody = null, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Post, postBody, cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP PUT.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"putBody\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PutAsync(this HttpClient httpClient, HttpRequest request, HttpContent putBody, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (putBody == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(putBody));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Put, putBody, cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP PATCH.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"patchBody\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PatchAsync(this HttpClient httpClient, HttpRequest request, HttpContent patchBody, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (patchBody == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(patchBody));\n\n\t\t\treturn await httpClient.SendAsync(request, OtherHttpMethods.Patch, patchBody, cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP DELETE.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> DeleteAsync(this HttpClient httpClient, HttpRequest request, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Delete, cancellationToken: cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute the request using the specified HTTP method.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tAn <see cref=\"HttpMethod\"/> representing the method to use.\n\t\t/// </param>\n\t\t/// <param name=\"body\">\n\t\t///\t\tOptional <see cref=\"HttpContent\"/> representing the request body (if any).\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> SendAsync(this HttpClient httpClient, HttpRequest request, HttpMethod method, HttpContent body = null, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(method, body, httpClient.BaseAddress))\n\t\t\t{\n\t\t\t\tHttpResponseMessage responseMessage = await httpClient.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\trequest.ExecuteResponseActions(responseMessage);\n\t\t\t\t}\n\t\t\t\tcatch\n\t\t\t\t{\n\t\t\t\t\tusing (responseMessage)\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn responseMessage;\n\t\t\t}\n\t\t}\n\n\t\t#endregion // Invoke\n\n\t\t#region Helpers\n\n\t\t/// <summary>\n\t\t///\t\tExecute the request's configured response actions (if any) against the specified response message.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe HTTP response message.\n\t\t/// </param>\n\t\tstatic void ExecuteResponseActions(this HttpRequest request, HttpResponseMessage responseMessage)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tList<Exception> responseActionExceptions = new List<Exception>();\n\t\t\tforeach (ResponseAction<object> responseAction in request.ResponseActions)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tresponseAction(responseMessage, HttpRequest.DefaultContext);\n\t\t\t\t}\n\t\t\t\tcatch (Exception eResponseAction)\n\t\t\t\t{\n\t\t\t\t\tresponseActionExceptions.Add(eResponseAction);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (responseActionExceptions.Count > 0)\n\t\t\t\tthrow new AggregateException(\"One or more errors occurred while processing the response message.\", responseActionExceptions);\n\t\t}\n\n\t\t#endregion // Helpers\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Clients/ClientBuilder.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Linq;\nusing System.Net.Http;\n\nnamespace KubeClient.Http.Clients\n{\n    using Utilities;\n\n    /// <summary>\n    ///\t\tBuilds <see cref=\"HttpClient\"/>s with pipelines of <see cref=\"DelegatingHandler\">HTTP message handler</see>s.\n    /// </summary>\n    /// <remarks>\n    ///\t\tBe aware that, if you return singleton instances of message handlers from factory delegates, those handlers will be disposed if the factory encounters any exception while creating a client.\n    /// </remarks>\n    public sealed class ClientBuilder\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe default factory for message-pipeline terminus handlers.\n\t\t/// </summary>\n\t\tstatic readonly Func<HttpMessageHandler, HttpMessageHandler> DefaultMessagePipelineTerminus = existingHandler => new HttpClientHandler();\n\n\t\t/// <summary>\n\t\t///\t\tThe default list of configurator delegates for message-pipeline terminus handlers.\n\t\t/// </summary>\n\t\tstatic readonly ImmutableList<Func<HttpMessageHandler, HttpMessageHandler>> DefaultPipelineTerminusConfigurators = ImmutableList.Create(DefaultMessagePipelineTerminus);\n\n\t\t/// <summary>\n\t\t///\t\tFactory delegates used to produce the HTTP message handlers that comprise client pipelines.\n\t\t/// </summary>\n\t\tImmutableList<Func<DelegatingHandler>> _handlerFactories = ImmutableList<Func<DelegatingHandler>>.Empty;\n\n\t\t/// <summary>\n        ///\t\t Delegates to create or modify the <see cref=\"HttpMessageHandler\"/> that will form the message pipeline terminus.\n        /// </summary>\n\t\t/// <remarks>\n\t\t/// \tEach delegate is passed the result of the previous delegate (if any).\n\t\t/// \n        /// \tCan be overridden by the value passed to CreateClient.\n        /// </remarks>\n\t\tImmutableList<Func<HttpMessageHandler, HttpMessageHandler>> _pipelineTerminusConfigurators = DefaultPipelineTerminusConfigurators;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP client builder.\n\t\t/// </summary>\n\t\tpublic ClientBuilder()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP client builder.\n\t\t/// </summary>\n\t\t/// <param name=\"copyFrom\">\n\t\t/// \tThe HTTP client buider to copy configuration from.\n\t\t/// </param>\n\t\tClientBuilder(ClientBuilder copyFrom)\n\t\t{\n\t\t\tif (copyFrom == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(copyFrom));\n\n\t\t\t_handlerFactories = copyFrom._handlerFactories;\n\t\t\t_pipelineTerminusConfigurators = copyFrom._pipelineTerminusConfigurators;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDoes the <see cref=\"ClientBuilder\"/> specify a custom handler for the terminus of the message-hander pipeline.\n\t\t/// </summary>\n\t\tpublic bool HasCustomPipelineTerminus => _pipelineTerminusConfigurators != DefaultPipelineTerminusConfigurators;\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"HttpClient\"/> using the configured message-handler pipeline.\n\t\t/// </summary>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI for the <see cref=\"HttpClient\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"messagePipelineTerminus\">\n\t\t///\t\tAn optional <see cref=\"HttpMessageHandler\"/> that will form the message pipeline terminus.\n\t\t/// \n\t\t/// \tIf not specified, the pre-configured message pipeline terminus is used.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpClient\"/>.\n\t\t/// </returns>\n\t\tpublic HttpClient CreateClient(Uri baseUri = null, HttpMessageHandler messagePipelineTerminus = null)\n\t\t{\n\t\t\tHttpMessageHandler pipelineTerminus = null;\n\t\t\tIReadOnlyList<DelegatingHandler> pipelineHandlers = null;\n\t\t\tHttpMessageHandler pipeline = null;\n\t\t\tHttpClient client = null;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tpipelineTerminus = messagePipelineTerminus ?? BuildPipelineTerminus();\n\t\t\t\tpipelineHandlers = CreatePipelineHandlers();\n\t\t\t\t\n\t\t\t\tpipeline = CreatePipeline(pipelineTerminus, pipelineHandlers);\n\n\t\t\t\tclient = new HttpClient(pipeline);\n\t\t\t\tif (baseUri != null)\n\t\t\t\t\tclient.BaseAddress = baseUri;\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tusing (pipelineTerminus)\n\t\t\t\tusing (pipelineHandlers?.ToAggregateDisposable())\n\t\t\t\tusing (pipeline)\n\t\t\t\tusing (client)\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn client;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tBuild / configure an HTTP message handler to act as the message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <param name=\"initialPipelineTerminus\">\n\t\t///\t\tThe initial <see cref=\"HttpMessageHandler\"/> to use as the pipeline terminus (this is optional, and may ignored by the <see cref=\"ClientBuilder\"/>'s configuration).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t/// \tThe configured <see cref=\"HttpMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic HttpMessageHandler BuildPipelineTerminus(HttpMessageHandler initialPipelineTerminus = null)\n\t\t{\n\t\t\tHttpMessageHandler pipelineTerminus = initialPipelineTerminus;\n\n\t\t\tforeach (Func<HttpMessageHandler, HttpMessageHandler> terminusConfiguration in _pipelineTerminusConfigurators)\n\t\t\t\tpipelineTerminus = terminusConfiguration(pipelineTerminus);\n\n\t\t\tif (pipelineTerminus == null)\n\t\t\t\tthrow new InvalidOperationException(\"One or more configuration delegates for the message pipeline terminus returned null.\");\n\n\t\t\treturn pipelineTerminus;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate non-terminal message pipeline handlers (if any).\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA list of message handlers.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tThe returned handlers are not chained together via <see cref=\"DelegatingHandler.InnerHandler\"/> (this is done by <see cref=\"ClientBuilder.CreatePipeline(HttpMessageHandler, IEnumerable{DelegatingHandler})\"/>) and the list does not include the pipeline terminus.\n\t\t/// </remarks>\n\t\tpublic List<DelegatingHandler> CreatePipelineHandlers()\n\t\t{\n\t\t\tList<DelegatingHandler> pipelineHandlers = new List<DelegatingHandler>();\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tforeach (Func<DelegatingHandler> handlerFactory in _handlerFactories)\n\t\t\t\t{\n\t\t\t\t\tDelegatingHandler currentHandler = null;\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentHandler = handlerFactory();\n\t\t\t\t\t}\n\t\t\t\t\tcatch\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (currentHandler)\n\t\t\t\t\t\t\tthrow;\n\t\t\t\t\t}\n\t\t\t\t\tpipelineHandlers.Add(currentHandler);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tusing (pipelineHandlers.ToAggregateDisposable())\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn pipelineHandlers;\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, but with the specified configuration for its message pipeline terminus.\n        /// </summary>\n        /// <param name=\"pipelineTerminusConfigurator\">\n\t\t/// \tA delegate that creates the <see cref=\"HttpMessageHandler\"/> for each <see cref=\"HttpClient\"/> that will form its message pipeline terminus.\n\t\t/// \n\t\t/// \tIf <c>null</c>, the default message handler pipeline terminus will be used.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\tpublic ClientBuilder WithMessagePipelineTerminus(Func<HttpMessageHandler, HttpMessageHandler> pipelineTerminusConfigurator)\n\t\t{\n\t\t\treturn new ClientBuilder(this)\n\t\t\t{\n\t\t\t\t_pipelineTerminusConfigurators = _pipelineTerminusConfigurators.Add(\n\t\t\t\t\tpipelineTerminusConfigurator ?? DefaultMessagePipelineTerminus\n\t\t\t\t)\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, but with the specified message pipeline terminus.\n        /// </summary>\n        /// <param name=\"pipelineTerminusFactory\">\n\t\t/// \tA delegate that creates the <see cref=\"HttpMessageHandler\"/> for each <see cref=\"HttpClient\"/> that will form its message pipeline terminus.\n\t\t/// \n\t\t/// \tIf <c>null</c>, the default message handler pipeline terminus will be used.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\tpublic ClientBuilder WithMessagePipelineTerminus(Func<HttpMessageHandler> pipelineTerminusFactory)\n\t\t{\n\t\t\tFunc<HttpMessageHandler, HttpMessageHandler> configurator = DefaultMessagePipelineTerminus;\n\t\t\tif (pipelineTerminusFactory != null)\n\t\t\t\tconfigurator = _ => pipelineTerminusFactory();\n\n\t\t\treturn new ClientBuilder(this)\n\t\t\t{\n\t\t\t\t_pipelineTerminusConfigurators = ImmutableList.Create(configurator) // Replaces any existing configurators.\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, but with the default message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\tpublic ClientBuilder WithDefaultMessagePipelineTerminus()\n\t\t{\n\t\t\treturn new ClientBuilder(this)\n\t\t\t{\n\t\t\t\t_pipelineTerminusConfigurators = DefaultPipelineTerminusConfigurators\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, adding an HTTP message-handler factory to the end of the pipeline.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"THandler\">\n\t\t///\t\tThe handler type.\n\t\t/// </typeparam>\n\t\t/// <param name=\"handlerFactory\">\n\t\t///\t\tThe message-handler factory.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"ClientBuilder\"/> (enables method-chaining).\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\t<typeparamref name=\"THandler\"/> cannot be the <see cref=\"DelegatingHandler\"/> base class.\n\t\t/// </remarks>\n\t\tpublic ClientBuilder AddHandler<THandler>(Func<THandler> handlerFactory)\n\t\t\twhere THandler : DelegatingHandler\n\t\t{\n\t\t\tif (handlerFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(handlerFactory));\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (_handlerFactories.OfType<Func<THandler>>().Any())\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"The configured handler pipeline already contains a factory for message-handlers of type '{0}'.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn new ClientBuilder(this)\n\t\t\t{\n\t\t\t\t_handlerFactories = _handlerFactories.Add(handlerFactory)\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, inserting an HTTP message-handler factory to the pipeline before the factory that produces handlers of the specified type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"THandler\">\n\t\t///\t\tThe handler type.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TBeforeHandler\">\n\t\t///\t\tThe type of handler before whose factory the new handler factory should be inserted.\n\t\t/// </typeparam>\n\t\t/// <param name=\"handlerFactory\">\n\t\t///\t\tThe message-handler factory.\n\t\t/// </param>\n\t\t/// <param name=\"throwIfNotPresent\">\n\t\t///\t\tThrow an <see cref=\"InvalidOperationException\"/> if no factory for <typeparamref name=\"TBeforeHandler\"/> is present?\n\t\t/// \n\t\t///\t\tDefault is <c>false</c>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"ClientBuilder\"/> (enables method-chaining).\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\t<typeparamref name=\"THandler\"/> and <typeparamref name=\"TBeforeHandler\"/> cannot be the <see cref=\"DelegatingHandler\"/> base class.\n\t\t/// </remarks>\n\t\tpublic ClientBuilder AddHandlerBefore<THandler, TBeforeHandler>(Func<THandler> handlerFactory, bool throwIfNotPresent = false)\n\t\t\twhere THandler : DelegatingHandler\n\t\t\twhere TBeforeHandler : DelegatingHandler\n\t\t{\n\t\t\tif (handlerFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(handlerFactory));\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (_handlerFactories.OfType<Func<THandler>>().Any())\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"The configured handler pipeline already contains a factory for message-handlers of type '{0}'.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tType beforeHandlerFactoryType = typeof(Func<TBeforeHandler>);\n\t\t\tfor (int handlerIndex = 0; handlerIndex < _handlerFactories.Count; handlerIndex++)\n\t\t\t{\n\t\t\t\tif (_handlerFactories[handlerIndex].GetType() == beforeHandlerFactoryType)\n\t\t\t\t{\n\t\t\t\t\treturn new ClientBuilder(this)\n\t\t\t\t\t{\n\t\t\t\t\t\t_handlerFactories = _handlerFactories.Insert(handlerIndex, handlerFactory)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (throwIfNotPresent)\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"Cannot insert factory for message-handlers of type '{0}' before the factory for message-handlers of type '{1}' (the pipeline does not contain a factory for message-handlers of this type.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName,\n\t\t\t\t\t\ttypeof(TBeforeHandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// TBefore is not present, so just append to the end of the pipeline.\n\t\t\treturn new ClientBuilder(this)\n\t\t\t{\n\t\t\t\t_handlerFactories = _handlerFactories.Add(handlerFactory)\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, inserting an HTTP message-handler factory to the pipeline after the factory that produces handlers of the specified type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"THandler\">\n\t\t///\t\tThe handler type.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TAfterHandler\">\n\t\t///\t\tThe type of handler after whose factory the new handler factory should be inserted.\n\t\t/// </typeparam>\n\t\t/// <param name=\"handlerFactory\">\n\t\t///\t\tThe message-handler factory.\n\t\t/// </param>\n\t\t/// <param name=\"throwIfNotPresent\">\n\t\t///\t\tThrow an <see cref=\"InvalidOperationException\"/> if no factory for <typeparamref name=\"TAfterHandler\"/> is present?\n\t\t/// \n\t\t///\t\tDefault is <c>false</c>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"ClientBuilder\"/> (enables method-chaining).\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\t<typeparamref name=\"THandler\"/> and <typeparamref name=\"TAfterHandler\"/> cannot be the <see cref=\"DelegatingHandler\"/> base class.\n\t\t/// </remarks>\n\t\tpublic ClientBuilder AddHandlerAfter<THandler, TAfterHandler>(Func<THandler> handlerFactory, bool throwIfNotPresent = false)\n\t\t\twhere THandler : DelegatingHandler\n\t\t\twhere TAfterHandler : DelegatingHandler\n\t\t{\n\t\t\tif (handlerFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(handlerFactory));\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (_handlerFactories.OfType<Func<THandler>>().Any())\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"The configured handler pipeline already contains a factory for message-handlers of type '{0}'.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tType afterHandlerFactoryType = typeof(Func<TAfterHandler>);\n\t\t\tfor (int handlerIndex = 0; handlerIndex < _handlerFactories.Count; handlerIndex++)\n\t\t\t{\n\t\t\t\tif (_handlerFactories[handlerIndex].GetType() == afterHandlerFactoryType)\n\t\t\t\t{\n\t\t\t\t\treturn new ClientBuilder(this)\n\t\t\t\t\t{\n\t\t\t\t\t\t_handlerFactories = _handlerFactories.Insert(handlerIndex + 1, handlerFactory)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (throwIfNotPresent)\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"Cannot insert factory for message-handlers of type '{0}' after the factory for message-handlers of type '{1}' (the pipeline does not contain a factory for message-handlers of this type.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName,\n\t\t\t\t\t\ttypeof(TAfterHandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// TAfter is not present, so just append to the end of the pipeline.\n\t\t\treturn new ClientBuilder(this)\n\t\t\t{\n\t\t\t\t_handlerFactories = _handlerFactories.Add(handlerFactory)\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tEnumerate the types of handlers configured in the factory's pipeline.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA sequence of 0 or more types.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tThis operation uses Reflection, so it can be relatively expensive; use sparingly.\n\t\t/// </remarks>\n\t\tpublic IEnumerable<Type> EnumerateHandlerTypes()\n\t\t{\n\t\t\tfor (int handlerIndex = 0; handlerIndex < _handlerFactories.Count; handlerIndex++)\n\t\t\t{\n\t\t\t\tFunc<DelegatingHandler> factory = _handlerFactories[handlerIndex];\n\t\t\t\tType factoryDelegateType = factory.GetType();\n\n\t\t\t\tyield return factoryDelegateType.GenericTypeArguments[0];\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an HTTP message-handler pipeline.\n\t\t/// </summary>\n\t\t/// <param name=\"pipelineTerminus\">\n\t\t///\t\tAn <see cref=\"HttpMessageHandler\"/> representing the terminus of the pipeline.\n\t\t/// </param>\n\t\t/// <param name=\"pipelineHandlers\">\n\t\t///\t\tA sequence of <see cref=\"DelegatingHandler\"/>s representing additional steps in the pipeline.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpMessageHandler\"/> representing the head of the pipeline.\n\t\t/// </returns>\n\t\tpublic static HttpMessageHandler CreatePipeline(HttpMessageHandler pipelineTerminus, IEnumerable<DelegatingHandler> pipelineHandlers)\n\t\t{\n\t\t\tif (pipelineTerminus == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(pipelineTerminus));\n\n\t\t\tif (pipelineHandlers == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(pipelineHandlers));\n\n\t\t\tHttpMessageHandler pipeline = pipelineTerminus;\n\t\t\tforeach (DelegatingHandler pipelineHandler in pipelineHandlers.Reverse())\n\t\t\t{\n\t\t\t\tpipelineHandler.InnerHandler = pipeline;\n\t\t\t\tpipeline = pipelineHandler;\n\t\t\t}\n\n\t\t\treturn pipeline;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Clients/ClientBuilderExtensions.Typed.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Net.Security;\nusing System.Security.Cryptography.X509Certificates;\n\nnamespace KubeClient.Http.Clients\n{\n    /// <summary>\n    ///\t\tGeneral-purpose extensions for <see cref=\"ClientBuilder{TContext}\"/> and <see cref=\"ClientBuilder{TContext}\"/>.\n    /// </summary>\n    public static partial class ClientBuilderExtensions\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpClient\"/> with the specified credentials.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type that contains contextual information used when creating the client.\n\t\t/// </typeparam>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> that contains contextual information used when creating the client.\n\t\t/// </param>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the HTTP client.\n\t\t/// </param>\n\t\t/// <param name=\"credentials\">\n\t\t///\t\tThe client credentials used for authentication.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpClient\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpClient CreateClient<TContext>(this ClientBuilder<TContext> clientBuilder, TContext context, Uri baseUri, ICredentials credentials)\n\t\t{\n\t\t\tHttpClientHandler clientHandler = null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tclientHandler = new HttpClientHandler\n\t\t\t\t{\n\t\t\t\t\tCredentials = credentials\n\t\t\t\t};\n\n\t\t\t\treturn clientBuilder.CreateClient(context, baseUri, clientHandler);\n\t\t\t}\n\t\t\tcatch (Exception)\n\t\t\t{\n\t\t\t\tusing (clientHandler)\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpClient\"/> with the specified credentials.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type that contains contextual information used when creating the client.\n\t\t/// </typeparam>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> that contains contextual information used when creating the client.\n\t\t/// </param>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the HTTP client.\n\t\t/// </param>\n\t\t/// <param name=\"credentials\">\n\t\t///\t\tThe client credentials used for authentication.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpClient\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpClient CreateClient<TContext>(this ClientBuilder<TContext> clientBuilder, TContext context, string baseUri, ICredentials credentials)\n\t\t{\n\t\t\tHttpClientHandler clientHandler = null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tclientHandler = new HttpClientHandler\n\t\t\t\t{\n\t\t\t\t\tCredentials = credentials\n\t\t\t\t};\n\n\t\t\t\treturn clientBuilder.CreateClient(context, baseUri, clientHandler);\n\t\t\t}\n\t\t\tcatch (Exception)\n\t\t\t{\n\t\t\t\tusing (clientHandler)\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpClient\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type that contains contextual information used when creating the client.\n\t\t/// </typeparam>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> that contains contextual information used when creating the client.\n\t\t/// </param>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the HTTP client.\n\t\t/// </param>\n\t\t/// <param name=\"messagePipelineTerminus\">\n\t\t///\t\tAn optional <see cref=\"HttpMessageHandler\"/> that will form the message pipeline terminus.\n\t\t/// \n\t\t/// \tIf not specified, a new <see cref=\"HttpClientHandler\"/> is used.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpClient\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpClient CreateClient<TContext>(this ClientBuilder<TContext> clientBuilder, TContext context, string baseUri, HttpMessageHandler messagePipelineTerminus = null)\n\t\t{\n\t\t\tif (clientBuilder == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(clientBuilder));\n\n\t\t\tif (String.IsNullOrWhiteSpace(baseUri))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'baseUri'.\", nameof(baseUri));\n\n\t\t\treturn clientBuilder.CreateClient(\n\t\t\t\tcontext,\n\t\t\t\tnew Uri(baseUri, UriKind.Absolute),\n\t\t\t\tmessagePipelineTerminus\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tRegister a message handler type for the pipeline used by clients created by the factory.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TMessageHandler\">\n\t\t///\t\tThe message handler type.\n\t\t/// \n\t\t///\t\tMust be a sub-type of <see cref=\"DelegatingHandler\"/> (not <see cref=\"DelegatingHandler\"/> itself).\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type that contains contextual information used when creating the handler.\n\t\t/// </typeparam>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe client factory (enables inline use / method chaining).\n\t\t/// </returns>\n\t\tpublic static ClientBuilder<TContext> WithMessageHandler<TMessageHandler, TContext>(this ClientBuilder<TContext> clientBuilder)\n\t\t\twhere TMessageHandler : DelegatingHandler, new()\n\t\t{\n\t\t\tif (clientBuilder == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(clientBuilder));\n\n\t\t\tif (typeof(TMessageHandler) == DelegatingHandlerType)\n\t\t\t\tthrow new NotSupportedException(\"TMessageHandler must be a sub-type of DelegatingHandler (it cannot be DelegatingHandler).\");\n\n\t\t\tclientBuilder.AddHandler(\n\t\t\t\tcontext => new TMessageHandler()\n\t\t\t);\n\n\t\t\treturn clientBuilder;\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, but with the specified configuration action for its <see cref=\"HttpClientHandler\"/> (message pipeline terminus).\n        /// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n        /// <param name=\"clientHandlerConfigurator\">\n\t\t/// \tA delegate that configures the <see cref=\"HttpClientHandler\"/> that will form the message pipeline terminus for each <see cref=\"HttpClient\"/> produced by the builder.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static ClientBuilder<TContext> ConfigureHttpClientHandler<TContext>(this ClientBuilder<TContext> clientBuilder, Action<HttpClientHandler, TContext> clientHandlerConfigurator)\n\t\t{\n\t\t\tif (clientHandlerConfigurator == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(clientHandlerConfigurator));\n\t\t\t\n\t\t\treturn clientBuilder.ConfigureMessagePipelineTerminus(clientHandlerConfigurator);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, but with the specified configuration action for its message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TMessageHandler\">\n\t\t/// \tThe type of message handler to expect / configure.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type that contains contextual information used when creating the pipeline terminus.\n\t\t/// </typeparam>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"pipelineTerminusConfigurator\">\n\t\t/// \tA delegate that configures the <typeparamref name=\"TMessageHandler\"/> that will form the message pipeline terminus for each <see cref=\"HttpClient\"/> produced by the builder.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static ClientBuilder<TContext> ConfigureMessagePipelineTerminus<TMessageHandler, TContext>(this ClientBuilder<TContext> clientBuilder, Action<TMessageHandler, TContext> pipelineTerminusConfigurator)\n\t\t\twhere TMessageHandler : HttpMessageHandler\n\t\t{\n\t\t\tif (pipelineTerminusConfigurator == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(pipelineTerminusConfigurator));\n\t\t\t\n\t\t\treturn clientBuilder.WithMessagePipelineTerminus((existingTerminator, context) =>\n\t\t\t{\n\t\t\t\tif (existingTerminator == null)\n\t\t\t\t\tthrow new InvalidOperationException($\"Cannot configure pipeline terminus (expected a handler of type '{typeof(TMessageHandler).FullName}', but the previous factory function returned null).\");\n\n\t\t\t\tif (existingTerminator is TMessageHandler typedHandler)\n\t\t\t\t\tpipelineTerminusConfigurator(typedHandler, context);\n\t\t\t\telse\n\t\t\t\t\tthrow new InvalidOperationException($\"Cannot configure pipeline terminus (expected a handler of type '{typeof(TMessageHandler).FullName}', but the previous factory function returned a handler of type '{existingTerminator.GetType().FullName}').\");\n\t\t\t\t\n\t\t\t\treturn existingTerminator;\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, but using the specified X.509 certificate for client authentication.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type that contains contextual information used when creating the client.\n\t\t/// </typeparam>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"clientCertificate\">\n\t\t/// \tThe X.509 certificate to use.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static ClientBuilder<TContext> WithClientCertificate<TContext>(this ClientBuilder<TContext> clientBuilder, X509Certificate2 clientCertificate)\n\t\t{\n\t\t\tif (clientBuilder == null)\n                throw new ArgumentNullException(nameof(clientBuilder));\n            \n            if (clientCertificate == null)\n                throw new ArgumentNullException(nameof(clientCertificate));\n            \n            if (!clientCertificate.HasPrivateKey)\n                throw new InvalidOperationException($\"Cannot use certificate '{clientCertificate.Subject}' as a client certificate (no private key is not available for it).\");\n\n            return clientBuilder.ConfigureHttpClientHandler((clientHandler, context) =>\n\t\t\t{\n\t\t\t\tclientHandler.ClientCertificates.Add(clientCertificate);\n\t\t\t\tclientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, but using the specified X.509 certificate for server authentication.\n        /// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n        /// <param name=\"expectServerCertificate\">\n\t\t/// \tThe X.509 certificate to expect the server to use.\n\t\t/// </param>\n\t\t/// <param name=\"logError\">\n\t\t/// \tAn optional delegate called if an unexpected error is encountered while validating the server certificate.\n\t\t/// \n\t\t/// \tUse this delegate to log the error.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t/// \tWill accept the certificate or (if it's a CA certificate) any certificate issued by it.\n\t\t/// </remarks>\n\t\tpublic static ClientBuilder<TContext> WithServerCertificate<TContext>(this ClientBuilder<TContext> clientBuilder, X509Certificate2 expectServerCertificate, Action<Exception> logError = null)\n\t\t{\n\t\t\tif (clientBuilder == null)\n                throw new ArgumentNullException(nameof(clientBuilder));\n            \n            if (expectServerCertificate == null)\n                throw new ArgumentNullException(nameof(expectServerCertificate));\n\n            return clientBuilder.ConfigureHttpClientHandler((clientHandler, context) =>\n\t\t\t{\n\t\t\t\tclientHandler.ServerCertificateCustomValidationCallback = (request, certificate, chain, sslPolicyErrors) =>\n\t\t\t\t{\n\t\t\t\t\tif (sslPolicyErrors != SslPolicyErrors.RemoteCertificateChainErrors)\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (X509Chain certificateChain = new X509Chain())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcertificateChain.ChainPolicy.ExtraStore.Add(expectServerCertificate);\n\t\t\t\t\t\t\tcertificateChain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;\n\t\t\t\t\t\t\tcertificateChain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn certificateChain.Build(certificate);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception chainException)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (logError != null)\n\t\t\t\t\t\t\tlogError(chainException);\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, but with verification of the server's SSL certificate disabled (useful when the server has a self-signed certificate).\n        /// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t/// \tWill accept any certificate.\n\t\t/// </remarks>\n\t\tpublic static ClientBuilder<TContext> AcceptAnyServerCertificate<TContext>(this ClientBuilder<TContext> clientBuilder)\n\t\t{\n\t\t\tif (clientBuilder == null)\n                throw new ArgumentNullException(nameof(clientBuilder));\n            \n            return clientBuilder.ConfigureHttpClientHandler((clientHandler, context) =>\n\t\t\t{\n\t\t\t\tclientHandler.ServerCertificateCustomValidationCallback = (request, certificate, chain, sslPolicyErrors) =>\n\t\t\t\t{\n\t\t\t\t\treturn true; // Verification disabled.\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Clients/ClientBuilderExtensions.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Net.Security;\nusing System.Security.Cryptography.X509Certificates;\n\nnamespace KubeClient.Http.Clients\n{\n    /// <summary>\n    ///\t\tGeneral-purpose extensions for <see cref=\"ClientBuilder\"/> and <see cref=\"ClientBuilder{TContext}\"/>.\n    /// </summary>\n    public static partial class ClientBuilderExtensions\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe <see cref=\"DelegatingHandler\"/> CLR type.\n\t\t/// </summary>\n\t\tstatic readonly Type DelegatingHandlerType = typeof(DelegatingHandler);\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpClient\"/> with the specified credentials.\n\t\t/// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the HTTP client.\n\t\t/// </param>\n\t\t/// <param name=\"credentials\">\n\t\t///\t\tThe client credentials used for authentication.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpClient\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpClient CreateClient(this ClientBuilder clientBuilder, Uri baseUri, ICredentials credentials)\n\t\t{\n\t\t\tHttpClientHandler clientHandler = null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tclientHandler = new HttpClientHandler\n\t\t\t\t{\n\t\t\t\t\tCredentials = credentials\n\t\t\t\t};\n\n\t\t\t\treturn clientBuilder.CreateClient(baseUri, clientHandler);\n\t\t\t}\n\t\t\tcatch (Exception)\n\t\t\t{\n\t\t\t\tusing (clientHandler)\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpClient\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the HTTP client.\n\t\t/// </param>\n\t\t/// <param name=\"credentials\">\n\t\t///\t\tThe client credentials used for authentication.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpClient\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpClient CreateClient(this ClientBuilder clientBuilder, string baseUri, ICredentials credentials)\n\t\t{\n\t\t\tHttpClientHandler clientHandler = null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tclientHandler = new HttpClientHandler\n\t\t\t\t{\n\t\t\t\t\tCredentials = credentials\n\t\t\t\t};\n\n\t\t\t\treturn clientBuilder.CreateClient(baseUri, clientHandler);\n\t\t\t}\n\t\t\tcatch (Exception)\n\t\t\t{\n\t\t\t\tusing (clientHandler)\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpClient\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the HTTP client.\n\t\t/// </param>\n\t\t/// <param name=\"messagePipelineTerminus\">\n\t\t///\t\tAn optional <see cref=\"HttpMessageHandler\"/> that will form the message pipeline terminus.\n\t\t/// \n\t\t/// \tIf not specified, a new <see cref=\"HttpClientHandler\"/> is used.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpClient\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpClient CreateClient(this ClientBuilder clientBuilder, string baseUri, HttpMessageHandler messagePipelineTerminus = null)\n\t\t{\n\t\t\tif (clientBuilder == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(clientBuilder));\n\n\t\t\tif (String.IsNullOrWhiteSpace(baseUri))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'baseUri'.\", nameof(baseUri));\n\n\t\t\treturn clientBuilder.CreateClient(\n\t\t\t\tnew Uri(baseUri, UriKind.Absolute),\n\t\t\t\tmessagePipelineTerminus\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tRegister a message handler type for the pipeline used by clients created by the factory.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TMessageHandler\">\n\t\t///\t\tThe message handler type.\n\t\t/// \n\t\t///\t\tMust be a sub-type of <see cref=\"DelegatingHandler\"/> (not <see cref=\"DelegatingHandler\"/> itself).\n\t\t/// </typeparam>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe client factory (enables inline use / method chaining).\n\t\t/// </returns>\n\t\tpublic static ClientBuilder WithMessageHandler<TMessageHandler>(this ClientBuilder clientBuilder)\n\t\t\twhere TMessageHandler : DelegatingHandler, new()\n\t\t{\n\t\t\tif (clientBuilder == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(clientBuilder));\n\n\t\t\tif (typeof(TMessageHandler) == DelegatingHandlerType)\n\t\t\t\tthrow new NotSupportedException(\"TMessageHandler must be a sub-type of DelegatingHandler (it cannot be DelegatingHandler).\");\n\n\t\t\tclientBuilder.AddHandler(\n\t\t\t\t() => new TMessageHandler()\n\t\t\t);\n\n\t\t\treturn clientBuilder;\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, but with the specified configuration action for its <see cref=\"HttpClientHandler\"/> (message pipeline terminus).\n        /// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n        /// <param name=\"clientHandlerConfigurator\">\n\t\t/// \tA delegate that configures the <see cref=\"HttpClientHandler\"/> that will form the message pipeline terminus for each <see cref=\"HttpClient\"/> produced by the builder.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\tpublic static ClientBuilder ConfigureHttpClientHandler(this ClientBuilder clientBuilder, Action<HttpClientHandler> clientHandlerConfigurator)\n\t\t{\n\t\t\tif (clientHandlerConfigurator == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(clientHandlerConfigurator));\n\t\t\t\n\t\t\treturn clientBuilder.ConfigureMessagePipelineTerminus<HttpClientHandler>(clientHandlerConfigurator);\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, but with the specified configuration action for its message pipeline terminus.\n        /// </summary>\n\t\t/// <typeparam name=\"TMessageHandler\">\n\t\t/// \tThe type of message handler to expect / configure.\n\t\t/// </typeparam>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n        /// <param name=\"pipelineTerminusConfigurator\">\n\t\t/// \tA delegate that configures the <typeparamref name=\"TMessageHandler\"/> that will form the message pipeline terminus for each <see cref=\"HttpClient\"/> produced by the builder.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\tpublic static ClientBuilder ConfigureMessagePipelineTerminus<TMessageHandler>(this ClientBuilder clientBuilder, Action<TMessageHandler> pipelineTerminusConfigurator)\n\t\t\twhere TMessageHandler : HttpMessageHandler\n\t\t{\n\t\t\tif (pipelineTerminusConfigurator == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(pipelineTerminusConfigurator));\n\t\t\t\n\t\t\treturn clientBuilder.WithMessagePipelineTerminus(existingTerminator =>\n\t\t\t{\n\t\t\t\tif (existingTerminator == null)\n\t\t\t\t\tthrow new InvalidOperationException($\"Cannot configure pipeline terminus (expected a handler of type '{typeof(TMessageHandler).FullName}', but the previous factory function returned null).\");\n\n\t\t\t\tif (existingTerminator is TMessageHandler typedHandler)\n\t\t\t\t\tpipelineTerminusConfigurator(typedHandler);\n\t\t\t\telse\n\t\t\t\t\tthrow new InvalidOperationException($\"Cannot configure pipeline terminus (expected a handler of type '{typeof(TMessageHandler).FullName}', but the previous factory function returned a handler of type '{existingTerminator.GetType().FullName}').\");\n\t\t\t\t\n\t\t\t\treturn existingTerminator;\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, but using the specified X.509 certificate for client authentication.\n        /// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n        /// <param name=\"clientCertificate\">\n\t\t/// \tThe X.509 certificate to use.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\tpublic static ClientBuilder WithClientCertificate(this ClientBuilder clientBuilder, X509Certificate2 clientCertificate)\n\t\t{\n\t\t\tif (clientBuilder == null)\n                throw new ArgumentNullException(nameof(clientBuilder));\n            \n            if (clientCertificate == null)\n                throw new ArgumentNullException(nameof(clientCertificate));\n            \n            if (!clientCertificate.HasPrivateKey)\n                throw new InvalidOperationException($\"Cannot use certificate '{clientCertificate.Subject}' as a client certificate (no private key is not available for it).\");\n\n            return clientBuilder.ConfigureHttpClientHandler(clientHandler =>\n\t\t\t{\n\t\t\t\tclientHandler.ClientCertificates.Add(clientCertificate);\n\t\t\t\tclientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, but using the specified X.509 certificate for server authentication.\n        /// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n        /// <param name=\"expectServerCertificate\">\n\t\t/// \tThe X.509 certificate to expect the server to use.\n\t\t/// </param>\n\t\t/// <param name=\"logError\">\n\t\t/// \tAn optional delegate called if an unexpected error is encountered while validating the server certificate.\n\t\t/// \n\t\t/// \tUse this delegate to log the error.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t/// \tWill accept the certificate or (if it's a CA certificate) any certificate issued by it.\n\t\t/// </remarks>\n\t\tpublic static ClientBuilder WithServerCertificate(this ClientBuilder clientBuilder, X509Certificate2 expectServerCertificate, Action<Exception> logError = null)\n\t\t{\n\t\t\tif (clientBuilder == null)\n                throw new ArgumentNullException(nameof(clientBuilder));\n            \n            if (expectServerCertificate == null)\n                throw new ArgumentNullException(nameof(expectServerCertificate));\n\n            return clientBuilder.ConfigureHttpClientHandler(clientHandler =>\n\t\t\t{\n\t\t\t\tclientHandler.ServerCertificateCustomValidationCallback = (request, certificate, chain, sslPolicyErrors) =>\n\t\t\t\t{\n\t\t\t\t\tif (sslPolicyErrors != SslPolicyErrors.RemoteCertificateChainErrors)\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (X509Chain certificateChain = new X509Chain())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcertificateChain.ChainPolicy.ExtraStore.Add(expectServerCertificate);\n\t\t\t\t\t\t\tcertificateChain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;\n\t\t\t\t\t\t\tcertificateChain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn certificateChain.Build(certificate);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception chainException)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (logError != null)\n\t\t\t\t\t\t\tlogError(chainException);\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder\"/>, but with verification of the server's SSL certificate disabled (useful when the server has a self-signed certificate).\n        /// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t/// \tWill accept any certificate.\n\t\t/// </remarks>\n\t\tpublic static ClientBuilder AcceptAnyServerCertificate(this ClientBuilder clientBuilder)\n\t\t{\n\t\t\tif (clientBuilder == null)\n                throw new ArgumentNullException(nameof(clientBuilder));\n            \n            return clientBuilder.ConfigureHttpClientHandler(clientHandler =>\n\t\t\t{\n\t\t\t\tclientHandler.ServerCertificateCustomValidationCallback = (request, certificate, chain, sslPolicyErrors) =>\n\t\t\t\t{\n\t\t\t\t\treturn true; // Verification disabled.\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Clients/ClientBuilderOfTContext.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Linq;\nusing System.Net.Http;\n\nnamespace KubeClient.Http.Clients\n{\n    using Utilities;\n\n    /// <summary>\n    ///\t\tBuilds <see cref=\"HttpClient\"/>s with pipelines of <see cref=\"DelegatingHandler\">HTTP message handler</see>s.\n    /// </summary>\n    /// <remarks>\n\t///\t\tUnlike <see cref=\"ClientBuilder{TContext}\"/>, <see cref=\"ClientBuilder{TContext}\"/> provides a <typeparamref name=\"TContext\"/> that can be passed to its configuration delegates.\n\t///\t\t\n    ///\t\tBe aware that, if you return singleton instances of message handlers from factory delegates, those handlers will be disposed if the factory encounters any exception while creating a client.\n    /// </remarks>\n    public sealed class ClientBuilder<TContext>\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe default factory for message-pipeline terminus handlers.\n\t\t/// </summary>\n\t\tstatic readonly Func<HttpMessageHandler, TContext, HttpMessageHandler> DefaultMessagePipelineTerminus = (existingHandler, context) => new HttpClientHandler();\n\n\t\t/// <summary>\n\t\t///\t\tThe default list of configurator delegates for message-pipeline terminus handlers.\n\t\t/// </summary>\n\t\tstatic readonly ImmutableList<Func<HttpMessageHandler, TContext, HttpMessageHandler>> DefaultPipelineTerminusConfigurators = ImmutableList.Create(DefaultMessagePipelineTerminus);\n\n\t\t/// <summary>\n\t\t///\t\tFactory delegates used to produce the HTTP message handlers that comprise client pipelines.\n\t\t/// </summary>\n\t\tImmutableList<Func<TContext, DelegatingHandler>> _handlerFactories = ImmutableList<Func<TContext, DelegatingHandler>>.Empty;\n\n\t\t/// <summary>\n\t\t///\t\t Delegates to create or modify the <see cref=\"HttpMessageHandler\"/> that will form the message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t/// \tEach delegate is passed the result of the previous delegate (if any).\n\t\t/// \n\t\t/// \tCan be overridden by the value passed to CreateClient.\n\t\t/// </remarks>\n\t\tImmutableList<Func<HttpMessageHandler, TContext, HttpMessageHandler>> _pipelineTerminusConfigurators = DefaultPipelineTerminusConfigurators;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP client builder.\n\t\t/// </summary>\n\t\tpublic ClientBuilder()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP client builder.\n\t\t/// </summary>\n\t\t/// <param name=\"copyFrom\">\n\t\t/// \tThe HTTP client buider to copy configuration from.\n\t\t/// </param>\n\t\tClientBuilder(ClientBuilder<TContext> copyFrom)\n\t\t{\n\t\t\tif (copyFrom == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(copyFrom));\n\n\t\t\t_handlerFactories = copyFrom._handlerFactories;\n\t\t\t_pipelineTerminusConfigurators = copyFrom._pipelineTerminusConfigurators;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDoes the <see cref=\"ClientBuilder{TContext}\"/> specify a custom handler for the terminus of the message-hander pipeline.\n\t\t/// </summary>\n\t\tpublic bool HasCustomPipelineTerminus => _pipelineTerminusConfigurators != DefaultPipelineTerminusConfigurators;\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"HttpClient\"/> using the configured message-handler pipeline.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> that contains contextual information used when creating the client and its pipeline.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI for the <see cref=\"HttpClient\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"messagePipelineTerminus\">\n\t\t///\t\tAn optional <see cref=\"HttpMessageHandler\"/> that will form the message pipeline terminus.\n\t\t/// \n\t\t/// \tIf not specified, the pre-configured message pipeline terminus is used.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpClient\"/>.\n\t\t/// </returns>\n\t\tpublic HttpClient CreateClient(TContext context, Uri baseUri = null, HttpMessageHandler messagePipelineTerminus = null)\n\t\t{\n\t\t\tHttpMessageHandler pipelineTerminus = null;\n\t\t\tIReadOnlyList<DelegatingHandler> pipelineHandlers = null;\n\t\t\tHttpMessageHandler pipeline = null;\n\t\t\tHttpClient client = null;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tpipelineTerminus = messagePipelineTerminus ?? BuildPipelineTerminus(context);\n\t\t\t\tpipelineHandlers = CreatePipelineHandlers(context);\n\n\t\t\t\tpipeline = ClientBuilder.CreatePipeline(pipelineTerminus, pipelineHandlers);\n\n\t\t\t\tclient = new HttpClient(pipeline);\n\t\t\t\tif (baseUri != null)\n\t\t\t\t\tclient.BaseAddress = baseUri;\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tusing (pipelineTerminus)\n\t\t\t\tusing (pipelineHandlers?.ToAggregateDisposable())\n\t\t\t\tusing (pipeline)\n\t\t\t\tusing (client)\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn client;\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tBuild / configure an HTTP message handler to act as the message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> that contains contextual information used when creating the handler.\n\t\t/// </param>\n\t\t/// <param name=\"initialPipelineTerminus\">\n\t\t///\t\tThe initial <see cref=\"HttpMessageHandler\"/> to use as the pipeline terminus (this is optional, and may ignored by the <see cref=\"ClientBuilder{TContext}\"/>'s configuration).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t/// \tThe configured <see cref=\"HttpMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic HttpMessageHandler BuildPipelineTerminus(TContext context, HttpMessageHandler initialPipelineTerminus = null)\n\t\t{\n\t\t\tHttpMessageHandler pipelineTerminus = initialPipelineTerminus;\n\n\t\t\tforeach (Func<HttpMessageHandler, TContext, HttpMessageHandler> terminusConfiguration in _pipelineTerminusConfigurators)\n\t\t\t\tpipelineTerminus = terminusConfiguration(pipelineTerminus, context);\n\n\t\t\tif (pipelineTerminus == null)\n\t\t\t\tthrow new InvalidOperationException(\"One or more configuration delegates for the message pipeline terminus returned null.\");\n\n\t\t\treturn pipelineTerminus;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate non-terminal message pipeline handlers (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> that contains contextual information used when creating the handlers.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA list of message handlers.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tThe returned handlers are not chained together via <see cref=\"DelegatingHandler.InnerHandler\"/> (this is done by <see cref=\"ClientBuilder.CreatePipeline(HttpMessageHandler, IEnumerable{DelegatingHandler})\"/>) and the list does not include the pipeline terminus.\n\t\t/// </remarks>\n\t\tpublic List<DelegatingHandler> CreatePipelineHandlers(TContext context)\n\t\t{\n\t\t\tList<DelegatingHandler> pipelineHandlers = new List<DelegatingHandler>();\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tforeach (Func<TContext, DelegatingHandler> handlerFactory in _handlerFactories)\n\t\t\t\t{\n\t\t\t\t\tDelegatingHandler currentHandler = null;\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentHandler = handlerFactory(context);\n\t\t\t\t\t}\n\t\t\t\t\tcatch\n\t\t\t\t\t{\n\t\t\t\t\t\tusing (currentHandler)\n\t\t\t\t\t\t\tthrow;\n\t\t\t\t\t}\n\t\t\t\t\tpipelineHandlers.Add(currentHandler);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tusing (pipelineHandlers.ToAggregateDisposable())\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn pipelineHandlers;\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, but with the specified configuration for its message pipeline terminus.\n        /// </summary>\n        /// <param name=\"pipelineTerminusConfigurator\">\n\t\t/// \tA delegate that creates the <see cref=\"HttpMessageHandler\"/> for each <see cref=\"HttpClient\"/> that will form its message pipeline terminus.\n\t\t/// \n\t\t/// \tIf <c>null</c>, the default message handler pipeline terminus will be used.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic ClientBuilder<TContext> WithMessagePipelineTerminus(Func<HttpMessageHandler, TContext, HttpMessageHandler> pipelineTerminusConfigurator)\n\t\t{\n\t\t\treturn new ClientBuilder<TContext>(this)\n\t\t\t{\n\t\t\t\t_pipelineTerminusConfigurators = _pipelineTerminusConfigurators.Add(\n\t\t\t\t\tpipelineTerminusConfigurator ?? DefaultMessagePipelineTerminus\n\t\t\t\t)\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n        ///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, but with the specified message pipeline terminus.\n        /// </summary>\n        /// <param name=\"pipelineTerminusFactory\">\n\t\t/// \tA delegate that creates the <see cref=\"HttpMessageHandler\"/> for each <see cref=\"HttpClient\"/> that will form its message pipeline terminus.\n\t\t/// \n\t\t/// \tIf <c>null</c>, the default message handler pipeline terminus will be used.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic ClientBuilder<TContext> WithMessagePipelineTerminus(Func<TContext, HttpMessageHandler> pipelineTerminusFactory)\n\t\t{\n\t\t\tFunc<HttpMessageHandler, TContext, HttpMessageHandler> configurator = DefaultMessagePipelineTerminus;\n\t\t\tif (pipelineTerminusFactory != null)\n\t\t\t\tconfigurator = (_, context) => pipelineTerminusFactory(context);\n\n\t\t\treturn new ClientBuilder<TContext>(this)\n\t\t\t{\n\t\t\t\t_pipelineTerminusConfigurators = ImmutableList.Create(configurator) // Replaces any existing configurators.\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, but with the default message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t/// \tThe configured <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic ClientBuilder<TContext> WithDefaultMessagePipelineTerminus()\n\t\t{\n\t\t\treturn new ClientBuilder<TContext>(this)\n\t\t\t{\n\t\t\t\t_pipelineTerminusConfigurators = DefaultPipelineTerminusConfigurators\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, adding an HTTP message-handler factory to the end of the pipeline.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"THandler\">\n\t\t///\t\tThe handler type.\n\t\t/// </typeparam>\n\t\t/// <param name=\"handlerFactory\">\n\t\t///\t\tThe message-handler factory.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"ClientBuilder{TContext}\"/> (enables method-chaining).\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\t<typeparamref name=\"THandler\"/> cannot be the <see cref=\"DelegatingHandler\"/> base class.\n\t\t/// </remarks>\n\t\tpublic ClientBuilder<TContext> AddHandler<THandler>(Func<TContext, THandler> handlerFactory)\n\t\t\twhere THandler : DelegatingHandler\n\t\t{\n\t\t\tif (handlerFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(handlerFactory));\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (_handlerFactories.OfType<Func<THandler>>().Any())\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"The configured handler pipeline already contains a factory for message-handlers of type '{0}'.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn new ClientBuilder<TContext>(this)\n\t\t\t{\n\t\t\t\t_handlerFactories = _handlerFactories.Add(handlerFactory)\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, inserting an HTTP message-handler factory to the pipeline before the factory that produces handlers of the specified type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"THandler\">\n\t\t///\t\tThe handler type.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TBeforeHandler\">\n\t\t///\t\tThe type of handler before whose factory the new handler factory should be inserted.\n\t\t/// </typeparam>\n\t\t/// <param name=\"handlerFactory\">\n\t\t///\t\tThe message-handler factory.\n\t\t/// </param>\n\t\t/// <param name=\"throwIfNotPresent\">\n\t\t///\t\tThrow an <see cref=\"InvalidOperationException\"/> if no factory for <typeparamref name=\"TBeforeHandler\"/> is present?\n\t\t/// \n\t\t///\t\tDefault is <c>false</c>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"ClientBuilder{TContext}\"/> (enables method-chaining).\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\t<typeparamref name=\"THandler\"/> and <typeparamref name=\"TBeforeHandler\"/> cannot be the <see cref=\"DelegatingHandler\"/> base class.\n\t\t/// </remarks>\n\t\tpublic ClientBuilder<TContext> AddHandlerBefore<THandler, TBeforeHandler>(Func<TContext, THandler> handlerFactory, bool throwIfNotPresent = false)\n\t\t\twhere THandler : DelegatingHandler\n\t\t\twhere TBeforeHandler : DelegatingHandler\n\t\t{\n\t\t\tif (handlerFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(handlerFactory));\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (_handlerFactories.OfType<Func<THandler>>().Any())\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"The configured handler pipeline already contains a factory for message-handlers of type '{0}'.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tType beforeHandlerFactoryType = typeof(Func<TBeforeHandler>);\n\t\t\tfor (int handlerIndex = 0; handlerIndex < _handlerFactories.Count; handlerIndex++)\n\t\t\t{\n\t\t\t\tif (_handlerFactories[handlerIndex].GetType() == beforeHandlerFactoryType)\n\t\t\t\t{\n\t\t\t\t\treturn new ClientBuilder<TContext>(this)\n\t\t\t\t\t{\n\t\t\t\t\t\t_handlerFactories = _handlerFactories.Insert(handlerIndex, handlerFactory)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (throwIfNotPresent)\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"Cannot insert factory for message-handlers of type '{0}' before the factory for message-handlers of type '{1}' (the pipeline does not contain a factory for message-handlers of this type.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName,\n\t\t\t\t\t\ttypeof(TBeforeHandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// TBefore is not present, so just append to the end of the pipeline.\n\t\t\treturn new ClientBuilder<TContext>(this)\n\t\t\t{\n\t\t\t\t_handlerFactories = _handlerFactories.Add(handlerFactory)\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"ClientBuilder{TContext}\"/>, inserting an HTTP message-handler factory to the pipeline after the factory that produces handlers of the specified type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"THandler\">\n\t\t///\t\tThe handler type.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TAfterHandler\">\n\t\t///\t\tThe type of handler after whose factory the new handler factory should be inserted.\n\t\t/// </typeparam>\n\t\t/// <param name=\"handlerFactory\">\n\t\t///\t\tThe message-handler factory.\n\t\t/// </param>\n\t\t/// <param name=\"throwIfNotPresent\">\n\t\t///\t\tThrow an <see cref=\"InvalidOperationException\"/> if no factory for <typeparamref name=\"TAfterHandler\"/> is present?\n\t\t/// \n\t\t///\t\tDefault is <c>false</c>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"ClientBuilder{TContext}\"/> (enables method-chaining).\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\t<typeparamref name=\"THandler\"/> and <typeparamref name=\"TAfterHandler\"/> cannot be the <see cref=\"DelegatingHandler\"/> base class.\n\t\t/// </remarks>\n\t\tpublic ClientBuilder<TContext> AddHandlerAfter<THandler, TAfterHandler>(Func<TContext, THandler> handlerFactory, bool throwIfNotPresent = false)\n\t\t\twhere THandler : DelegatingHandler\n\t\t\twhere TAfterHandler : DelegatingHandler\n\t\t{\n\t\t\tif (handlerFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(handlerFactory));\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (typeof(THandler) == typeof(DelegatingHandler))\n\t\t\t\tthrow new InvalidOperationException(\"Handler type cannot be the DelegatingHandler base class.\");\n\n\t\t\tif (_handlerFactories.OfType<Func<THandler>>().Any())\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"The configured handler pipeline already contains a factory for message-handlers of type '{0}'.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tType afterHandlerFactoryType = typeof(Func<TAfterHandler>);\n\t\t\tfor (int handlerIndex = 0; handlerIndex < _handlerFactories.Count; handlerIndex++)\n\t\t\t{\n\t\t\t\tif (_handlerFactories[handlerIndex].GetType() == afterHandlerFactoryType)\n\t\t\t\t{\n\t\t\t\t\treturn new ClientBuilder<TContext>(this)\n\t\t\t\t\t{\n\t\t\t\t\t\t_handlerFactories = _handlerFactories.Insert(handlerIndex + 1, handlerFactory)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (throwIfNotPresent)\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\"Cannot insert factory for message-handlers of type '{0}' after the factory for message-handlers of type '{1}' (the pipeline does not contain a factory for message-handlers of this type.\",\n\t\t\t\t\t\ttypeof(THandler).AssemblyQualifiedName,\n\t\t\t\t\t\ttypeof(TAfterHandler).AssemblyQualifiedName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// TAfter is not present, so just append to the end of the pipeline.\n\t\t\treturn new ClientBuilder<TContext>(this)\n\t\t\t{\n\t\t\t\t_handlerFactories = _handlerFactories.Add(handlerFactory)\n\t\t\t};\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tEnumerate the types of handlers configured in the factory's pipeline.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA sequence of 0 or more types.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tThis operation uses Reflection, so it can be relatively expensive; use sparingly.\n\t\t/// </remarks>\n\t\tpublic IEnumerable<Type> EnumerateHandlerTypes()\n\t\t{\n\t\t\tfor (int handlerIndex = 0; handlerIndex < _handlerFactories.Count; handlerIndex++)\n\t\t\t{\n\t\t\t\tFunc<TContext, DelegatingHandler> factory = _handlerFactories[handlerIndex];\n\t\t\t\tType factoryDelegateType = factory.GetType();\n\n\t\t\t\tyield return factoryDelegateType.GenericTypeArguments[1];\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/DependencyInjectionExtensions.cs",
    "content": "﻿using Microsoft.Extensions.DependencyInjection;\nusing System;\nusing System.Collections.Generic;\nusing System.Net.Http;\n\nnamespace KubeClient.Http\n{\n    using Clients;\n\n    /// <summary>\n    ///\t\tExtension methods for registering and resolving components for dependency injection.\n    /// </summary>\n    public static class DependencyInjectionExtensions\n    {\n        /// <summary>\n        ///\t\tRegister a named <see cref=\"HttpClient\"/> (via <see cref=\"IHttpClientFactory\"/>) using the configuration from an <see cref=\"ClientBuilder\"/>.\n        /// </summary>\n        /// <param name=\"services\">\n        ///\t\tThe <see cref=\"IServiceCollection\"/> to configure.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe name of the <see cref=\"HttpClient\"/> configuration to register.\n        /// </param>\n        /// <param name=\"http\">\n        ///\t\tThe <see cref=\"ClientBuilder\"/> to use for handler configuration.\n        /// </param>\n        /// <returns>\n        ///\t\tAn <see cref=\"IHttpClientBuilder\"/> representing the <see cref=\"HttpClient\"/> configuration (enables further customisation).\n        /// </returns>\n        public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, string name, ClientBuilder http)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(name)}.\", nameof(name));\n\n            if (http == null)\n                throw new ArgumentNullException(nameof(http));\n\n            IHttpClientBuilder client = services.AddHttpClient(name);\n\n            return client.Configure(http);\n        }\n\n        /// <summary>\n        ///\t\tRegister a named <see cref=\"HttpClient\"/> (via <see cref=\"IHttpClientFactory\"/>) using the configuration from an <see cref=\"ClientBuilder\"/>.\n        /// </summary>\n        /// <param name=\"services\">\n        ///\t\tThe <see cref=\"IServiceCollection\"/> to configure.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe name of the <see cref=\"HttpClient\"/> configuration to register.\n        /// </param>\n        /// <param name=\"http\">\n        ///\t\tThe <see cref=\"ClientBuilder{TContext}\"/> to use for handler configuration.\n        ///\t\t\n        ///\t\t<para>\n        ///\t\t\t Configuration delegates will have access to a scoped <see cref=\"IServiceProvider\"/>; see <see href=\"https://learn.microsoft.com/en-us/dotnet/core/extensions/httpclient-factory#message-handler-scopes-in-ihttpclientfactory\"/> for further information.\n        ///\t\t</para>\n        /// </param>\n        /// <returns>\n        ///\t\tAn <see cref=\"IHttpClientBuilder\"/> representing the <see cref=\"HttpClient\"/> configuration (enables further customisation).\n        /// </returns>\n        public static IHttpClientBuilder AddHttpClient(this IServiceCollection services, string name, ClientBuilder<IServiceProvider> http)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(name)}.\", nameof(name));\n\n            if (http == null)\n                throw new ArgumentNullException(nameof(http));\n\n            IHttpClientBuilder client = services.AddHttpClient(name);\n\n            return client.Configure(http);\n        }\n\n        /// <summary>\n        ///\t\tConfigure an <see cref=\"HttpClient\"/> using an client-builder.\n        /// </summary>\n        /// <param name=\"client\">\n        ///\t\tAn <see cref=\"IHttpClientBuilder\"/> representing the <see cref=\"HttpClient\"/> configuration.\n        /// </param>\n        /// <param name=\"http\">\n        ///\t\tThe <see cref=\"ClientBuilder\"/> used to configure the <see cref=\"HttpClient\"/>.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"IHttpClientBuilder\"/>.\n        /// </returns>\n        static IHttpClientBuilder Configure(this IHttpClientBuilder client, ClientBuilder http)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (http == null)\n                throw new ArgumentNullException(nameof(http));\n\n            if (http.HasCustomPipelineTerminus)\n            {\n                client.ConfigurePrimaryHttpMessageHandler(\n                    () => http.BuildPipelineTerminus()\n                );\n            }\n            client.ConfigureAdditionalHttpMessageHandlers((handlers, serviceProvider) =>\n            {\n                List<DelegatingHandler> httpHandlers = http.CreatePipelineHandlers();\n\n                foreach (DelegatingHandler httpHandler in httpHandlers)\n                    handlers.Add(httpHandler);\n            });\n\n            return client;\n        }\n\n        /// <summary>\n        ///\t\tConfigure an <see cref=\"HttpClient\"/> using an client-builder.\n        /// </summary>\n        /// <param name=\"client\">\n        ///\t\tAn <see cref=\"IHttpClientBuilder\"/> representing the <see cref=\"HttpClient\"/> configuration.\n        /// </param>\n        /// <param name=\"http\">\n        ///\t\tThe <see cref=\"ClientBuilder{TContext}\"/> used to configure the <see cref=\"HttpClient\"/>.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"IHttpClientBuilder\"/>.\n        /// </returns>\n        static IHttpClientBuilder Configure(this IHttpClientBuilder client, ClientBuilder<IServiceProvider> http)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (http == null)\n                throw new ArgumentNullException(nameof(http));\n\n            if (http.HasCustomPipelineTerminus)\n            {\n                client.ConfigurePrimaryHttpMessageHandler(\n                    serviceProvider => http.BuildPipelineTerminus(serviceProvider)\n                );\n            }\n\n            client.ConfigureAdditionalHttpMessageHandlers((handlers, serviceProvider) =>\n            {\n                List<DelegatingHandler> httpHandlers = http.CreatePipelineHandlers(serviceProvider);\n\n                foreach (DelegatingHandler httpHandler in httpHandlers)\n                    handlers.Add(httpHandler);\n            });\n\n            return client;\n        }\n\n#if NET7_0 || NETSTANDARD2_1\n        /// <summary>\n        ///     Configure additional HTTP message handlers.\n        /// </summary>\n        /// <param name=\"client\">\n        ///     The <see cref=\"IHttpClientBuilder\"/> to configure.\n        /// </param>\n        /// <param name=\"configureAdditionalHandlers\">\n        ///     A delegate that configures additional handlers.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"IHttpClientBuilder\"/>.\n        /// </returns>\n        /// <remarks>\n        ///     Polyfill for net7.0/netstandard2.1: ConfigureAdditionalHttpMessageHandlers extension method for IHttpClientBuilder.\n        /// </remarks>\n        internal static IHttpClientBuilder ConfigureAdditionalHttpMessageHandlers(this IHttpClientBuilder client, Action<IList<DelegatingHandler>, IServiceProvider> configureAdditionalHandlers)\n        {\n            if (client == null)\n                throw new ArgumentNullException(nameof(client));\n\n            if (configureAdditionalHandlers == null)\n                throw new ArgumentNullException(nameof(configureAdditionalHandlers));\n\n            client.ConfigureHttpMessageHandlerBuilder(handlerBuilder =>\n            {\n                configureAdditionalHandlers(handlerBuilder.AdditionalHandlers, handlerBuilder.Services);\n            });\n\n            return client;\n        }\n#endif // NET7_0 || NETSTANDARD2_1\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Diagnostics/ClientBuilderExtensions.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\n\nnamespace KubeClient.Http.Diagnostics\n{\n    using Clients;\n    using MessageHandlers;\n\n    /// <summary>\n    /// \tExtension methods for the <see cref=\"ClientBuilder\">HTTP client builder</see>.\n    /// </summary>\n    public static class ClientBuilderExtensions\n\t{\n\t\t/// <summary>\n\t\t/// \tCreate a copy of the HTTP client builder whose clients will log requests and responses to the specified logger.\n\t\t/// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"logger\">\n\t\t///\t\tThe logger used to log the event.\n\t\t/// </param>\n\t\t/// <param name=\"requestComponents\">\n\t\t/// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each request message should be logged.\n\t\t/// </param>\n\t\t/// <param name=\"responseComponents\">\n\t\t/// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each response message should be logged.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tThis overload is for convenience only; for the purposes of reliability you should resolve the logger when you are creating the client (it's not good practice to share the same instance of a logger between multiple clients).\n\t\t/// </remarks>\n\t\tpublic static ClientBuilder WithLogging(this ClientBuilder clientBuilder, ILogger logger, LogMessageComponents requestComponents = LogMessageComponents.Basic, LogMessageComponents responseComponents = LogMessageComponents.Basic)\n\t\t{\n\t\t\treturn clientBuilder.WithLogging(() => logger, requestComponents, responseComponents);\n\t\t}\n\t\t\n\t\t/// <summary>\n\t\t/// \tCreate a copy of the HTTP client builder whose clients will log requests and responses to the specified logger.\n\t\t/// </summary>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"loggerFactory\">\n\t\t///\t\tA delegate that produces the logger for each client.\n\t\t/// </param>\n\t\t/// <param name=\"requestComponents\">\n\t\t/// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each request message should be logged.\n\t\t/// </param>\n\t\t/// <param name=\"responseComponents\">\n\t\t/// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each response message should be logged.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"ClientBuilder\"/>.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tEach call to <paramref name=\"loggerFactory\"/> should return a new instance of the logger (it's not good practice to share the same instance of a logger between multiple clients).\n\t\t/// </remarks>\n\t\tpublic static ClientBuilder WithLogging(this ClientBuilder clientBuilder, Func<ILogger> loggerFactory, LogMessageComponents requestComponents = LogMessageComponents.Basic, LogMessageComponents responseComponents = LogMessageComponents.Basic)\n\t\t{\n\t\t\treturn clientBuilder.AddHandler(() =>\n\t\t\t{\n\t\t\t\tILogger logger = loggerFactory();\n\t\t\t\t\n\t\t\t\treturn new LoggingMessageHandler(logger, requestComponents, responseComponents);\n\t\t\t});\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/KubeClient.Http/Diagnostics/LogEventIds.cs",
    "content": "using Microsoft.Extensions.Logging;\n\nnamespace KubeClient.Http.Diagnostics\n{\n    /// <summary>\n    ///\t\tThe Ids of well-known log events raised by KubeClient.Http diagnostics.\n    /// </summary>\n    public static class LogEventIds\n\t{\n\t\t/// <summary>\n\t\t/// \tAn outgoing HTTP request is being performed. \n\t\t/// </summary>\n\t\tpublic static readonly EventId BeginRequest\t= new EventId(100, nameof(BeginRequest));\n\n\t\t/// <summary>\n\t\t/// \tThe body of an outgoing HTTP request.\n\t\t/// </summary>\n\t\tpublic static readonly EventId RequestBody\t= new EventId(101, nameof(RequestBody));\n\n\t\t/// <summary>\n\t\t/// \tThe body of an incoming HTTP response.\n\t\t/// </summary>\n\t\tpublic static readonly EventId ResponseBody\t= new EventId(102, nameof(ResponseBody));\n\n\t\t/// <summary>\n\t\t/// \tThe body of an incoming HTTP response is streamed.\n\t\t/// </summary>\n\t\tpublic static readonly EventId StreamedResponse\t= new EventId(103, nameof(StreamedResponse));\n\t\t\n\t\t/// <summary>\n\t\t/// \tAn incoming HTTP response has been received.\n\t\t/// </summary>\n\t\tpublic static readonly EventId EndRequest\t= new EventId(110, nameof(EndRequest));\n\t\t\n\t\t/// <summary>\n\t\t/// \tAn exception occurred while performing an HTTP request.\n\t\t/// </summary>\n\t\tpublic static readonly EventId RequestError\t= new EventId(115, nameof(RequestError));\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Diagnostics/LogMessageComponents.cs",
    "content": "using System;\n\nnamespace KubeClient.Http.Diagnostics\n{\n\t/// <summary>\n\t/// \tComponents of an HTTP message that should be logged.\n\t/// </summary>\n\t[Flags]\n\tpublic enum LogMessageComponents\n\t{\n\t\t/// <summary>\n\t\t///\t\tNo message components should be logged.\n\t\t/// </summary>\n\t\tNone = 0,\n\n\t\t/// <summary>\n\t\t///\t\tBasic message components (e.g. method and request URI) should be logged.\n\t\t/// </summary>\n\t\tBasic = 1,\n\n\t\t/// <summary>\n\t\t///\t\tMessage body should be logged.\n\t\t/// </summary>\n\t\tBody = 2,\n\n\t\t/// <summary>\n\t\t///\t\tMessage headers should be logged.\n\t\t/// </summary>\n\t\tHeaders = 4,\n\n\t\t/// <summary>\n\t\t///\t\tAll message components should be logged.\n\t\t/// </summary>\n\t\tAll = Basic | Body | Headers\n\t}\n}"
  },
  {
    "path": "src/KubeClient.Http/Diagnostics/LoggerExtensions.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Diagnostics\n{\n    /// <summary>\n    ///\t\tExtension methods for <see cref=\"ILogger\"/> used to log messages about requests and responses.\n    /// </summary>\n    public static class LoggerExtensions\n\t{\n\t\t/// <summary>\n\t\t/// \tLog an event representing the start of an HTTP request.\n\t\t/// </summary>\n\t\t/// <param name=\"logger\">\n\t\t///\t\tThe logger used to log the event.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tAn <see cref=\"HttpRequestMessage\"/> representing the request.\n\t\t/// </param>\n\t\tpublic static void BeginRequest(this ILogger logger, HttpRequestMessage request)\n\t\t{\n\t\t\tif (logger == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(logger));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tlogger.LogDebug(LogEventIds.BeginRequest, \"Performing {Method} request to '{RequestUri}'.\",\n\t\t\t\trequest.Method?.Method,\n\t\t\t\trequest.RequestUri\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tAsynchronously log an event representing the body of an HTTP request.\n\t\t/// </summary>\n\t\t/// <param name=\"logger\">\n\t\t///\t\tThe logger used to log the event.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tAn <see cref=\"HttpRequestMessage\"/> representing the request.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t/// \tA <see cref=\"Task\"/> representing the asynchronous operation.\n\t\t/// </returns>\n\t\tpublic static async Task RequestBody(this ILogger logger, HttpRequestMessage request)\n\t\t{\n\t\t\tif (logger == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(logger));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (request.Content == null)\n\t\t\t\tthrow new InvalidOperationException(\"HttpRequestMessage.Content is null.\");\n\n\t\t\tif (!logger.IsEnabled(LogLevel.Debug))\n\t\t\t\treturn; // Don't bother capturing request body if we won't be able to log it.\n\n\t\t\tstring requestBody = await request.Content.ReadAsStringAsync();\n\n\t\t\tlogger.LogDebug(LogEventIds.RequestBody, \"Send request body for {Method} request to '{RequestUri}':\\n{RequestBody}\",\n\t\t\t\trequest.Method?.Method,\n\t\t\t\trequest.RequestUri,\n\t\t\t\trequestBody\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tAsynchronously log an event representing the body of an HTTP response.\n\t\t/// </summary>\n\t\t/// <param name=\"logger\">\n\t\t///\t\tThe logger used to log the event.\n\t\t/// </param>\n\t\t/// <param name=\"response\">\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t/// \tA <see cref=\"Task\"/> representing the asynchronous operation.\n\t\t/// </returns>\n\t\tpublic static async Task ResponseBody(this ILogger logger, HttpResponseMessage response)\n\t\t{\n\t\t\tif (logger == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(logger));\n\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tif (response.RequestMessage == null)\n\t\t\t\tthrow new InvalidOperationException(\"HttpResponseMessage.RequestMessage is null.\"); // Can't examine original request so we don't know if the response is streamed.\n\n\t\t\tif (response.Content == null)\n\t\t\t\tthrow new InvalidOperationException(\"HttpResponseMessage.Content is null.\");\n\n\t\t\tif (!logger.IsEnabled(LogLevel.Debug))\n\t\t\t\treturn; // Don't bother capturing response body if we won't be able to log it.\n\n\t\t\tstring responseBody = await response.Content.ReadAsStringAsync();\n\n\t\t\tlogger.LogDebug(LogEventIds.ResponseBody, \"Receive response body for {Method} request to '{RequestUri}' ({StatusCode}):\\n{Body}\",\n\t\t\t\tresponse.RequestMessage.Method?.Method,\n\t\t\t\tresponse.RequestMessage.RequestUri,\n\t\t\t\tresponse.StatusCode,\n\t\t\t\tresponseBody\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tLog an event representing the streamed body of an HTTP response.\n\t\t/// </summary>\n\t\t/// <param name=\"logger\">\n\t\t///\t\tThe logger used to log the event.\n\t\t/// </param>\n\t\t/// <param name=\"response\">\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </param>\n\t\tpublic static void StreamedResponse(this ILogger logger, HttpResponseMessage response)\n\t\t{\n\t\t\tif (logger == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(logger));\n\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tlogger.LogDebug(LogEventIds.StreamedResponse, \"Receive response body for {Method} request to '{RequestUri}' (response is streamed so body cannot be logged).\",\n\t\t\t\tresponse.RequestMessage.Method?.Method,\n\t\t\t\tresponse.RequestMessage.RequestUri\n\t\t\t);\n\t\t}\n\t\t\n\t\t/// <summary>\n\t\t/// \tLog an event representing the completion of an HTTP request.\n\t\t/// </summary>\n\t\t/// <param name=\"logger\">\n\t\t///\t\tThe logger used to log the event.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tAn <see cref=\"HttpRequestMessage\"/> representing the request.\n\t\t/// </param>\n\t\t/// <param name=\"statusCode\">\n\t\t///\t\tAn <see cref=\"HttpStatusCode\"/> representing the response status code.\n\t\t/// </param>\n\t\tpublic static void EndRequest(this ILogger logger, HttpRequestMessage request, HttpStatusCode statusCode)\n\t\t{\n\t\t\tif (logger == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(logger));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tlogger.LogDebug(LogEventIds.EndRequest, \"Completed {Method} request to '{RequestUri}' ({StatusCode}).\",\n\t\t\t\trequest.Method?.Method,\n\t\t\t\trequest.RequestUri,\n\t\t\t\tstatusCode\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tLog an event representing an error encountered while performing an HTTP request.\n\t\t/// </summary>\n\t\t/// <param name=\"logger\">\n\t\t///\t\tThe logger used to log the event.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tAn <see cref=\"HttpRequestMessage\"/> representing the request.\n\t\t/// </param>\n\t\t/// <param name=\"error\">\n\t\t///\t\tAn <see cref=\"Exception\"/> representing the error.\n\t\t/// </param>\n\t\tpublic static void RequestError(this ILogger logger, HttpRequestMessage request, Exception error)\n\t\t{\n\t\t\tif (logger == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(logger));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (error == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(error));\n\n\t\t\tlogger.LogDebug(LogEventIds.RequestError, error, \"{Method} request to '{RequestUri} failed: {ErrorMessage}\",\n\t\t\t\trequest.Method?.Method,\n\t\t\t\trequest.RequestUri,\n\t\t\t\terror.Message\n\t\t\t);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Diagnostics/MessageHandlers/LoggingMessageHandler.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Diagnostics.MessageHandlers\n{\n    /// <summary>\n    ///\t\tClient-side HTTP message handler that logs outgoing requests and incoming responses.\n    /// </summary>\n    public class LoggingMessageHandler\n        : DelegatingHandler\n    {\n        /// <summary>\n        ///\t\tCreate a new <see cref=\"LoggingMessageHandler\"/>.\n        /// </summary>\n        /// <param name=\"logger\">\n        ///\t\tThe <see cref=\"ILogger\"/> used to log messages about requests and responses.\n        /// </param>\n        /// <param name=\"requestComponents\">\n        /// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each request message should be logged.\n        /// </param>\n        /// <param name=\"responseComponents\">\n        /// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each response message should be logged.\n        /// </param>\n        public LoggingMessageHandler(ILogger logger, LogMessageComponents requestComponents = LogMessageComponents.Basic, LogMessageComponents responseComponents = LogMessageComponents.Basic)\n        {\n            if (logger == null)\n                throw new ArgumentNullException(nameof(logger));\n\n            Log = logger;\n            RequestComponents = requestComponents;\n            ResponseComponents = responseComponents;\n        }\n\n        /// <summary>\n        ///\t\tThe <see cref=\"ILogger\"/> used to log messages about requests and responses.\n        /// </summary>\n        protected ILogger Log { get; }\n\n        /// <summary>\n        /// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each request message should be logged.\n        /// </summary>\n        public LogMessageComponents RequestComponents { get; }\n\n        /// <summary>\n        /// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each response message should be logged.\n        /// </summary>\n        public LogMessageComponents ResponseComponents { get; }\n\n        /// <summary>\n        ///\t\tAsynchronously process an outgoing HTTP request message and its incoming response message.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\"/> representing the outgoing request.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///\t\tA <see cref=\"CancellationToken\"/> that can be used to cancel the asynchronous operation.\n        /// </param>\n        /// <returns>\n        ///\t\tCreate a new <see cref=\"LoggingMessageHandler\"/>.\n        /// </returns>\n        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (ShouldLogRequest(LogMessageComponents.Basic))\n                Log.BeginRequest(request);\n\n            try\n            {\n                if (ShouldLogRequest(LogMessageComponents.Body) && request.Content != null)\n                    await Log.RequestBody(request);\n\n                HttpResponseMessage response = await base.SendAsync(request, cancellationToken);\n\n                if (ShouldLogResponse(LogMessageComponents.Body) && response.Content != null)\n                {\n                    if (!response.RequestMessage.IsStreamed())\n                        await Log.ResponseBody(response);\n                    else\n                        Log.StreamedResponse(response);\n                }\n\n                if (ShouldLogRequest(LogMessageComponents.Basic))\n                    Log.EndRequest(request, response.StatusCode);\n\n                return response;\n            }\n            catch (Exception eRequest)\n            {\n                // Errors are always logged.\n                Log.RequestError(request, eRequest);\n\n                throw;\n            }\n        }\n\n        /// <summary>\n        /// \tDetermine whether the specified component of request messages should be logged.\n        /// </summary>\n        /// <param name=\"requestComponent\">\n        /// \tA <see cref=\"LogMessageComponents\"/> value representing the message component.\n        /// </param>\n        /// <returns>\n        /// \t<c>true</c>, if the message component should be logged; otherwise, <c>false</c>.\n        /// </returns>\n        protected bool ShouldLogRequest(LogMessageComponents requestComponent) => (RequestComponents & requestComponent) != 0;\n\n        /// <summary>\n        /// \tDetermine whether the specified component of response messages should be logged.\n        /// </summary>\n        /// <param name=\"responseComponent\">\n        /// \tA <see cref=\"LogMessageComponents\"/> value representing the message component.\n        /// </param>\n        /// <returns>\n        /// \t<c>true</c>, if the message component should be logged; otherwise, <c>false</c>.\n        /// </returns>\n        protected bool ShouldLogResponse(LogMessageComponents responseComponent) => (ResponseComponents & responseComponent) != 0;\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Diagnostics/TypedClientBuilderExtensions.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\n\nnamespace KubeClient.Http.Diagnostics\n{\n    using Clients;\n\tusing MessageHandlers;\n\t\n\t/// <summary>\n\t/// \tExtension methods for the <see cref=\"ClientBuilder{TContext}\">HTTP client builder</see>.\n\t/// </summary>\n\tpublic static class TypedClientBuilderExtensions\n\t{\n\t\t/// <summary>\n\t\t/// \tCreate a copy of the HTTP client builder whose clients will log requests and responses to the specified logger.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type that contains contextual information used when creating the client.\n\t\t/// </typeparam>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"logger\">\n\t\t///\t\tThe logger used to log the event.\n\t\t/// </param>\n\t\t/// <param name=\"requestComponents\">\n\t\t/// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each request message should be logged.\n\t\t/// </param>\n\t\t/// <param name=\"responseComponents\">\n\t\t/// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each response message should be logged.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tThis overload is for convenience only; for the purposes of reliability you should resolve the logger when you are creating the client (it's not good practice to share the same instance of a logger between multiple clients).\n\t\t/// </remarks>\n\t\tpublic static ClientBuilder<TContext> WithLogging<TContext>(this ClientBuilder<TContext> clientBuilder, ILogger logger, LogMessageComponents requestComponents = LogMessageComponents.Basic, LogMessageComponents responseComponents = LogMessageComponents.Basic)\n\t\t{\n\t\t\treturn clientBuilder.WithLogging(context => logger, requestComponents, responseComponents);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tCreate a copy of the HTTP client builder whose clients will log requests and responses to the specified logger.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type that contains contextual information used when creating the client.\n\t\t/// </typeparam>\n\t\t/// <param name=\"clientBuilder\">\n\t\t///\t\tThe HTTP client builder.\n\t\t/// </param>\n\t\t/// <param name=\"loggerFactory\">\n\t\t///\t\tA delegate that produces the logger for each client.\n\t\t/// </param>\n\t\t/// <param name=\"requestComponents\">\n\t\t/// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each request message should be logged.\n\t\t/// </param>\n\t\t/// <param name=\"responseComponents\">\n\t\t/// \tA <see cref=\"LogMessageComponents\"/> value indicating which components of each response message should be logged.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tEach call to <paramref name=\"loggerFactory\"/> should return a new instance of the logger (it's not good practice to share the same instance of a logger between multiple clients).\n\t\t/// </remarks>\n\t\tpublic static ClientBuilder<TContext> WithLogging<TContext>(this ClientBuilder<TContext> clientBuilder, Func<TContext, ILogger> loggerFactory, LogMessageComponents requestComponents = LogMessageComponents.Basic, LogMessageComponents responseComponents = LogMessageComponents.Basic)\n\t\t{\n\t\t\treturn clientBuilder.AddHandler(context =>\n\t\t\t{\n\t\t\t\tILogger logger = loggerFactory(context);\n\t\t\t\t\n\t\t\t\treturn new LoggingMessageHandler(logger, requestComponents, responseComponents);\n\t\t\t});\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/FactoryExtensions.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\tExtension methods for <see cref=\"HttpRequestFactory\"/>.\n    /// </summary>\n    public static class FactoryExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a new HTTP request with the specified request URI.\n        /// </summary>\n        /// <param name=\"requestFactory\">\n        ///\t\tThe HTTP request factory.\n        /// </param>\n        /// <param name=\"requestUri\">\n        ///\t\tThe request URI (can be relative or absolute).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest Create(this HttpRequestFactory requestFactory, string requestUri)\n        {\n            if (requestFactory == null)\n                throw new ArgumentNullException(nameof(requestFactory));\n\n            if (String.IsNullOrWhiteSpace(requestUri))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'requestUri'.\", nameof(requestUri));\n\n            return requestFactory.Create(\n                new Uri(requestUri, UriKind.RelativeOrAbsolute)\n            );\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/ContentExtensions.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http\n{\n    using Formatters;\n\n    /// <summary>\n    ///\t\tExtension methods for working with <see cref=\"HttpContent\"/>.\n    /// </summary>\n    public static class ContentExtensions\n    {\n        /// <summary>\n        ///\t\tAsynchronously read the body content as the specified type.\n        /// </summary>\n        /// <typeparam name=\"TBody\">\n        ///\t\tThe CLR data-type that the body content will be deserialised into.\n        /// </typeparam>\n        /// <param name=\"content\">\n        ///\t\tThe <see cref=\"HttpContent\"/> to read.\n        /// </param>\n        /// <param name=\"formatter\">\n        ///\t\tThe content formatter used to deserialise the body content.\n        /// </param>\n        /// <returns>\n        ///\t\tThe deserialised body content.\n        /// </returns>\n        public static Task<TBody> ReadAsAsync<TBody>(this HttpContent content, IInputFormatter formatter)\n        {\n            if (content == null)\n                throw new ArgumentNullException(nameof(content));\n\n            InputFormatterContext formatterContext = content.CreateInputFormatterContext<TBody>();\n\n            return content.ReadAsAsync<TBody>(formatter, formatterContext);\n        }\n\n        /// <summary>\n        ///\t\tAsynchronously read the body content as the specified type.\n        /// </summary>\n        /// <typeparam name=\"TBody\">\n        ///\t\tThe CLR data-type that the body content will be deserialised into.\n        /// </typeparam>\n        /// <param name=\"content\">\n        ///\t\tThe <see cref=\"HttpContent\"/> to read.\n        /// </param>\n        /// <param name=\"formatter\">\n        ///\t\tThe content formatter used to deserialise the body content.\n        /// </param>\n        /// <param name=\"formatterContext\">\n        ///\t\tContextual information about the content body being deserialised.\n        /// </param>\n        /// <returns>\n        ///\t\tThe deserialised body content.\n        /// </returns>\n        public static async Task<TBody> ReadAsAsync<TBody>(this HttpContent content, IInputFormatter formatter, InputFormatterContext formatterContext)\n        {\n            if (content == null)\n                throw new ArgumentNullException(nameof(content));\n\n            if (formatterContext == null)\n                throw new ArgumentNullException(nameof(formatterContext));\n\n            using (Stream responseStream = await content.ReadAsStreamAsync().ConfigureAwait(false))\n            {\n                object responseBody = await formatter.ReadAsync(formatterContext, responseStream).ConfigureAwait(false);\n\n                return (TBody)responseBody;\n            }\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"InputFormatterContext\"/> for reading the HTTP message content.\n        /// </summary>\n        /// <typeparam name=\"TBody\">\n        ///\t\tThe CLR data type into which the message body will be deserialised.\n        /// </typeparam>\n        /// <param name=\"content\">\n        ///\t\tThe HTTP message content.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"InputFormatterContext\"/>.\n        /// </returns>\n        public static InputFormatterContext CreateInputFormatterContext<TBody>(this HttpContent content)\n        {\n            if (content == null)\n                throw new ArgumentNullException(nameof(content));\n\n            MediaTypeHeaderValue contentTypeHeader = content.Headers.ContentType;\n            if (contentTypeHeader == null)\n                throw new InvalidOperationException(\"Response is missing 'Content-Type' header.\"); // TODO: Consider custom exception type.\n\n            Encoding encoding = !String.IsNullOrWhiteSpace(contentTypeHeader.CharSet) ?\n                Encoding.GetEncoding(contentTypeHeader.CharSet)\n                :\n                Encoding.UTF8;\n\n            return new InputFormatterContext(\n                dataType: typeof(TBody),\n                mediaType: contentTypeHeader.MediaType,\n                encoding: encoding\n            );\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/EncodingWithoutPreamble.cs",
    "content": "using System.Text;\n\nnamespace KubeClient.Http\n{\n\t/// <summary>\n\t/// \tWell-known text encodings for output (i.see. no preambles).\n\t/// </summary>\n\t/// <remarks>\n\t/// \tSome web APIs don't like being sent preambles to indicate text encoding (usually indicated by HTTP headers instead).\n\t/// </remarks>\n\tpublic static class OutputEncoding\n\t{\n\t\t/// <summary>\n\t\t/// \tUTF-8 encoding (no preamble).\n\t\t/// </summary>\n\t\tpublic static readonly Encoding UTF8 = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false);\n\n\t\t/// <summary>\n\t\t/// \tUnicode / UTF-16 encoding (no preamble).\n\t\t/// </summary>\n\t\tpublic static readonly Encoding Unicode = new UnicodeEncoding(bigEndian: false, byteOrderMark: false);\n\t}\n}"
  },
  {
    "path": "src/KubeClient.Http/Formatters/FormattedObjectContent.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Formatters\n{\n    /// <summary>\n    ///\t\tHTTP content formatted using an <see cref=\"IOutputFormatter\"/>.\n    /// </summary>\n    public class FormattedObjectContent\n        : HttpContent\n    {\n        /// <summary>\n        /// \tThe default encoding used by <see cref=\"FormattedObjectContent\"/>.\n        /// </summary>\n        public static readonly Encoding DefaultEncoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false);\n\n        /// <summary>\n        ///\t\tCreate new formatted object content.\n        /// </summary>\n        /// <param name=\"formatter\">\n        ///\t\tThe <see cref=\"IOutputFormatter\"/> that will be used to serialise the data.\n        /// </param>\n        /// <param name=\"data\">\n        ///\t\tThe data that will be serialised to form the content.\n        /// </param>\n        /// <param name=\"dataType\">\n        ///\t\tThe type of data that will be serialised to form the content.\n        /// </param>\n        /// <param name=\"mediaType\">\n        ///\t\tThe content type being serialised.\n        /// </param>\n        /// <remarks>\n        ///\t\tUses UTF-8 encoding.\n        /// </remarks>\n        public FormattedObjectContent(IOutputFormatter formatter, Type dataType, object data, string mediaType)\n            : this(formatter, data, dataType, mediaType, DefaultEncoding)\n        {\n        }\n\n        /// <summary>\n        ///\t\tCreate new formatted object content.\n        /// </summary>\n        /// <param name=\"formatter\">\n        ///\t\tThe <see cref=\"IOutputFormatter\"/> that will be used to serialise the data.\n        /// </param>\n        /// <param name=\"data\">\n        ///\t\tThe data that will be serialised to form the content.\n        /// </param>\n        /// <param name=\"dataType\">\n        ///\t\tThe type of data that will be serialised to form the content.\n        /// </param>\n        /// <param name=\"mediaType\">\n        ///\t\tThe media type that the formatter should produce.\n        /// </param>\n        /// <param name=\"encoding\">\n        ///\t\tThe <see cref=\"Encoding\"/> that the formatter should use for serialised data.\n        /// </param>\n        public FormattedObjectContent(IOutputFormatter formatter, object data, Type dataType, string mediaType, Encoding encoding)\n            : this(formatter, new OutputFormatterContext(data, dataType, mediaType, encoding))\n        {\n        }\n\n        /// <summary>\n        ///\t\tCreate new formatted object content.\n        /// </summary>\n        /// <param name=\"formatter\">\n        ///\t\tThe <see cref=\"IOutputFormatter\"/> that will be used to serialise the data.\n        /// </param>\n        /// <param name=\"formatterContext\">\n        ///\t\tContextual information use by the <see cref=\"IOutputFormatter\"/>.\n        /// </param>\n        public FormattedObjectContent(IOutputFormatter formatter, OutputFormatterContext formatterContext)\n        {\n            if (formatter == null)\n                throw new ArgumentNullException(nameof(formatter));\n\n            if (formatterContext == null)\n                throw new ArgumentNullException(nameof(formatterContext));\n\n            Formatter = formatter;\n            FormatterContext = formatterContext;\n            Headers.ContentType = new MediaTypeHeaderValue(MediaType);\n        }\n\n        /// <summary>\n        ///\t\tThe <see cref=\"IOutputFormatter\"/> that will be used to serialise the data.\n        /// </summary>\n        public IOutputFormatter Formatter { get; }\n\n        /// <summary>\n        ///\t\tContextual information use by the <see cref=\"Formatter\"/>.\n        /// </summary>\n        public OutputFormatterContext FormatterContext { get; }\n\n        /// <summary>\n        ///\t\tThe type of data that will be serialised to form the content.\n        /// </summary>\n        public Type DataType => FormatterContext.DataType;\n\n        /// <summary>\n        ///\t\tThe data that will be serialised to form the content.\n        /// </summary>\n        public object Data => FormatterContext.Data;\n\n        /// <summary>\n        ///\t\tThe media type that the formatter should produce.\n        /// </summary>\n        public string MediaType => FormatterContext.MediaType;\n\n        /// <summary>\n        ///\t\tThe <see cref=\"Encoding\"/> that the formatter should use for serialised data.\n        /// </summary>\n        public Encoding Encoding => FormatterContext.Encoding;\n\n        /// <summary>\n        ///     Try to pre-compute the formatted content length.\n        /// </summary>\n        /// <param name=\"length\">\n        ///     The length (in bytes) of the content.\n        ///\n        ///\t\tAlways -1, since <see cref=\"FormattedObjectContent\"/> length is not known before serialisation.\n        /// </param>\n        /// <returns>\n        ///     <c>false</c>.\n        /// </returns>\n        protected override bool TryComputeLength(out long length)\n        {\n            // We don't know the length in advance.\n            length = -1;\n\n            return false;\n        }\n\n        /// <summary>\n        ///     Serialize the HTTP content to a stream as an asynchronous operation.\n        /// </summary>\n        /// <param name=\"stream\">\n        ///     The target stream.\n        /// </param>\n        /// <param name=\"context\">\n        ///     Information about the transport (channel binding token, for example).\n        ///\n        ///\t\tCan be null.\n        /// </param>\n        /// <returns>\n        ///     Returns <see cref=\"Task\" />.The task object representing the asynchronous operation.\n        /// </returns>\n        protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context)\n        {\n            if (stream == null)\n                throw new ArgumentNullException(nameof(stream));\n\n            await Formatter.WriteAsync(FormatterContext, stream);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/FormatterClientExtensions.cs",
    "content": "using System;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http\n{\n\tusing Formatters;\n\n\t/// <summary>\n\t///\t\tExtension methods for invocation of untyped <see cref=\"HttpRequest\"/>s using an <see cref=\"HttpClient\"/>.\n\t/// </summary>\n\tpublic static class FormatterClientExtensions\n\t{\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP POST.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"postBody\">\n\t\t///\t\tAn optional object to be used as the the request body.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tIf <paramref name=\"postBody\"/> is specified, the media type to be used\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PostAsync(this HttpClient httpClient, HttpRequest request, object postBody, string mediaType, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(HttpMethod.Post, postBody, mediaType, baseUri: httpClient.BaseAddress))\n\t\t\t{\n\t\t\t\treturn await httpClient.SendAsync(requestMessage, cancellationToken);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously perform an HTTP POST request, serialising the request to JSON.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"postBody\">\n\t\t///\t\tThe object that will be serialised into the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task{HttpResponseMessage}\"/> representing the asynchronous request, whose result is the response message.\n\t\t/// </returns>\n\t\tpublic static Task<HttpResponseMessage> PostAsJsonAsync(this HttpClient httpClient, HttpRequest request, object postBody, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\treturn httpClient.PostAsync(request, postBody, WellKnownMediaTypes.Json, cancellationToken);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP PUT.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"putBody\">\n\t\t///\t\tAn optional object to be used as the the request body.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tIf <paramref name=\"putBody\"/> is specified, the media type to be used\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PutAsync(this HttpClient httpClient, HttpRequest request, object putBody, string mediaType, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(HttpMethod.Put, putBody, mediaType, baseUri: httpClient.BaseAddress))\n\t\t\t{\n\t\t\t\treturn await httpClient.SendAsync(requestMessage, cancellationToken);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously perform an HTTP PUT request, serialising the request to JSON.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"putBody\">\n\t\t///\t\tThe object that will be serialised into the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task{HttpResponseMessage}\"/> representing the asynchronous request, whose result is the response message.\n\t\t/// </returns>\n\t\tpublic static Task<HttpResponseMessage> PutAsJsonAsync(this HttpClient httpClient, HttpRequest request, object putBody, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\treturn httpClient.PutAsync(request, putBody, WellKnownMediaTypes.Json, cancellationToken);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP PATCH.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"patchBody\">\n\t\t///\t\tAn optional object to be used as the the request body.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tIf <paramref name=\"patchBody\"/> is specified, the media type to be used\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PatchAsync(this HttpClient httpClient, HttpRequest request, object patchBody, string mediaType, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(OtherHttpMethods.Patch, patchBody, mediaType, baseUri: httpClient.BaseAddress))\n\t\t\t{\n\t\t\t\treturn await httpClient.SendAsync(requestMessage, cancellationToken);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously perform an HTTP PATCH request, serialising the request to JSON.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"patchBody\">\n\t\t///\t\tThe object that will be serialised into the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task{HttpResponseMessage}\"/> representing the asynchronous request, whose result is the response message.\n\t\t/// </returns>\n\t\tpublic static Task<HttpResponseMessage> PatchAsJsonAsync(this HttpClient httpClient, HttpRequest request, object patchBody, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\treturn httpClient.PatchAsync(request, patchBody, WellKnownMediaTypes.Json, cancellationToken);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP DELETE.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"deleteBody\">\n\t\t///\t\tAn optional object to be used as the the request body.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tIf <paramref name=\"deleteBody\"/> is specified, the media type to be used\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> DeleteAsync(this HttpClient httpClient, HttpRequest request, object deleteBody, string mediaType, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(HttpMethod.Delete, deleteBody, mediaType, baseUri: httpClient.BaseAddress))\n\t\t\t{\n\t\t\t\treturn await httpClient.SendAsync(requestMessage, cancellationToken);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP DELETE, serialising the request to JSON.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"deleteBody\">\n\t\t///\t\tAn optional object to be used as the the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static Task<HttpResponseMessage> DeleteAsJsonAsync(this HttpClient httpClient, HttpRequest request, object deleteBody, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\treturn httpClient.DeleteAsync(request, deleteBody, WellKnownMediaTypes.Json, cancellationToken);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/FormatterCollection.cs",
    "content": "﻿using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tA collection of <see cref=\"IFormatter\">content formatter</see>s.\n\t/// </summary>\n\tpublic class FormatterCollection\n\t\t: IFormatterCollection\n    {\n\t\t#region Instance data\n\n\t\t/// <summary>\n\t\t///\t\tThe underlying collection of formatters, keyed by type.\n\t\t/// </summary>\n\t\treadonly Dictionary<Type, IFormatter> _formatters = new Dictionary<Type, IFormatter>();\n\n\t\t#endregion // Instance data\n\n\t\t#region Construction\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"FormatterCollection\"/>.\n\t\t/// </summary>\n\t\tpublic FormatterCollection()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"FormatterCollection\"/> by copying the specified <see cref=\"FormatterCollection\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"formatterCollection\">\n\t\t///\t\tThe <see cref=\"FormatterCollection\"/> to copy.\n\t\t/// </param>\n\t\tpublic FormatterCollection(FormatterCollection formatterCollection)\n\t\t{\n\t\t\tif (formatterCollection == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatterCollection));\n\n\t\t\tforeach (KeyValuePair<Type, IFormatter> formatter in formatterCollection._formatters)\n\t\t\t\t_formatters.Add(formatter.Key, formatter.Value);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"FormatterCollection\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"formatters\">\n\t\t///\t\tThe formatters that the collection will initially contain.\n\t\t/// </param>\n\t\tpublic FormatterCollection(IEnumerable<IFormatter> formatters)\n\t\t{\n\t\t\tif (formatters == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatters));\n\n\t\t\tforeach (IFormatter formatter in formatters)\n\t\t\t\tAdd(formatter);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"FormatterCollection\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"formatters\">\n\t\t///\t\tThe formatters that the collection will initially contain.\n\t\t/// </param>\n\t\tpublic FormatterCollection(params IFormatter[] formatters)\n\t\t\t: this((IEnumerable<IFormatter>)formatters)\n\t\t{\n\t\t}\n\n\t\t#endregion // Construction\n\n\t\t#region Collection\n\n\t\t/// <summary>\n\t\t///\t\tThe number of formatters in the collection.\n\t\t/// </summary>\n\t\tpublic int Count => _formatters.Count;\n\n\t\t/// <summary>\n\t\t///\t\tAdd a formatter to the collection.\n\t\t/// </summary>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe formatter to add.\n\t\t/// </param>\n\t\tpublic void Add(IFormatter formatter)\n\t\t{\n\t\t\tif (formatter == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatter));\n\n\t\t\tType formatterType = formatter.GetType();\n\t\t\tif (_formatters.ContainsKey(formatterType))\n\t\t\t\tthrow new InvalidOperationException($\"The collection already contains a formatter of type '{formatterType.FullName}'.\");\n\n\t\t\t_formatters.Add(formatterType, formatter);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the collection contains the specified formatter instance.\n\t\t/// </summary>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe formatter.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the collection contains the formatter; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tpublic bool Contains(IFormatter formatter)\n\t\t{\n\t\t\tif (formatter == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatter));\n\n\t\t\tType formatterType = formatter.GetType();\n\n\t\t\treturn _formatters.ContainsKey(formatterType);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the collection contains a formatter of the specified type.\n\t\t/// </summary>\n\t\t/// <param name=\"formatterType\">\n\t\t///\t\tThe formatter type.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the collection contains a formatter of the specified type; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tpublic bool Contains(Type formatterType)\n\t\t{\n\t\t\tif (formatterType == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatterType));\n\n\t\t\treturn _formatters.ContainsKey(formatterType);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tRemove the specified formatter (if it is present in the collection).\n\t\t/// </summary>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe formatter to remove.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the formatter was removed; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tpublic bool Remove(IFormatter formatter)\n\t\t{\n\t\t\tif (formatter == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatter));\n\n\t\t\tType formatterType = formatter.GetType();\n\n\t\t\treturn _formatters.Remove(formatterType);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tRemove the formatter of the specified type (if it is present in the collection).\n\t\t/// </summary>\n\t\t/// <param name=\"formatterType\">\n\t\t///\t\tThe type of formatter to remove.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the formatter was removed; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tpublic bool Remove(Type formatterType)\n\t\t{\n\t\t\tif (formatterType == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatterType));\n\n\t\t\treturn _formatters.Remove(formatterType);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tRemove all formatters from the collection.\n\t\t/// </summary>\n\t\tpublic void Clear()\n\t\t{\n\t\t\t_formatters.Clear();\n\t\t}\n\n\t\t#endregion // Collection\n\n\t\t#region Find a formatter\n\n\t\t/// <summary>\n\t\t///\t\tGet the most appropriate <see cref=\"IInputFormatter\">formatter</see> to read the specified data.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data to deserialise.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe formatter, or <c>null</c> if none of the formatters in the collection can handle the specified content type.\n\t\t/// </returns>\n\t\t/// <exception cref=\"ArgumentNullException\">\n\t\t///\t\t<paramref name=\"context\"/> is <c>null</c>.\n\t\t/// </exception>\n\t\tpublic IInputFormatter FindInputFormatter(InputFormatterContext context)\n\t\t{\n\t\t\tif (context == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(context));\n\n\t\t\treturn\n\t\t\t\t_formatters.Values\n\t\t\t\t\t.OfType<IInputFormatter>()\n\t\t\t\t\t.FirstOrDefault(formatter => formatter.CanRead(context));\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tFind the most appropriate <see cref=\"IOutputFormatter\">formatter</see> to write the specified data.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data to deserialise.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe formatter, or <c>null</c> if none of the formatters in the collection can handle the specified content type.\n\t\t/// </returns>\n\t\t/// <exception cref=\"ArgumentNullException\">\n\t\t///\t\t<paramref name=\"context\"/> is <c>null</c>.\n\t\t/// </exception>\n\t\tpublic IOutputFormatter FindOutputFormatter(OutputFormatterContext context)\n\t\t{\n\t\t\tif (context == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(context));\n\n\t\t\treturn\n\t\t\t\t_formatters.Values\n\t\t\t\t\t.OfType<IOutputFormatter>()\n\t\t\t\t\t.FirstOrDefault(formatter => formatter.CanWrite(context));\n\t\t}\n\n\t\t#endregion // Find a formatter\n\n\t\t#region IEnumerable<IFormatter>\n\n\t\t/// <summary>\n\t\t///\t\tGet a typed enumerator for the formatters in the collection.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tThe enumerator.\n\t\t/// </returns>\n\t\tpublic IEnumerator<IFormatter> GetEnumerator()\n\t\t{\n\t\t\treturn _formatters.Values.GetEnumerator();\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet an untyped enumerator for the formatters in the collection.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tThe enumerator.\n\t\t/// </returns>\n\t\tIEnumerator IEnumerable.GetEnumerator()\n\t\t{\n\t\t\treturn GetEnumerator();\n\t\t}\n\n\t\t#endregion // IEnumerable<IFormatter>\n\n\t\t#region ICollection<IFormatter>\n\n\t\t/// <summary>\n\t\t///\t\tIs the collection read-only?\n\t\t/// </summary>\n\t\tbool ICollection<IFormatter>.IsReadOnly => false;\n\n\t\t/// <summary>\n\t\t///\t\tCopy the formatters in the collection to an array.\n\t\t/// </summary>\n\t\t/// <param name=\"array\">\n\t\t///\t\tThe destination array.\n\t\t/// </param>\n\t\t/// <param name=\"arrayIndex\">\n\t\t///\t\tThe starting index in the destination array.\n\t\t/// </param>\n\t\tpublic void CopyTo(IFormatter[] array, int arrayIndex)\n\t\t{\n\t\t\tif (array == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(array));\n\n\t\t\t_formatters.Values.CopyTo(array, arrayIndex);\n\t\t}\n\n\t\t#endregion // ICollection<IFormatter>\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/FormatterCollectionExtensions.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tExtension methods for working with <see cref=\"IFormatterCollection\"/>s.\n\t/// </summary>\n    public static class FormatterCollectionExtensions\n    {\n\t\t/// <summary>\n\t\t///\t\tRemove the formatter of the specified type from the collection (if it is present).\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TFormatter\">\n\t\t///\t\tThe type of formatter to remove.\n\t\t/// </typeparam>\n\t\t/// <param name=\"formatters\">\n\t\t///\t\tThe formatter to remove.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the formatter was removed; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tpublic static bool Remove<TFormatter>(this IFormatterCollection formatters)\n\t\t\twhere TFormatter : IFormatter\n\t\t{\n\t\t\tif (formatters == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatters));\n\n\t\t\treturn formatters.Remove(typeof(TFormatter));\n\t\t}\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/FormatterRequestExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Immutable;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\nnamespace KubeClient.Http\n{\n\tusing Formatters;\n\n\t/// <summary>\n\t///\t\tExtension methods for working with <see cref=\"HttpRequest\"/>s.\n\t/// </summary>\n\tpublic static class FormatterRequestExtensions\n    {\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, configuring it to accept the JSON (\"application/json\") media type.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest ExpectJson(this HttpRequest request)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn request.AcceptMediaType(WellKnownMediaTypes.Json);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, configuring it to accept the JSON (\"application/json\") media type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> ExpectJson<TContext>(this HttpRequest<TContext> request)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn request.AcceptMediaType(WellKnownMediaTypes.Json);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, configuring it to accept the XML (\"application/json\") media type.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest ExpectXml(this HttpRequest request)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn request.AcceptMediaType(WellKnownMediaTypes.Xml);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, configuring it to accept the XML (\"application/json\") media type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> ExpectXml<TContext>(this HttpRequest<TContext> request)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn request.AcceptMediaType(WellKnownMediaTypes.Xml);\n\t\t}\n\t\t\n\t\t/// <summary>\n\t\t///\t\tBuild an HTTP request message, selecting an appropriate content formatter to serialise its body content.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"httpMethod\">\n\t\t///\t\tThe HTTP request method.\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\tThe request body content.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tThe request body media type to use.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI to use if the request does not already have an absolute request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequestMessage BuildRequestMessage(this HttpRequest request, HttpMethod httpMethod, object bodyContent, string mediaType, Uri baseUri = null)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn request.BuildRequestMessage(httpMethod, bodyContent, mediaType, OutputEncoding.UTF8, baseUri);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tBuild an HTTP request message, selecting an appropriate content formatter to serialise its body content.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"httpMethod\">\n\t\t///\t\tThe HTTP request method.\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\tThe request body content.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tThe request body media type to use.\n\t\t/// </param>\n\t\t/// <param name=\"encoding\">\n\t\t///\t\tThe request body encoding to use.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI to use if the request does not already have an absolute request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequestMessage BuildRequestMessage(this HttpRequest request, HttpMethod httpMethod, object bodyContent, string mediaType, Encoding encoding, Uri baseUri = null)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tHttpContent httpContent = bodyContent as HttpContent;\n\t\t\tif (httpContent == null && bodyContent != null)\n\t\t\t{\n\t\t\t\tIFormatterCollection formatters = request.CreateFormatterCollection();\n\n\t\t\t\tOutputFormatterContext writeContext = new OutputFormatterContext(bodyContent, bodyContent.GetType(), mediaType, encoding);\n\t\t\t\tIOutputFormatter writeFormatter = formatters.FindOutputFormatter(writeContext);\n\t\t\t\tif (writeFormatter == null)\n\t\t\t\t\tthrow new HttpRequestException($\"None of the supplied formatters can write data of type '{writeContext.DataType.FullName}' to media type '{writeContext.MediaType}'.\");\n\n\t\t\t\thttpContent = new FormattedObjectContent(writeFormatter, writeContext)\n\t\t\t\t{\n\t\t\t\t\tHeaders =\n\t\t\t\t\t{\n\t\t\t\t\t\tContentType = new MediaTypeHeaderValue(mediaType)\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn request.BuildRequestMessage(httpMethod, httpContent, baseUri);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, adding the specified content formatter.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe content formatter to add.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest WithFormatter(this HttpRequest request, IFormatter formatter)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tType formatterType = formatter.GetType();\n\n\t\t\tImmutableDictionary<Type, IFormatter> formatters = request.GetFormatters();\n\t\t\tbool isFirstFormatter = formatters.Count == 0;\n\n\t\t\tformatters = formatters.SetItem(formatterType, formatter);\n\n\t\t\treturn request.Clone(properties =>\n\t\t\t{\n\t\t\t\tproperties[MessageProperties.ContentFormatters] = formatters;\n\n\t\t\t\t// If this is the first formatter we're adding, then make sure that we'll populate the formatter collection for each outgoing request.\n\t\t\t\tif (isFirstFormatter)\n\t\t\t\t{\n\t\t\t\t\tproperties[nameof(request.RequestActions)] = request.RequestActions.Add((requestMessage, context) =>\n\t\t\t\t\t{\n#pragma warning disable CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n                        requestMessage.Properties[MessageProperties.ContentFormatters] = new FormatterCollection(formatters.Values);\n#pragma warning restore CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n\t\t\t\t\t});\n                }\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, adding the specified content formatter.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"formatterType\">\n\t\t///\t\tThe type of content formatter to remove.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest WithoutFormatter(this HttpRequest request, Type formatterType)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (formatterType == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatterType));\n\n\t\t\tImmutableDictionary<Type, IFormatter> formatters = request.GetFormatters();\n\t\t\tif (formatters == null)\n\t\t\t\treturn request;\n\n\t\t\tif (!formatters.ContainsKey(formatterType))\n\t\t\t\treturn request;\n\n\t\t\treturn request.Clone(properties =>\n\t\t\t{\n\t\t\t\tproperties[MessageProperties.ContentFormatters] = formatters.Remove(formatterType);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet the collection formatters used by the <see cref=\"HttpRequest\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn immutable dictionary of formatters, keyed by type.\n\t\t/// </returns>\n\t\tpublic static ImmutableDictionary<Type, IFormatter> GetFormatters(this HttpRequest request)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tobject formatters;\n\t\t\tif (request.Properties.TryGetValue(MessageProperties.ContentFormatters, out formatters))\n\t\t\t\treturn (ImmutableDictionary<Type, IFormatter>)formatters;\n\n\t\t\treturn ImmutableDictionary<Type, IFormatter>.Empty;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"IFormatterCollection\"/> from the request's registered formatters.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"IFormatterCollection\"/> representing the formatter collection.\n\t\t/// </returns>\n\t\tpublic static IFormatterCollection CreateFormatterCollection(this HttpRequest request)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn new FormatterCollection(\n\t\t\t\trequest.GetFormatters().Values\n\t\t\t);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/FormatterResponseExtensions.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http\n{\n\tusing Formatters;\n\n\t/// <summary>\n\t///\t\tExtension methods for the <see cref=\"HttpResponseMessage\"/>s returned asynchronously by invocation of <see cref=\"HttpRequest\"/>s by <see cref=\"HttpClient\"/>s.\n\t/// </summary>\n\tpublic static class FormatterResponseExtensions\n\t{\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type using a specific content formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tA <see cref=\"IInputFormatter\"/> that will be used to read the response body.\n\t\t/// </param>\n\t\t/// <param name=\"expectedStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that are expected and should therefore not prevent the response from being deserialised.\n\t\t///\n\t\t///\t\tIf not specified, then the standard behaviour provided by <see cref=\"HttpResponseMessage.EnsureSuccessStatusCode\"/> is used.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised response body.\n\t\t/// </returns>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody>(this Task<HttpResponseMessage> response, IInputFormatter formatter, params HttpStatusCode[] expectedStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tif (formatter == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatter));\n\n\t\t\tusing (HttpResponseMessage responseMessage = await response.ConfigureAwait(false))\n\t\t\t{\n\t\t\t\tif (!expectedStatusCodes.Contains(responseMessage.StatusCode))\n\t\t\t\t\tresponseMessage.EnsureSuccessStatusCode(); // Default behaviour.\n\n\t\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>(formatter).ConfigureAwait(false);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type, selecting the most appropriate content formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"formatters\">\n\t\t///\t\tThe <see cref=\"IFormatterCollection\"/> that will be used to select an appropriate content formatter for reading the response body.\n\t\t/// </param>\n\t\t/// <param name=\"expectedStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that are expected and should therefore not prevent the response from being deserialised.\n\t\t///\n\t\t///\t\tIf not specified, then the standard behaviour provided by <see cref=\"HttpResponseMessage.EnsureSuccessStatusCode\"/> is used.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised response body.\n\t\t/// </returns>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody>(this Task<HttpResponseMessage> response, IFormatterCollection formatters, params HttpStatusCode[] expectedStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tif (formatters == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatters));\n\n\t\t\tusing (HttpResponseMessage responseMessage = await response.ConfigureAwait(false))\n\t\t\t{\n\t\t\t\tif (!expectedStatusCodes.Contains(responseMessage.StatusCode))\n\t\t\t\t\tresponseMessage.EnsureSuccessStatusCode(); // Default behaviour.\n\n\t\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>(formatters).ConfigureAwait(false);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type using a specific content formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"expectedStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that are expected and should therefore not prevent the response from being deserialised.\n\t\t///\n\t\t///\t\tIf not specified, then the standard behaviour provided by <see cref=\"HttpResponseMessage.EnsureSuccessStatusCode\"/> is used.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised response body.\n\t\t/// </returns>\n\t\t/// <exception cref=\"InvalidOperationException\">\n\t\t///\t\tNo content formatters were configured for the request that generated the response message.\n\t\t///\n\t\t///\t\tConsider using the overload of ReadAsAsync that takes a specific <see cref=\"IInputFormatter\"/>.\n\t\t/// </exception>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody>(this Task<HttpResponseMessage> response, params HttpStatusCode[] expectedStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tusing (HttpResponseMessage responseMessage = await response.ConfigureAwait(false))\n\t\t\t{\n\t\t\t\tif (!expectedStatusCodes.Contains(responseMessage.StatusCode))\n\t\t\t\t\tresponseMessage.EnsureSuccessStatusCode(); // Default behaviour.\n\n\t\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>().ConfigureAwait(false);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe <see cref=\"IInputFormatter\"/> that will be used to read the response body.\n\t\t/// </param>\n\t\t/// <param name=\"onFailureResponse\">\n\t\t///\t\tA delegate that is called to get a <typeparamref name=\"TBody\"/> in the event that the response status code is not valid.\n\t\t/// </param>\n\t\t/// <param name=\"successStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised body.\n\t\t/// </returns>\n\t\tpublic static Task<TBody> ReadContentAsAsync<TBody>(this Task<HttpResponseMessage> response, IInputFormatter formatter, Func<TBody> onFailureResponse, params HttpStatusCode[] successStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tif (formatter == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatter));\n\n\t\t\tif (onFailureResponse == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(onFailureResponse));\n\n\t\t\treturn response.ReadContentAsAsync(formatter, responseMessage => onFailureResponse(), successStatusCodes);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe <see cref=\"IInputFormatter\"/> that will be used to read the response body.\n\t\t/// </param>\n\t\t/// <param name=\"onFailureResponse\">\n\t\t///\t\tA delegate that is called to get a <typeparamref name=\"TBody\"/> in the event that the response status code is not valid.\n\t\t/// </param>\n\t\t/// <param name=\"successStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised body.\n\t\t/// </returns>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody>(this Task<HttpResponseMessage> response, IInputFormatter formatter, Func<HttpResponseMessage, TBody> onFailureResponse, params HttpStatusCode[] successStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tif (onFailureResponse == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(onFailureResponse));\n\n\t\t\tusing (HttpResponseMessage responseMessage = await response.ConfigureAwait(false))\n\t\t\t{\n\t\t\t\tif (!successStatusCodes.Contains(responseMessage.StatusCode) && !responseMessage.IsSuccessStatusCode)\n\t\t\t\t\treturn onFailureResponse(responseMessage);\n\n\t\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>(formatter).ConfigureAwait(false);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type, selecting the most appropriate formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"onFailureResponse\">\n\t\t///\t\tA delegate that is called to get a <typeparamref name=\"TBody\"/> in the event that the response status code is not valid.\n\t\t/// </param>\n\t\t/// <param name=\"successStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised body.\n\t\t/// </returns>\n\t\tpublic static Task<TBody> ReadContentAsAsync<TBody>(this Task<HttpResponseMessage> response, Func<TBody> onFailureResponse, params HttpStatusCode[] successStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tif (onFailureResponse == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(onFailureResponse));\n\n\t\t\treturn response.ReadContentAsAsync(responseMessage => onFailureResponse(), successStatusCodes);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type, selecting the most appropriate formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"onFailureResponse\">\n\t\t///\t\tA delegate that is called to get a <typeparamref name=\"TBody\"/> in the event that the response status code is not valid.\n\t\t/// </param>\n\t\t/// <param name=\"successStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised body.\n\t\t/// </returns>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody>(this Task<HttpResponseMessage> response, Func<HttpResponseMessage, TBody> onFailureResponse, params HttpStatusCode[] successStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tif (onFailureResponse == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(onFailureResponse));\n\n\t\t\tusing (HttpResponseMessage responseMessage = await response.ConfigureAwait(false))\n\t\t\t{\n\t\t\t\tif (!successStatusCodes.Contains(responseMessage.StatusCode) && !responseMessage.IsSuccessStatusCode)\n\t\t\t\t\treturn onFailureResponse(responseMessage);\n\n\t\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>().ConfigureAwait(false);\n\t\t\t}\n        }\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type using the most appropriate formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TError\">\n\t\t///\t\tThe CLR type that will be returned in the event that the response status code is unexpected or does not represent success.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"successStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised body.\n\t\t/// </returns>\n\t\t/// <exception cref=\"HttpRequestException{TError}\">\n\t\t///\t\tThe response status code was unexpected or did not represent success.\n\t\t/// </exception>\n\t\t/// <exception cref=\"InvalidOperationException\">\n\t\t///\t\tNo formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n\t\t/// </exception>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody, TError>(this Task<HttpResponseMessage> response, params HttpStatusCode[] successStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tusing (HttpResponseMessage responseMessage = await response.ConfigureAwait(false))\n\t\t\t{\n\t\t\t\tif (!successStatusCodes.Contains(responseMessage.StatusCode) && !responseMessage.IsSuccessStatusCode)\n\t\t\t\t{\n\t\t\t\t\tTError error = await responseMessage.ReadContentAsAsync<TError>().ConfigureAwait(false);\n\n\t\t\t\t\tthrow new HttpRequestException<TError>(responseMessage.StatusCode, error);\n\t\t\t\t}\n\n\t\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>().ConfigureAwait(false);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type using the specified formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TError\">\n\t\t///\t\tThe CLR type that will be returned in the event that the response status code is unexpected or does not represent success.\n\t\t/// </typeparam>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe asynchronous response.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe <see cref=\"IInputFormatter\"/> that will be used to read the response body.\n\t\t/// </param>\n\t\t/// <param name=\"onFailureResponse\">\n\t\t///\t\tA delegate that is called to get a <typeparamref name=\"TError\"/> in the event that the response status code is unexpected or does not represent success.\n\t\t/// </param>\n\t\t/// <param name=\"successStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised body.\n\t\t/// </returns>\n\t\t/// <exception cref=\"HttpRequestException{TError}\">\n\t\t///\t\tThe response status code was unexpected or did not represent success.\n\t\t/// </exception>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody, TError>(this Task<HttpResponseMessage> response, IInputFormatter formatter, Func<HttpResponseMessage, TError> onFailureResponse, params HttpStatusCode[] successStatusCodes)\n\t\t{\n\t\t\tif (response == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(response));\n\n\t\t\tif (onFailureResponse == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(onFailureResponse));\n\n\t\t\tusing (HttpResponseMessage responseMessage = await response.ConfigureAwait(false))\n\t\t\t{\n\t\t\t\tif (!successStatusCodes.Contains(responseMessage.StatusCode) && !responseMessage.IsSuccessStatusCode)\n\t\t\t\t{\n\t\t\t\t\tTError error = onFailureResponse(responseMessage);\n\t\t\t\t\tif (error == null)\n\t\t\t\t\t\tthrow new InvalidOperationException(\"The failure response handler returned null.\");\n\n\t\t\t\t\tthrow new HttpRequestException<TError>(responseMessage.StatusCode, error);\n\t\t\t\t}\n\n\t\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>(formatter).ConfigureAwait(false);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDetermine if the response has body content.\n\t\t/// </summary>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe response message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the response has a non-zero content length.\n\t\t/// </returns>\n\t\tpublic static bool HasBody(this HttpResponseMessage responseMessage)\n\t\t{\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tif (responseMessage.Content == null)\n\t\t\t\treturn false;\n\n\t\t\treturn responseMessage.Content.Headers.ContentLength.GetValueOrDefault() > 0;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tEnsure that the response has body content.\n\t\t/// </summary>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe response message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe response message (enables inline use).\n\t\t/// </returns>\n\t\tpublic static HttpResponseMessage EnsureHasBody(this HttpResponseMessage responseMessage)\n\t\t{\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tif (responseMessage.HasBody())\n\t\t\t\treturn responseMessage;\n\n\t\t\tthrow new InvalidOperationException(\"The response body is empty.\"); // TODO: Consider custom exception type.\n        }\n\n\t\t/// <summary>\n\t\t///\t\tDeserialise the response message's content into the specified CLR data type using the most appropriate formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR data type into which the body will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe response message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised message body.\n\t\t/// </returns>\n\t\t/// <exception cref=\"InvalidOperationException\">\n\t\t///\t\tNo formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n\t\t/// </exception>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody>(this HttpResponseMessage responseMessage)\n\t\t{\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\t// TODO: All overloads should return default(TBody) instead of throwing when body is empty!\n\t\t\t// TODO: Otherwise, leave these overloads as-is, and create TryReadContentAsAsync overloads that don't throw.\n\t\t\tresponseMessage.EnsureHasBody();\n\n\t\t\tIFormatterCollection formatters = responseMessage.GetFormatters();\n\t\t\tif (formatters == null || formatters.Count == 0)\n\t\t\t\tthrow new InvalidOperationException(\"No content formatters were configured for the request that generated the response message.\"); // TODO: Consider custom exception type.\n\n\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>(formatters).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDeserialise the response message's content into the specified CLR data type using the most appropriate formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR data type into which the body will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe response message.\n\t\t/// </param>\n\t\t/// <param name=\"formatters\">\n\t\t///\t\tThe collection of content formatters from which to select an appropriate formatter.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised message body.\n\t\t/// </returns>\n\t\t/// <exception cref=\"InvalidOperationException\">\n\t\t///\t\tAn appropriate formatter could not be found in the request's list of formatters.\n\t\t/// </exception>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody>(this HttpResponseMessage responseMessage, IFormatterCollection formatters)\n\t\t{\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tif (formatters == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatters));\n\n\t\t\tresponseMessage.EnsureHasBody();\n\n\t\t\tInputFormatterContext readContext = responseMessage.Content.CreateInputFormatterContext<TBody>();\n\t\t\tIInputFormatter readFormatter = formatters.FindInputFormatter(readContext);\n\t\t\tif (readFormatter == null)\n\t\t\t\tthrow new InvalidOperationException($\"None of the supplied formatters can read data of type '{readContext.DataType.FullName}' from media type '{readContext.MediaType}'.\");\n\n\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>(readFormatter, readContext).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDeserialise the response message's body content into the specified CLR data type using the specified formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR data type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe response message.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe content formatter that will be used to deserialise the body content.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised message body.\n\t\t/// </returns>\n\t\tpublic static Task<TBody> ReadContentAsAsync<TBody>(this HttpResponseMessage responseMessage, IInputFormatter formatter)\n\t\t{\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tif (formatter == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatter));\n\n\t\t\tresponseMessage.EnsureHasBody();\n\n\t\t\tInputFormatterContext formatterContext = responseMessage.Content.CreateInputFormatterContext<TBody>();\n\n\t\t\treturn responseMessage.ReadContentAsAsync<TBody>(formatter, formatterContext);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDeserialise the response message's body content into the specified CLR data type using the specified formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR data type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe response message.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe content formatter that will be used to deserialise the body content.\n\t\t/// </param>\n\t\t/// <param name=\"formatterContext\">\n\t\t///\t\tContextual information for the formatter about the body content.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised message body.\n\t\t/// </returns>\n\t\t/// <exception cref=\"InvalidOperationException\">\n\t\t///\t\tAn appropriate formatter could not be found in the request's list of formatters.\n\t\t/// </exception>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody>(this HttpResponseMessage responseMessage, IInputFormatter formatter, InputFormatterContext formatterContext)\n\t\t{\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tif (formatter == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatter));\n\n\t\t\tif (formatterContext == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatterContext));\n\n\t\t\tresponseMessage.EnsureHasBody();\n\n\t\t\treturn await responseMessage.Content.ReadAsAsync<TBody>(formatter, formatterContext).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type using the most appropriate formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TError\">\n\t\t///\t\tThe CLR type that will be returned in the event that the response status code is unexpected or does not represent success.\n\t\t/// </typeparam>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe response message.\n\t\t/// </param>\n\t\t/// <param name=\"successStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised body.\n\t\t/// </returns>\n\t\t/// <exception cref=\"HttpRequestException{TError}\">\n\t\t///\t\tThe response status code was unexpected or did not represent success.\n\t\t/// </exception>\n\t\t/// <exception cref=\"InvalidOperationException\">\n\t\t///\t\tNo formatters were configured for the request, or an appropriate formatter could not be found in the request's list of formatters.\n\t\t/// </exception>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody, TError>(this HttpResponseMessage responseMessage, params HttpStatusCode[] successStatusCodes)\n\t\t{\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tif (!successStatusCodes.Contains(responseMessage.StatusCode) && !responseMessage.IsSuccessStatusCode)\n\t\t\t{\n\t\t\t\tTError error = await responseMessage.ReadContentAsAsync<TError>().ConfigureAwait(false);\n\n\t\t\t\tthrow new HttpRequestException<TError>(responseMessage.StatusCode, error);\n\t\t\t}\n\n\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>().ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously read the response body as the specified type using the specified formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe CLR type into which the body content will be deserialised.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TError\">\n\t\t///\t\tThe CLR type that will be returned in the event that the response status code is unexpected or does not represent success.\n\t\t/// </typeparam>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe response message.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe <see cref=\"IInputFormatter\"/> that will be used to read the response body.\n\t\t/// </param>\n\t\t/// <param name=\"onFailureResponse\">\n\t\t///\t\tA delegate that is called to get a <typeparamref name=\"TError\"/> in the event that the response status code is unexpected or does not represent success.\n\t\t/// </param>\n\t\t/// <param name=\"successStatusCodes\">\n\t\t///\t\tOptional <see cref=\"HttpStatusCode\"/>s that should be treated as representing a successful response.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised body.\n\t\t/// </returns>\n\t\t/// <exception cref=\"HttpRequestException{TError}\">\n\t\t///\t\tThe response status code was unexpected or did not represent success.\n\t\t/// </exception>\n\t\tpublic static async Task<TBody> ReadContentAsAsync<TBody, TError>(this HttpResponseMessage responseMessage, IInputFormatter formatter, Func<HttpResponseMessage, TError> onFailureResponse, params HttpStatusCode[] successStatusCodes)\n\t\t{\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tif (onFailureResponse == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(onFailureResponse));\n\n\t\t\tif (!successStatusCodes.Contains(responseMessage.StatusCode) && !responseMessage.IsSuccessStatusCode)\n\t\t\t{\n\t\t\t\tTError error = onFailureResponse(responseMessage);\n\t\t\t\tif (error == null)\n\t\t\t\t\tthrow new InvalidOperationException(\"The failure response handler returned null.\");\n\n\t\t\t\tthrow new HttpRequestException<TError>(responseMessage.StatusCode, error);\n\t\t\t}\n\n\t\t\treturn await responseMessage.ReadContentAsAsync<TBody>(formatter).ConfigureAwait(false);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/FormatterTypedRequestExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Immutable;\nusing System.Net.Http;\nusing System.Net.Http.Headers;\nusing System.Text;\n\nnamespace KubeClient.Http\n{\n\tusing Formatters;\n\n\t/// <summary>\n\t///\t\tExtension methods for working with <see cref=\"HttpRequest\"/>s.\n\t/// </summary>\n\tpublic static class FormatterTypedRequestExtensions\n    {\n\t\t/// <summary>\n\t\t///\t\tBuild an HTTP request message, selecting an appropriate content formatter to serialise its body content.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"httpMethod\">\n\t\t///\t\tThe HTTP request method.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance to use as a context for resolving deferred template parameters.\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\tThe request body content.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tThe request body media type to use.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI to use if the request does not already have an absolute request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequestMessage BuildRequestMessage<TContext>(this HttpRequest<TContext> request, HttpMethod httpMethod, TContext context, object bodyContent, string mediaType, Uri baseUri = null)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn request.BuildRequestMessage(httpMethod, context, bodyContent, mediaType, OutputEncoding.UTF8, baseUri);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tBuild an HTTP request message, selecting an appropriate content formatter to serialise its body content.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"httpMethod\">\n\t\t///\t\tThe HTTP request method.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance to use as a context for resolving deferred template parameters.\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\tThe request body content.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tThe request body media type to use.\n\t\t/// </param>\n\t\t/// <param name=\"encoding\">\n\t\t///\t\tThe request body encoding to use.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI to use if the request does not already have an absolute request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequestMessage BuildRequestMessage<TContext>(this HttpRequest<TContext> request, HttpMethod httpMethod, TContext context, object bodyContent, string mediaType, Encoding encoding, Uri baseUri = null)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tHttpContent httpContent = bodyContent as HttpContent;\n\t\t\tif (httpContent == null && bodyContent != null)\n\t\t\t{\n\t\t\t\thttpContent.Headers.ContentType = new MediaTypeHeaderValue(mediaType);\n\n\t\t\t\tIFormatterCollection formatters = request.CreateFormatterCollection();\n\n\t\t\t\tOutputFormatterContext writeContext = new OutputFormatterContext(bodyContent, bodyContent.GetType(), mediaType, encoding);\n\t\t\t\tIOutputFormatter writeFormatter = formatters.FindOutputFormatter(writeContext);\n\t\t\t\tif (writeFormatter == null)\n\t\t\t\t\tthrow new HttpRequestException($\"None of the supplied formatters can write data of type '{writeContext.DataType.FullName}' to media type '{writeContext.MediaType}'.\");\n\n\t\t\t\thttpContent = new FormattedObjectContent(writeFormatter, writeContext);\n\t\t\t}\n\n\t\t\treturn request.BuildRequestMessage(httpMethod, context, httpContent, baseUri);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, adding the specified content formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe content formatter to add.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithFormatter<TContext>(this HttpRequest<TContext> request, IFormatter formatter)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tType formatterType = formatter.GetType();\n\n\t\t\treturn request.Clone(properties =>\n\t\t\t{\n\t\t\t\tImmutableDictionary<Type, IFormatter> formatters = request.GetFormatters();\n\n\t\t\t\t// If this is the first formatter we're adding, then make sure that we'll populate the formatter collection for each outgoing request.\n\t\t\t\tif (formatters.Count == 0)\n\t\t\t\t{\n\t\t\t\t\tproperties[nameof(request.RequestActions)] = request.RequestActions.Add((requestMessage, context) =>\n\t\t\t\t\t{\n#pragma warning disable CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n                        requestMessage.Properties[MessageProperties.ContentFormatters] = new FormatterCollection(formatters.Values);\n#pragma warning restore CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n                    });\n\t\t\t\t}\n\n\t\t\t\tproperties[MessageProperties.ContentFormatters] = formatters.SetItem(formatterType, formatter);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, adding the specified content formatter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"formatterType\">\n\t\t///\t\tThe type of content formatter to remove.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithoutFormatter<TContext>(this HttpRequest<TContext> request, Type formatterType)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (formatterType == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatterType));\n\n\t\t\tImmutableDictionary<Type, IFormatter> formatters = request.GetFormatters();\n\t\t\tif (formatters == null)\n\t\t\t\treturn request;\n\n\t\t\tif (!formatters.ContainsKey(formatterType))\n\t\t\t\treturn request;\n\n\t\t\treturn request.Clone(properties =>\n\t\t\t{\n\t\t\t\tproperties[MessageProperties.ContentFormatters] = formatters.Remove(formatterType);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet the collection formatters used by the <see cref=\"HttpRequest\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn immutable dictionary of formatters, keyed by type.\n\t\t/// </returns>\n\t\tpublic static ImmutableDictionary<Type, IFormatter> GetFormatters<TContext>(this HttpRequest<TContext> request)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tobject formatters;\n\t\t\tif (request.Properties.TryGetValue(MessageProperties.ContentFormatters, out formatters))\n\t\t\t\treturn (ImmutableDictionary<Type, IFormatter>)formatters;\n\n\t\t\treturn ImmutableDictionary<Type, IFormatter>.Empty;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"IFormatterCollection\"/> from the request's registered formatters.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"IFormatterCollection\"/> representing the formatter collection.\n\t\t/// </returns>\n\t\tpublic static IFormatterCollection CreateFormatterCollection<TContext>(this HttpRequest<TContext> request)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn new FormatterCollection(\n\t\t\t\trequest.GetFormatters().Values\n\t\t\t);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/IFormatter.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tRepresents a content formatter.\n\t/// </summary>\n    public interface IFormatter\n    {\n\t\t/// <summary>\n\t\t///\t\tContent types supported by the formatter.\n\t\t/// </summary>\n\t\tISet<string> SupportedMediaTypes { get; }\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/IFormatterCollection.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tRepresents a collection of <see cref=\"IFormatter\">content formatter</see>s.\n\t/// </summary>\n    public interface IFormatterCollection\n\t\t: ICollection<IFormatter>\n\t{\n\t\t/// <summary>\n\t\t///\t\tGet the most appropriate <see cref=\"IInputFormatter\">formatter</see> to read the specified data.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data to deserialise.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe formatter, or <c>null</c> if none of the formatters in the collection can handle the specified content type.\n\t\t/// </returns>\n\t\t/// <exception cref=\"ArgumentNullException\">\n\t\t///\t\t<paramref name=\"context\"/> is <c>null</c>.\n\t\t/// </exception>\n\t\tIInputFormatter FindInputFormatter(InputFormatterContext context);\n\n\t\t/// <summary>\n\t\t///\t\tFind the most appropriate <see cref=\"IOutputFormatter\">formatter</see> to write the specified data.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data to deserialise.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe formatter, or <c>null</c> if none of the formatters in the collection can handle the specified content type.\n\t\t/// </returns>\n\t\t/// <exception cref=\"ArgumentNullException\">\n\t\t///\t\t<paramref name=\"context\"/> is <c>null</c>.\n\t\t/// </exception>\n\t\tIOutputFormatter FindOutputFormatter(OutputFormatterContext context);\n\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the collection contains a formatter of the specified type.\n\t\t/// </summary>\n\t\t/// <param name=\"formatterType\">\n\t\t///\t\tThe formatter type.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the collection contains a formatter of the specified type; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tbool Contains(Type formatterType);\n\n\t\t/// <summary>\n\t\t///\t\tRemove the formatter of the specified type (if it is present in the collection).\n\t\t/// </summary>\n\t\t/// <param name=\"formatterType\">\n\t\t///\t\tThe type of formatter to remove.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the formatter was removed; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tbool Remove(Type formatterType);\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/IInputFormatter.cs",
    "content": "﻿using System.IO;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tRepresents a facility for deserialising data for one or more media types.\n\t/// </summary>\n    public interface IInputFormatter\n\t\t: IFormatter\n\t{\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the formatter can deserialise the specified data.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data being deserialised.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the formatter can deserialise the data; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tbool CanRead(InputFormatterContext context);\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously deserialise data from an input stream.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data being deserialised.\n\t\t/// </param>\n\t\t/// <param name=\"stream\">\n\t\t///\t\tThe input stream from which to read serialised data.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised object.\n\t\t/// </returns>\n\t\tTask<object> ReadAsync(InputFormatterContext context, Stream stream);\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/IInputOutputFormatter.cs",
    "content": "﻿namespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tRepresents a formatter that can both serialise and deserialise data.\n\t/// </summary>\n    public interface IInputOutputFormatter\n\t\t: IInputFormatter, IOutputFormatter\n    {\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/IOutputFormatter.cs",
    "content": "﻿using System.IO;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tRepresents a facility for serialising data to one or more media types.\n\t/// </summary>\n    public interface IOutputFormatter\n\t\t: IFormatter\n    {\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the formatter can serialise the specified data.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data being serialised.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the formatter can serialise the data; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tbool CanWrite(OutputFormatterContext context);\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously serialise data to an output stream.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data being deserialised.\n\t\t/// </param>\n\t\t/// <param name=\"stream\">\n\t\t///\t\tThe output stream to which the serialised data will be written.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing the asynchronous operation.\n\t\t/// </returns>\n\t\tTask WriteAsync(OutputFormatterContext context, Stream stream);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/InputFormatterContext.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Text;\nusing System.Threading;\n\nnamespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tContextual information used by input formatters.\n\t/// </summary>\n\tpublic class InputFormatterContext\n\t{\n        /// <summary>\n        ///\t\tCreate a new <see cref=\"InputFormatterContext\"/>.\n        /// </summary>\n        /// <param name=\"dataType\">\n        ///\t\tThe CLR type into which the data will be deserialised.\n        /// </param>\n        /// <param name=\"mediaType\">\n        ///\t\tThe media type that the formatter should expect.\n        /// </param>\n        /// <param name=\"encoding\">\n        ///\t\tThe content encoding that the formatter should expect.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"System.Threading.CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        public InputFormatterContext(Type dataType, string mediaType, Encoding encoding, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tDataType = dataType;\n\t\t\tMediaType = mediaType;\n\t\t\tEncoding = encoding;\n            CancellationToken = cancellationToken;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe CLR type into which the data will be deserialised.\n\t\t/// </summary>\n\t\tpublic Type DataType { get; }\n\n\t\t/// <summary>\n\t\t///\t\tThe media type that the formatter should expect.\n\t\t/// </summary>\n\t\tpublic string MediaType { get; }\n\n\t\t/// <summary>\n\t\t///\t\tThe content encoding that the formatter should expect.\n\t\t/// </summary>\n\t\tpublic Encoding Encoding { get; }\n\n        /// <summary>\n        ///     A <see cref=\"System.Threading.CancellationToken\"/> that can be used to cancel the operation.\n        /// </summary>\n        public CancellationToken CancellationToken { get; }\n\n        /// <summary>\n        ///\t\tCreate a <see cref=\"TextReader\"/> from the specified input stream.\n        /// </summary>\n        /// <param name=\"inputStream\">\n        ///\t\tThe input stream.\n        /// </param>\n        /// <returns>\n        ///\t\tThe <see cref=\"TextReader\"/>.\n        /// </returns>\n        /// <remarks>\n        ///\t\tThe <see cref=\"TextReader\"/>, when closed, will not close the input stream.\n        /// </remarks>\n        public virtual TextReader CreateReader(Stream inputStream)\n\t\t{\n\t\t\tif (inputStream == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(inputStream));\n\n\t\t\treturn StreamHelper.CreateTransientTextReader(inputStream, Encoding);\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/KubeClient.Http/Formatters/Json/JsonFormatter.cs",
    "content": "﻿#if NET8_0_OR_GREATER\n\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text.Json;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Formatters.Json\n{\n    /// <summary>\n    ///\t\tContent formatter for JSON using .Json (JSON.NET).\n    /// </summary>\n    public class JsonFormatter\n        : IInputFormatter, IOutputFormatter\n    {\n        /// <summary>\n        ///\t\tCreate a new <see cref=\"JsonFormatter\"/>.\n        /// </summary>\n        public JsonFormatter()\n        {\n        }\n\n        /// <summary>\n        ///\t\tSettings for the JSON serialiser.\n        /// </summary>\n        public JsonSerializerOptions JsonSerializerOptions { get; set; }\n\n        /// <summary>\n        ///\t\tContent types supported by the formatter.\n        /// </summary>\n        public ISet<string> SupportedMediaTypes { get; } = new HashSet<string> { WellKnownMediaTypes.Json };\n\n        /// <summary>\n        ///\t\tDetermine whether the formatter can deserialise the specified data.\n        /// </summary>\n        /// <param name=\"context\">\n        ///\t\tContextual information about the data being deserialised.\n        /// </param>\n        /// <returns>\n        ///\t\t<c>true</c>, if the formatter can deserialise the data; otherwise, <c>false</c>.\n        /// </returns>\n        public bool CanRead(InputFormatterContext context)\n        {\n            if (context == null)\n                throw new ArgumentNullException(nameof(context));\n\n            return SupportedMediaTypes.Contains(context.MediaType);\n        }\n\n        /// <summary>\n        ///\t\tDetermine whether the formatter can serialise the specified data.\n        /// </summary>\n        /// <param name=\"context\">\n        ///\t\tContextual information about the data being serialised.\n        /// </param>\n        /// <returns>\n        ///\t\t<c>true</c>, if the formatter can serialise the data; otherwise, <c>false</c>.\n        /// </returns>\n        public bool CanWrite(OutputFormatterContext context)\n        {\n            if (context == null)\n                throw new ArgumentNullException(nameof(context));\n\n            return SupportedMediaTypes.Contains(context.MediaType);\n        }\n\n        /// <summary>\n        ///\t\tAsynchronously deserialise data from an input stream.\n        /// </summary>\n        /// <param name=\"context\">\n        ///\t\tContextual information about the data being deserialised.\n        /// </param>\n        /// <param name=\"stream\">\n        ///\t\tThe input stream from which to read serialised data.\n        /// </param>\n        /// <returns>\n        ///\t\tThe deserialised object.\n        /// </returns>\n        public async Task<object> ReadAsync(InputFormatterContext context, Stream stream)\n        {\n            if (context == null)\n                throw new ArgumentNullException(nameof(context));\n\n            if (stream == null)\n                throw new ArgumentNullException(nameof(stream));\n\n            return await JsonSerializer.DeserializeAsync(stream, context.DataType, JsonSerializerOptions, context.CancellationToken).ConfigureAwait(false);\n        }\n\n        /// <summary>\n        ///\t\tAsynchronously serialise data to an output stream.\n        /// </summary>\n        /// <param name=\"context\">\n        ///\t\tContextual information about the data being deserialised.\n        /// </param>\n        /// <param name=\"stream\">\n        ///\t\tThe output stream to which the serialised data will be written.\n        /// </param>\n        /// <returns>\n        ///\t\tA <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        public async Task WriteAsync(OutputFormatterContext context, Stream stream)\n        {\n            if (context == null)\n                throw new ArgumentNullException(nameof(context));\n\n            if (stream == null)\n                throw new ArgumentNullException(nameof(stream));\n\n            if (!SupportedMediaTypes.Contains(context.MediaType))\n                throw new NotSupportedException($\"The {nameof(JsonFormatter)} cannot write content of type '{context.MediaType}'.\");\n\n            await JsonSerializer.SerializeAsync(stream, context.Data, JsonSerializerOptions, context.CancellationToken).ConfigureAwait(false);\n        }\n    }\n}\n\n#endif // NET8_0_OR_GREATER\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/Json/NewtonsoftJsonFormatter.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Formatters.Json\n{\n\t/// <summary>\n\t///\t\tContent formatter for JSON using Newtonsoft.Json (JSON.NET).\n\t/// </summary>\n\tpublic class NewtonsoftJsonFormatter\n\t\t: IInputFormatter, IOutputFormatter\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"NewtonsoftJsonFormatter\"/>.\n\t\t/// </summary>\n\t\tpublic NewtonsoftJsonFormatter()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tSettings for the JSON serialiser.\n\t\t/// </summary>\n\t\tpublic JsonSerializerSettings SerializerSettings { get; set; }\n\n\t\t/// <summary>\n\t\t///\t\tContent types supported by the formatter.\n\t\t/// </summary>\n\t\tpublic ISet<string> SupportedMediaTypes { get; } = new HashSet<string> { WellKnownMediaTypes.Json };\n\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the formatter can deserialise the specified data.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data being deserialised.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the formatter can deserialise the data; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tpublic bool CanRead(InputFormatterContext context)\n\t\t{\n\t\t\tif (context == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(context));\n\n\t\t\treturn SupportedMediaTypes.Contains(context.MediaType);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the formatter can serialise the specified data.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data being serialised.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the formatter can serialise the data; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tpublic bool CanWrite(OutputFormatterContext context)\n\t\t{\n\t\t\tif (context == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(context));\n\n\t\t\treturn SupportedMediaTypes.Contains(context.MediaType);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously deserialise data from an input stream.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data being deserialised.\n\t\t/// </param>\n\t\t/// <param name=\"stream\">\n\t\t///\t\tThe input stream from which to read serialised data.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe deserialised object.\n\t\t/// </returns>\n\t\tpublic Task<object> ReadAsync(InputFormatterContext context, Stream stream)\n\t\t{\n\t\t\tif (context == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(context));\n\n\t\t\tif (stream == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(stream));\n\n\t\t\tusing (TextReader reader = context.CreateReader(stream))\n\t\t\t{\n\t\t\t\tJsonSerializer serializer = JsonSerializer.Create(SerializerSettings);\n\t\t\t\tobject data = serializer.Deserialize(reader, context.DataType);\n\n\t\t\t\treturn Task.FromResult(data);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously serialise data to an output stream.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tContextual information about the data being deserialised.\n\t\t/// </param>\n\t\t/// <param name=\"stream\">\n\t\t///\t\tThe output stream to which the serialised data will be written.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing the asynchronous operation.\n\t\t/// </returns>\n\t\tpublic Task WriteAsync(OutputFormatterContext context, Stream stream)\n\t\t{\n\t\t\tif (context == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(context));\n\n\t\t\tif (stream == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(stream));\n\n\t\t\tif (!SupportedMediaTypes.Contains(context.MediaType))\n\t\t\t\tthrow new NotSupportedException($\"The {nameof(NewtonsoftJsonFormatter)} cannot write content of type '{context.MediaType}'.\");\n\n\t\t\tusing (TextWriter writer = context.CreateWriter(stream))\n\t\t\t{\n\t\t\t\tJsonSerializer serializer = JsonSerializer.Create(SerializerSettings);\n\t\t\t\tserializer.Serialize(writer, context.Data, context.DataType);\n\t\t\t}\n\n\t\t\treturn Task.CompletedTask;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/Json/NewtonsoftJsonFormatterExtensions.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\n\nnamespace KubeClient.Http\n{\n\tusing Formatters;\n\tusing Formatters.Json;\n\t\n\t/// <summary>\n\t///\t\tExtension methods for content formatters.\n\t/// </summary>\n    public static class NewtonsoftJsonFormatterExtensions\n    {\n\t\t/// <summary>\n\t\t///\t\tAdd the JSON content formatter.\n\t\t/// </summary>\n\t\t/// <param name=\"formatters\">\n\t\t///\t\tThe content formatter collection.\n\t\t/// </param>\n\t\t/// <param name=\"serializerSettings\">\n\t\t///\t\tOptional settings for the JSON serialiser.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe content formatter collection (enables method-chaining).\n\t\t/// </returns>\n\t\tpublic static IFormatterCollection AddJsonFormatter(this IFormatterCollection formatters, JsonSerializerSettings serializerSettings = null)\n\t\t{\n\t\t\tif (formatters == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatters));\n\n\t\t\tformatters.Add(new NewtonsoftJsonFormatter\n\t\t\t{\n\t\t\t\tSerializerSettings = serializerSettings\n\t\t\t});\n\n\t\t\treturn formatters;\n\t\t}\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/Json/NewtonsoftJsonFormatterFactoryExtensions.cs",
    "content": "﻿using Newtonsoft.Json;\nusing System;\n\nnamespace KubeClient.Http\n{\n\tusing Formatters.Json;\n\t\n\t/// <summary>\n\t///\t\tJSON request extension methods for <see cref=\"HttpRequestFactory\"/>.\n\t/// </summary>\n\tpublic static class NewtonsoftJsonFormatterFactoryExtensions\n    {\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request that expects and uses JSON as its primary format.\n\t\t/// </summary>\n\t\t/// <param name=\"requestFactory\">\n\t\t///\t\tThe HTTP request factory.\n\t\t/// </param>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI (can be relative or absolute).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest Json(this HttpRequestFactory requestFactory, string requestUri)\n\t\t{\n\t\t\tif (requestFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestFactory));\n\n\t\t\treturn requestFactory.Json(requestUri, null);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request that expects and uses JSON as its primary format.\n\t\t/// </summary>\n\t\t/// <param name=\"requestFactory\">\n\t\t///\t\tThe HTTP request factory.\n\t\t/// </param>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI (can be relative or absolute).\n\t\t/// </param>\n\t\t/// <param name=\"serializerSettings\">\n\t\t///\t\tThe JSON serialiser settings used by the <see cref=\"NewtonsoftJsonFormatter\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest Json(this HttpRequestFactory requestFactory, string requestUri, JsonSerializerSettings serializerSettings)\n\t\t{\n\t\t\tif (requestFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestFactory));\n\n\t\t\tif (String.IsNullOrWhiteSpace(requestUri))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'requestUri'.\", nameof(requestUri));\n\n\t\t\treturn\n\t\t\t\trequestFactory.Create(requestUri)\n\t\t\t\t\t.ExpectJson()\n\t\t\t\t\t.UseJson(serializerSettings);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request that expects and uses JSON as its primary format.\n\t\t/// </summary>\n\t\t/// <param name=\"requestFactory\">\n\t\t///\t\tThe HTTP request factory.\n\t\t/// </param>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI (can be relative or absolute).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest Json(this HttpRequestFactory requestFactory, Uri requestUri)\n\t\t{\n\t\t\tif (requestFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestFactory));\n\n\t\t\treturn requestFactory.Json(requestUri, null);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request that expects and uses JSON as its primary format.\n\t\t/// </summary>\n\t\t/// <param name=\"requestFactory\">\n\t\t///\t\tThe HTTP request factory.\n\t\t/// </param>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI (can be relative or absolute).\n\t\t/// </param>\n\t\t/// <param name=\"serializerSettings\">\n\t\t///\t\tThe JSON serialiser settings used by the <see cref=\"NewtonsoftJsonFormatter\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest Json(this HttpRequestFactory requestFactory, Uri requestUri, JsonSerializerSettings serializerSettings)\n\t\t{\n\t\t\tif (requestFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestFactory));\n\n\t\t\tif (requestUri == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestUri));\n\n\t\t\treturn\n\t\t\t\trequestFactory.Create(requestUri)\n\t\t\t\t\t.ExpectJson()\n\t\t\t\t\t.UseJson(serializerSettings);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/Json/NewtonsoftJsonFormatterRequestExtensions.cs",
    "content": "using Newtonsoft.Json;\nusing System;\n\nnamespace KubeClient.Http\n{\n\tusing Formatters.Json;\n\n\t/// <summary>\n\t///\t\tFormatter-related extension methods for <see cref=\"HttpRequest\"/> / <see cref=\"HttpRequest{TContext}\"/>.\n\t/// </summary>\n\tpublic static class NewtonsoftJsonFormatterRequestExtensions\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest\"/>, configuring it to only use the JSON formatters.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"serializerSettings\">\n\t\t///\t\t<see cref=\"JsonSerializerSettings\"/> used to configure the formatter's behaviour.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest UseJson(this HttpRequest request, JsonSerializerSettings serializerSettings = null)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\t// TODO: Clear all existing formatters, first.\n\n\t\t\treturn request.WithFormatter(new NewtonsoftJsonFormatter\n\t\t\t{\n\t\t\t\tSerializerSettings = serializerSettings\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the <see cref=\"HttpRequest{TContext}\"/>, configuring it to only use the JSON formatters.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"serializerSettings\">\n\t\t///\t\t<see cref=\"JsonSerializerSettings\"/> used to configure the formatter's behaviour.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> UseJson<TContext>(this HttpRequest<TContext> request, JsonSerializerSettings serializerSettings = null)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\t// TODO: Clear all existing formatters, first.\n\n\t\t\treturn request.WithFormatter(new NewtonsoftJsonFormatter\n\t\t\t{\n\t\t\t\tSerializerSettings = serializerSettings\n\t\t\t});\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/Json/NewtonsoftJsonFormatterTypedFactoryExtensions.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.Formatters.Json\n{\n\t/// <summary>\n\t///\t\tJSON request extension methods for <see cref=\"HttpRequestFactory{TContext}\"/>.\n\t/// </summary>\n\tpublic static class NewtonsoftJsonFormatterTypedFactoryExtensions\n    {\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request that expects and uses JSON as its primary format.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"requestFactory\">\n\t\t///\t\tThe HTTP request factory.\n\t\t/// </param>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI (can be relative or absolute).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> Json<TContext>(this HttpRequestFactory<TContext> requestFactory, string requestUri)\n\t\t{\n\t\t\tif (requestFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestFactory));\n\n\t\t\tif (String.IsNullOrWhiteSpace(requestUri))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'requestUri'.\", nameof(requestUri));\n\n\t\t\treturn\n\t\t\t\trequestFactory.Create(requestUri)\n\t\t\t\t\t.ExpectJson()\n\t\t\t\t\t.UseJson();\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request that expects and uses JSON as its primary format.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"requestFactory\">\n\t\t///\t\tThe HTTP request factory.\n\t\t/// </param>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI (can be relative or absolute).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> Json<TContext>(this HttpRequestFactory<TContext> requestFactory, Uri requestUri)\n\t\t{\n\t\t\tif (requestFactory == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestFactory));\n\n\t\t\tif (requestUri == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestUri));\n\n\t\t\treturn\n\t\t\t\trequestFactory.Create(requestUri)\n\t\t\t\t\t.ExpectJson()\n\t\t\t\t\t.UseJson();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/MessageExtensions.cs",
    "content": "﻿using System;\nusing System.Net.Http;\n\nnamespace KubeClient.Http\n{\n\tusing Formatters;\n\n    // TODO: Consider migrating to HttpRequestOptions (requires net9.0 or newer).\n\n    /// <summary>\n    ///\t\tFormatter-related extension methods for <see cref=\"HttpRequestMessage\"/> / <see cref=\"HttpResponseMessage\"/>.\n    /// </summary>\n    public static class FormatterMessageExtensions\n    {\n\t\t/// <summary>\n\t\t///\t\tGet the message's <see cref=\"IFormatterCollection\"/> (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"message\">\n\t\t///\t\tThe HTTP request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe content formatters, or <c>null</c> if the message does not have any associated formatters.\n\t\t/// </returns>\n\t\tpublic static IFormatterCollection GetFormatters(this HttpRequestMessage message)\n\t\t{\n\t\t\tif (message == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(message));\n\n#pragma warning disable CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n            object contentFormatters;\n\t\t\tmessage.Properties.TryGetValue(MessageProperties.ContentFormatters, out contentFormatters);\n#pragma warning restore CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n\n            return (IFormatterCollection)contentFormatters;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet the message's <see cref=\"IFormatterCollection\"/> (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"message\">\n\t\t///\t\tThe HTTP request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe content formatters, or <c>null</c> if the message does not have any associated formatters.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tCan only be called on an <see cref=\"HttpResponseMessage\"/> whose <see cref=\"HttpResponseMessage.RequestMessage\"/> contains a valid <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </remarks>\n\t\tpublic static IFormatterCollection GetFormatters(this HttpResponseMessage message)\n\t\t{\n\t\t\tif (message == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(message));\n\n\t\t\tHttpRequestMessage requestMessage = message.RequestMessage;\n\t\t\tif (requestMessage == null)\n\t\t\t\tthrow new InvalidOperationException(\"This operation is only valid on a response message produced by invoking an HttpRequest (the response message does not have an associated request message).\");\n\n#pragma warning disable CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n            object contentFormatters;\n            message.RequestMessage.Properties.TryGetValue(MessageProperties.ContentFormatters, out contentFormatters);\n#pragma warning restore CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n\n            return (IFormatterCollection)contentFormatters;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tSet the message's <see cref=\"IFormatterCollection\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"message\">\n\t\t///\t\tThe HTTP request message.\n\t\t/// </param>\n\t\t/// <param name=\"contentFormatters\">\n\t\t///\t\tThe content formatters (if any).\n\t\t/// </param>\n\t\tpublic static void SetFormatters(this HttpRequestMessage message, IFormatterCollection contentFormatters)\n\t\t{\n\t\t\tif (message == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(message));\n\n#pragma warning disable CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n            message.Properties[MessageProperties.ContentFormatters] = contentFormatters;\n#pragma warning restore CS0618 // Type or member is obsolete (HttpRequestMessage.Properties is obsolete in net9.0, replaced by HttpRequestMessage.Options)\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/OutputFormatterContext.cs",
    "content": "﻿using System;\nusing System.Text;\n\nnamespace KubeClient.Http.Formatters\n{\n\tusing System.IO;\n    using System.Threading;\n\n    /// <summary>\n    ///\t\tContextual information used by output formatters.\n    /// </summary>\n\tpublic class OutputFormatterContext\n\t{\n        /// <summary>\n        ///\t\tCreate a new <see cref=\"OutputFormatterContext\"/>.\n        /// </summary>\n        /// <param name=\"data\">\n        ///\t\tThe data being serialised.\n        /// </param>\n        /// <param name=\"dataType\">\n        ///\t\tThe CLR type whose data will be serialised.\n        /// </param>\n        /// <param name=\"mediaType\">\n        ///\t\tThe media type that the formatter should produced.\n        /// </param>\n        /// <param name=\"encoding\">\n        ///\t\tThe content encoding that the formatter should use.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     An optional <see cref=\"System.Threading.CancellationToken\"/> that can be used to cancel the operation.\n        /// </param>\n        public OutputFormatterContext(object data, Type dataType, string mediaType, Encoding encoding, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tData = data;\n\t\t\tDataType = dataType;\n\t\t\tMediaType = mediaType;\n\t\t\tEncoding = encoding;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe data being serialised.\n\t\t/// </summary>\n\t\tpublic object Data { get; }\n\n\t\t/// <summary>\n\t\t///\t\tThe CLR type whose data will be serialised.\n\t\t/// </summary>\n\t\tpublic Type DataType { get; }\n\n\t\t/// <summary>\n\t\t///\t\tThe content type being serialised.\n\t\t/// </summary>\n\t\tpublic string MediaType { get; }\n\n\t\t/// <summary>\n\t\t///\t\tThe content encoding.\n\t\t/// </summary>\n\t\tpublic Encoding Encoding { get; }\n\n        /// <summary>\n        ///     A <see cref=\"System.Threading.CancellationToken\"/> that can be used to cancel the operation.\n        /// </summary>\n        public CancellationToken CancellationToken { get; }\n\n        /// <summary>\n        ///\t\tCreate a <see cref=\"TextWriter\"/> from the specified output stream.\n        /// </summary>\n        /// <param name=\"outputStream\">\n        ///\t\tThe output stream.\n        /// </param>\n        /// <returns>\n        ///\t\tThe <see cref=\"TextWriter\"/>.\n        /// </returns>\n        /// <remarks>\n        ///\t\tThe <see cref=\"TextWriter\"/>, when closed, will not close the output stream.\n        /// </remarks>\n        public virtual TextWriter CreateWriter(Stream outputStream)\n\t\t{\n\t\t\tif (outputStream == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(outputStream));\n\n\t\t\treturn StreamHelper.CreateTransientTextWriter(outputStream, Encoding);\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/KubeClient.Http/Formatters/StreamHelper.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Text;\n\nnamespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tHelper methods for formatters working with streams.\n\t/// </summary>\n\tstatic class StreamHelper\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe default buffer size for <see cref=\"TextReader\"/>s / <see cref=\"TextWriter\"/>s created by the helper.\n\t\t/// </summary>\n\t\tpublic const int DefaultBufferSize = 1024;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a <see cref=\"TextReader\"/> that, when it is closed, leaves its input stream open.\n\t\t/// </summary>\n\t\t/// <param name=\"inputStream\">\n\t\t///\t\tThe input stream.\n\t\t/// </param>\n\t\t/// <param name=\"encoding\">\n\t\t///\t\tThe stream's text encoding.\n\t\t/// </param>\n\t\t/// <param name=\"bufferSize\">\n\t\t///\t\tAn optional buffer size.\n\t\t/// \n\t\t///\t\tDefaults to <see cref=\"DefaultBufferSize\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"TextReader\"/>.\n\t\t/// </returns>\n\t\tpublic static TextReader CreateTransientTextReader(Stream inputStream, Encoding encoding, int bufferSize = DefaultBufferSize)\n\t\t{\n\t\t\tif (inputStream == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(inputStream));\n\n\t\t\tif (encoding == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(encoding));\n\n\t\t\tif (bufferSize < DefaultBufferSize)\n\t\t\t\tthrow new ArgumentOutOfRangeException(nameof(bufferSize), bufferSize, $\"Buffer size cannot be less than {bufferSize} bytes.\");\n\n\t\t\treturn new StreamReader(inputStream, encoding,\n\t\t\t\tdetectEncodingFromByteOrderMarks: false,\n\t\t\t\tbufferSize: bufferSize,\n\t\t\t\tleaveOpen: true\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a <see cref=\"TextWriter\"/> that, when it is closed, leaves its output stream open.\n\t\t/// </summary>\n\t\t/// <param name=\"outputStream\">\n\t\t///\t\tThe output stream.\n\t\t/// </param>\n\t\t/// <param name=\"encoding\">\n\t\t///\t\tThe stream's text encoding.\n\t\t/// </param>\n\t\t/// <param name=\"bufferSize\">\n\t\t///\t\tAn optional buffer size.\n\t\t/// \n\t\t///\t\tDefaults to <see cref=\"DefaultBufferSize\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"TextWriter\"/>.\n\t\t/// </returns>\n\t\tpublic static TextWriter CreateTransientTextWriter(Stream outputStream, Encoding encoding, int bufferSize = DefaultBufferSize)\n\t\t{\n\t\t\tif (outputStream == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(outputStream));\n\n\t\t\tif (encoding == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(encoding));\n\n\t\t\tif (bufferSize < DefaultBufferSize)\n\t\t\t\tthrow new ArgumentOutOfRangeException(nameof(bufferSize), bufferSize, $\"Buffer size cannot be less than {bufferSize} bytes.\");\n\n\t\t\treturn new StreamWriter(outputStream, encoding,\n\t\t\t\tbufferSize: bufferSize,\n\t\t\t\tleaveOpen: true\n\t\t\t);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Formatters/WellKnownMediaTypes.cs",
    "content": "﻿namespace KubeClient.Http.Formatters\n{\n\t/// <summary>\n\t///\t\tWell-known media type constants.\n\t/// </summary>\n\tpublic static class WellKnownMediaTypes\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe JSON media type.\n\t\t/// </summary>\n\t\tpublic static readonly string Json = \"application/json\";\n\n\t\t/// <summary>\n\t\t///\t\tThe plain-text media type.\n\t\t/// </summary>\n\t\tpublic static readonly string PlainText = \"text/plain\";\n\n\t\t/// <summary>\n\t\t///\t\tThe JSON media type.\n\t\t/// </summary>\n\t\tpublic static readonly string Xml = \"text/xml\";\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/HttpRequest.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Collections.Specialized;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Net.Http;\n\nnamespace KubeClient.Http\n{\n    using Utilities;\n    using ValueProviders;\n\n    using RequestProperties = ImmutableDictionary<string, object>;\n\n    /// <summary>\n    ///\t\tA template for an HTTP request.\n    /// </summary>\n    public sealed class HttpRequest\n        : HttpRequestBase, IHttpRequest, IHttpRequest<object>\n    {\n        #region Constants\n\n        /// <summary>\n        ///\t\tThe <see cref=\"Object\"/> used a context for all untyped HTTP requests.\n        /// </summary>\n        internal static readonly object DefaultContext = new object();\n\n        /// <summary>\n        ///\t\tThe base properties for <see cref=\"HttpRequest\"/>s.\n        /// </summary>\n        static readonly RequestProperties BaseProperties =\n            new Dictionary<string, object>\n            {\n                [nameof(RequestActions)] = ImmutableList<RequestAction<object>>.Empty,\n                [nameof(ResponseActions)] = ImmutableList<ResponseAction<object>>.Empty,\n                [nameof(TemplateParameters)] = ImmutableDictionary<string, IValueProvider<object, string>>.Empty,\n                [nameof(QueryParameters)] = ImmutableDictionary<string, IValueProvider<object, string>>.Empty\n            }\n            .ToImmutableDictionary();\n\n        /// <summary>\n        ///\t\tAn empty <see cref=\"HttpRequest\"/>.\n        /// </summary>\n        public static readonly HttpRequest Empty = new HttpRequest(BaseProperties);\n\n        /// <summary>\n        ///\t\tThe default factory for <see cref=\"HttpRequest\"/>s.\n        /// </summary>\n        public static HttpRequestFactory Factory { get; } = new HttpRequestFactory(Empty);\n\n        #endregion // Constants\n\n        #region Construction\n\n        /// <summary>\n        ///\t\tCreate a new HTTP request.\n        /// </summary>\n        /// <param name=\"properties\">\n        ///\t\tThe request properties.\n        /// </param>\n        HttpRequest(ImmutableDictionary<string, object> properties)\n            : base(properties)\n        {\n            EnsurePropertyType<ImmutableList<RequestAction<object>>>(\n                propertyName: nameof(RequestActions)\n            );\n            EnsurePropertyType<ImmutableDictionary<string, IValueProvider<object, string>>>(\n                propertyName: nameof(TemplateParameters)\n            );\n            EnsurePropertyType<ImmutableDictionary<string, IValueProvider<object, string>>>(\n                propertyName: nameof(QueryParameters)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a new HTTP request with the specified request URI.\n        /// </summary>\n        /// <param name=\"requestUri\">\n        ///\t\tThe request URI (can be relative or absolute).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest Create(string requestUri) => Factory.Create(requestUri);\n\n        /// <summary>\n        ///\t\tCreate a new HTTP request with the specified request URI.\n        /// </summary>\n        /// <param name=\"requestUri\">\n        ///\t\tThe request URI (can be relative or absolute).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest Create(Uri requestUri) => Factory.Create(requestUri);\n\n        #endregion // Construction\n\n        #region Properties\n\n        /// <summary>\n        ///\t\tActions (if any) to perform on the outgoing request message.\n        /// </summary>\n        public ImmutableList<RequestAction<object>> RequestActions => GetProperty<ImmutableList<RequestAction<object>>>();\n\n        /// <summary>\n        ///\t\tActions (if any) to perform on the incoming response message.\n        /// </summary>\n        public ImmutableList<ResponseAction<object>> ResponseActions => GetProperty<ImmutableList<ResponseAction<object>>>();\n\n        /// <summary>\n        ///     The request's URI template parameters (if any).\n        /// </summary>\n        public ImmutableDictionary<string, IValueProvider<object, string>> TemplateParameters => GetProperty<ImmutableDictionary<string, IValueProvider<object, string>>>();\n\n        /// <summary>\n        ///     The request's query parameters (if any).\n        /// </summary>\n        public ImmutableDictionary<string, IValueProvider<object, string>> QueryParameters => GetProperty<ImmutableDictionary<string, IValueProvider<object, string>>>();\n\n        #endregion // Properties\n\n        #region Invocation\n\n        /// <summary>\n        ///\t\tBuild the request URI represented by the <see cref=\"HttpRequest\"/>.\n        /// </summary>\n        /// <param name=\"baseUri\">\n        ///\t\tAn optional base URI to use if the request does not already have an absolute request URI.\n        /// </param>\n        /// <returns>\n        ///\t\tThe request URI.\n        /// </returns>\n        public Uri BuildRequestUri(Uri baseUri = null)\n        {\n            // Ensure we have an absolute URI.\n            Uri requestUri = Uri;\n            if (requestUri == null)\n                throw new InvalidOperationException(\"Cannot build a request message; the request does not have a URI.\");\n\n            if (!requestUri.IsAbsoluteUri)\n            {\n                if (baseUri == null)\n                    throw new InvalidOperationException(\"Cannot build a request message; the request does not have an absolute request URI, and no base URI was supplied.\");\n\n                // Make relative to base URI.\n                requestUri = baseUri.AppendRelativeUri(requestUri);\n            }\n            else\n            {\n                // Extract base URI to which request URI is already (by definition) relative.\n                baseUri = new Uri(\n                    requestUri.GetComponents(\n                        UriComponents.Scheme | UriComponents.StrongAuthority,\n                        UriFormat.UriEscaped\n                    )\n                );\n            }\n\n            if (IsUriTemplate)\n            {\n                UriTemplate template = new UriTemplate(\n                    requestUri.GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped)\n                );\n\n                IDictionary<string, string> templateParameterValues = GetTemplateParameterValues();\n\n                requestUri = template.Populate(baseUri, templateParameterValues);\n            }\n\n            // Merge in any other query parameters defined directly on the request.\n            requestUri = MergeQueryParameters(requestUri);\n\n            return requestUri;\n        }\n\n        /// <summary>\n        ///\t\tBuild and configure a new HTTP request message.\n        /// </summary>\n        /// <param name=\"httpMethod\">\n        ///\t\tThe HTTP request method to use.\n        /// </param>\n        /// <param name=\"body\">\n        ///\t\tOptional <see cref=\"HttpContent\"/> representing the request body.\n        /// </param>\n        /// <param name=\"baseUri\">\n        ///\t\tAn optional base URI to use if the request does not already have an absolute request URI.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpRequestMessage\"/>.\n        /// </returns>\n        public HttpRequestMessage BuildRequestMessage(HttpMethod httpMethod, HttpContent body = null, Uri baseUri = null)\n        {\n            if (httpMethod == null)\n                throw new ArgumentNullException(nameof(httpMethod));\n\n            Uri requestUri = BuildRequestUri(baseUri);\n\n            HttpRequestMessage requestMessage = null;\n            try\n            {\n                requestMessage = new HttpRequestMessage(httpMethod, requestUri);\n                SetStandardMessageProperties(requestMessage);\n\n                if (body != null)\n                    requestMessage.Content = body;\n\n                List<Exception> configurationActionExceptions = new List<Exception>();\n                foreach (RequestAction<object> requestAction in RequestActions)\n                {\n                    if (requestAction == null)\n                        continue;\n\n                    try\n                    {\n                        requestAction(requestMessage, DefaultContext);\n                    }\n                    catch (Exception eConfigurationAction)\n                    {\n                        configurationActionExceptions.Add(eConfigurationAction);\n                    }\n                }\n\n                if (configurationActionExceptions.Count > 0)\n                {\n                    throw new AggregateException(\n                        \"One or more unhandled exceptions were encountered while configuring the outgoing request message.\",\n                        configurationActionExceptions\n                    );\n                }\n            }\n            catch\n            {\n                using (requestMessage)\n                {\n                    throw;\n                }\n            }\n\n            return requestMessage;\n        }\n\n        /// <summary>\n        ///     Build and configure a new HTTP request message.\n        /// </summary>\n        /// <param name=\"httpMethod\">\n        ///     The HTTP request method to use.\n        /// </param>\n        /// <param name=\"context\">\n        ///\t\tThe object used as a context for resolving deferred template values.\n        /// </param>\n        /// <param name=\"body\">\n        ///     Optional <see cref=\"HttpContent\" /> representing the request body.\n        /// </param>\n        /// <param name=\"baseUri\">\n        ///     An optional base URI to use if the request does not already have an absolute request URI.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"HttpRequestMessage\" />.\n        /// </returns>\n        HttpRequestMessage IHttpRequest<object>.BuildRequestMessage(HttpMethod httpMethod, object context, HttpContent body, Uri baseUri)\n        {\n            return BuildRequestMessage(httpMethod, body, baseUri);\n        }\n\n        #endregion // Invocation\n\n        #region IHttpRequestProperties<object>\n\n        /// <summary>\n        ///\t\tActions (if any) to perform on the outgoing request message.\n        /// </summary>\n        IReadOnlyList<RequestAction<object>> IHttpRequestProperties<object>.RequestActions => RequestActions;\n\n        /// <summary>\n        ///\t\tActions (if any) to perform on the outgoing request message.\n        /// </summary>\n        IReadOnlyList<ResponseAction<object>> IHttpRequestProperties<object>.ResponseActions => ResponseActions;\n\n        /// <summary>\n        ///     The request's URI template parameters (if any).\n        /// </summary>\n        IReadOnlyDictionary<string, IValueProvider<object, string>> IHttpRequestProperties<object>.TemplateParameters => TemplateParameters;\n\n        /// <summary>\n        ///     The request's query parameters (if any).\n        /// </summary>\n        IReadOnlyDictionary<string, IValueProvider<object, string>> IHttpRequestProperties<object>.QueryParameters => QueryParameters;\n\n        #endregion // IHttpRequestProperties<object>\n\n        #region Cloning\n\n        /// <summary>\n        ///\t\tClone the request.\n        /// </summary>\n        /// <param name=\"modifications\">\n        ///\t\tA delegate that performs modifications to the request properties.\n        /// </param>\n        /// <returns>\n        ///\t\tThe cloned request.\n        /// </returns>\n        public new HttpRequest Clone(Action<IDictionary<string, object>> modifications)\n        {\n            if (modifications == null)\n                throw new ArgumentNullException(nameof(modifications));\n\n            return (HttpRequest)base.Clone(modifications);\n        }\n\n        /// <summary>\n        ///\t\tCreate a new instance of the HTTP request using the specified properties.\n        /// </summary>\n        /// <param name=\"requestProperties\">\n        ///\t\tThe request properties.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new HTTP request instance.\n        /// </returns>\n        protected override HttpRequestBase CreateInstance(ImmutableDictionary<string, object> requestProperties)\n        {\n            return new HttpRequest(requestProperties);\n        }\n\n        #endregion // Cloning\n\n        #region Helpers\n\n        /// <summary>\n        ///\t\tMerge the request's query parameters (if any) into the request URI.\n        /// </summary>\n        /// <param name=\"requestUri\">\n        ///\t\tThe request URI.\n        /// </param>\n        /// <returns>\n        ///\t\tThe request URI with query parameters merged into it.\n        /// </returns>\n        Uri MergeQueryParameters(Uri requestUri)\n        {\n            if (requestUri == null)\n                throw new ArgumentNullException(nameof(requestUri));\n\n            if (QueryParameters.Count == 0)\n                return requestUri;\n\n            NameValueCollection queryParameters = requestUri.ParseQueryParameters();\n            foreach (KeyValuePair<string, IValueProvider<object, string>> queryParameter in QueryParameters)\n            {\n                string queryParameterValue = queryParameter.Value.Get(DefaultContext);\n                if (queryParameterValue != null)\n                    queryParameters[queryParameter.Key] = queryParameterValue;\n                else\n                    queryParameters.Remove(queryParameter.Key);\n            }\n\n            return requestUri.WithQueryParameters(queryParameters);\n        }\n\n        /// <summary>\n        ///\t\tGet a dictionary mapping template parameters (if any) to their current values.\n        /// </summary>\n        /// <returns>\n        ///\t\tA dictionary of key / value pairs (any parameters whose value-getters return null will be omitted).\n        /// </returns>\n        IDictionary<string, string> GetTemplateParameterValues()\n        {\n            return\n                TemplateParameters.Select(templateParameter =>\n                {\n                    Debug.Assert(templateParameter.Value != null);\n\n                    return new\n                    {\n                        templateParameter.Key,\n                        Value = templateParameter.Value.Get(DefaultContext)\n                    };\n                })\n                .Where(\n                    templateParameter => templateParameter.Value != null\n                )\n                .ToDictionary(\n                    templateParameter => templateParameter.Key,\n                    templateParameter => templateParameter.Value\n                );\n        }\n\n        /// <summary>\n        ///\t\tConfigure standard properties for the specified <see cref=\"HttpRequestMessage\"/>.\n        /// </summary>\n        /// <param name=\"requestMessage\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\"/>.\n        /// </param>\n        void SetStandardMessageProperties(HttpRequestMessage requestMessage)\n        {\n            if (requestMessage == null)\n                throw new ArgumentNullException(nameof(requestMessage));\n\n            // TODO: Switch to HttpRequestOptions once we drop netstandard2.1 support.\n#pragma warning disable CS0618 // Type or member is obsolete\n            requestMessage.Properties[MessageProperties.Request] = this;\n#pragma warning restore CS0618 // Type or member is obsolete\n        }\n\n        #endregion // Helpers\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/HttpRequestException.cs",
    "content": "using System.Net;\nusing System.Net.Http;\n\nnamespace KubeClient.Http\n{\n\t/// <summary>\n\t///\t\tException thrown when an error response is received while making an HTTP request.\n\t/// </summary>\n\t/// <remarks>\n\t///\t\tTODO: Throw this from response.ReadContentAsAsync&lt;TResponse, TErrorResponse&gt;.\n\t/// </remarks>\n\tpublic class HttpRequestException<TResponse>\n\t\t: HttpRequestException\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpRequestException{TResponse}\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"statusCode\">\n\t\t///\t\tThe response's HTTP status code.\n\t\t///\t</param>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe response body.\n\t\t///\t</param>\n\t\tpublic HttpRequestException(HttpStatusCode statusCode, TResponse response)\n\t\t\t: this(statusCode, response, $\"The request failed with unexpected status code '{statusCode}'.\")\n\t\t{\n\t\t}\n\n#if NETSTANDARD2_1\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpRequestException{TResponse}\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"statusCode\">\n\t\t///\t\tThe response's HTTP status code.\n\t\t///\t</param>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe response body.\n\t\t///\t</param>\n\t\t/// <param name=\"message\">\n\t\t///\t\tThe exception message.\n\t\t///\t</param>\n\t\tpublic HttpRequestException(HttpStatusCode statusCode, TResponse response, string message)\n\t\t\t: base(message)\n\t\t{\n\t\t\tStatusCode = statusCode;\n\t\t\tResponse = response;\n\t\t}\n#else // NETSTANDARD2_1\n        /// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpRequestException{TResponse}\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"statusCode\">\n\t\t///\t\tThe response's HTTP status code.\n\t\t///\t</param>\n\t\t/// <param name=\"response\">\n\t\t///\t\tThe response body.\n\t\t///\t</param>\n\t\t/// <param name=\"message\">\n\t\t///\t\tThe exception message.\n\t\t///\t</param>\n\t\tpublic HttpRequestException(HttpStatusCode statusCode, TResponse response, string message)\n            : base(message, inner: null, statusCode)\n        {\n            Response = response;\n        }\n#endif // NETSTANDARD2_1\n\n#if NETSTANDARD2_1\n        /// <summary>\n\t\t///\t\tThe response's HTTP status code.\n\t\t/// </summary>\n\t\tpublic HttpStatusCode StatusCode { get; }\n#endif // NETSTANDARD2_1\n\n        /// <summary>\n        ///\t\tThe response body.\n        /// </summary>\n        public TResponse Response { get; }\n\n\t\t/// <summary>\n\t\t/// \tCreate a new <see cref=\"HttpRequestException{TRespose}\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"statusCode\">\n\t\t///\t\tThe HTTP response status code.\n\t\t/// </param>\n\t\t/// <param name=\"response\">\n\t\t///\t\tA <typeparamref name=\"TResponse\"/> representing the HTTP response body.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"HttpRequestException{TRespose}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequestException<TResponse> Create(HttpStatusCode statusCode, TResponse response)\n\t\t{\n\t\t\tstring message = $\"HTTP request failed ({statusCode}).\";\n\n\t\t\tIHttpErrorResponse errorResponse = response as IHttpErrorResponse;\n\t\t\tif (errorResponse != null)\n\t\t\t\tmessage = errorResponse.GetExceptionMesage();\n\n\t\t\treturn new HttpRequestException<TResponse>(statusCode, response, message);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/HttpRequestFactory.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http\n{\n\t/// <summary>\n\t///\t\tA facility for creating <see cref=\"HttpRequest\"/>s.\n\t/// </summary>\n\tpublic sealed class HttpRequestFactory\n    {\n\t    /// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpRequestFactory\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"baseRequest\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/> used as a base for requests created by the factory.\n\t\t/// </param>\n\t    public HttpRequestFactory(HttpRequest baseRequest)\n\t    {\n\t\t    if (baseRequest == null)\n\t\t\t    throw new ArgumentNullException(nameof(baseRequest));\n\n\t\t    BaseRequest = baseRequest;\n\t    }\n\n\t\t/// <summary>\n\t\t///\t\tThe <see cref=\"HttpRequest\"/> used as a base for requests created by the factory.\n\t\t/// </summary>\n\t\tpublic HttpRequest BaseRequest { get; }\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpRequest\"/> with the specified request URI.\n\t\t/// </summary>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest\"/>.\n\t\t/// </returns>\n\t\tpublic HttpRequest Create(Uri requestUri)\n\t\t{\n\t\t\tif (requestUri == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestUri));\n\n\t\t\treturn BaseRequest.WithUri(requestUri);\n\t\t}\n    }\n\n\t/// <summary>\n\t///\t\tA facility for creating <see cref=\"HttpRequest{TContext}\"/>s.\n\t/// </summary>\n\t/// <typeparam name=\"TContext\">\n\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t/// </typeparam>\n\tpublic sealed class HttpRequestFactory<TContext>\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpRequestFactory\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"baseRequest\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/> used as a base for requests created by the factory.\n\t\t/// </param>\n\t\tpublic HttpRequestFactory(HttpRequest<TContext> baseRequest)\n\t\t{\n\t\t\tif (baseRequest == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(baseRequest));\n\n\t\t\tBaseRequest = baseRequest;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/> used as a base for requests created by the factory.\n\t\t/// </summary>\n\t\tpublic HttpRequest<TContext> BaseRequest { get; }\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpRequest{TContext}\"/> with the specified request URI.\n\t\t/// </summary>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic HttpRequest<TContext> Create(Uri requestUri)\n\t\t{\n\t\t\tif (requestUri == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestUri));\n\n\t\t\treturn BaseRequest.WithUri(requestUri);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/HttpRequestOfTContext.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Collections.Specialized;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Net.Http;\n\nnamespace KubeClient.Http\n{\n\tusing Utilities;\n\tusing ValueProviders;\n\n\tusing RequestProperties = ImmutableDictionary<string, object>;\n\n\t/// <summary>\n\t///\t\tA template for an HTTP request that resolves deferred values from an instance of <typeparamref name=\"TContext\"/>.\n\t/// </summary>\n\t/// <typeparam name=\"TContext\">\n\t///\t\tThe type of object used as a context for resolving deferred values.\n\t/// </typeparam>\n\tpublic class HttpRequest<TContext>\n\t\t: HttpRequestBase, IHttpRequest<TContext>\n\t{\n\t\t#region Constants\n\n\t\t/// <summary>\n\t\t///\t\tThe base properties for <see cref=\"HttpRequest\"/>s.\n\t\t/// </summary>\n\t\tstatic readonly RequestProperties BaseProperties =\n\t\t\tnew Dictionary<string, object>\n\t\t\t{\n\t\t\t\t[nameof(RequestActions)] = ImmutableList<RequestAction<TContext>>.Empty,\n\t\t\t\t[nameof(ResponseActions)] = ImmutableList<ResponseAction<TContext>>.Empty,\n\t\t\t\t[nameof(TemplateParameters)] = ImmutableDictionary<string, IValueProvider<TContext, string>>.Empty,\n\t\t\t\t[nameof(QueryParameters)] = ImmutableDictionary<string, IValueProvider<TContext, string>>.Empty\n\t\t\t}\n\t\t\t.ToImmutableDictionary();\n\n\t\t/// <summary>\n\t\t///\t\tAn empty <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </summary>\n\t\tpublic static HttpRequest<TContext> Empty = new HttpRequest<TContext>(BaseProperties);\n\n\t\t/// <summary>\n\t\t///\t\tThe default factory for <see cref=\"HttpRequest{TContext}\"/>s.\n\t\t/// </summary>\n\t\tpublic static HttpRequestFactory<TContext> Factory { get; } = new HttpRequestFactory<TContext>(Empty);\n\n\t\t#endregion // Constants\n\n\t\t#region Construction\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request.\n\t\t/// </summary>\n\t\t/// <param name=\"properties\">\n\t\t///\t\tThe request properties.\n\t\t/// </param>\n\t\tHttpRequest(ImmutableDictionary<string, object> properties)\n\t\t\t: base(properties)\n\t\t{\n\t\t\tEnsurePropertyType<ImmutableList<RequestAction<TContext>>>(\n\t\t\t\tpropertyName: nameof(RequestActions)\n\t\t\t);\n\t\t\tEnsurePropertyType<ImmutableDictionary<string, IValueProvider<TContext, string>>>(\n\t\t\t\tpropertyName: nameof(TemplateParameters)\n\t\t\t);\n\t\t\tEnsurePropertyType<ImmutableDictionary<string, IValueProvider<TContext, string>>>(\n\t\t\t\tpropertyName: nameof(QueryParameters)\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request with the specified request URI.\n\t\t/// </summary>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI (can be relative or absolute).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> Create(string requestUri) => Factory.Create(requestUri);\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request with the specified request URI.\n\t\t/// </summary>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI (can be relative or absolute).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> Create(Uri requestUri) => Factory.Create(requestUri);\n\n\t\t#endregion // Construction\n\n\t\t#region Properties\n\n\t\t/// <summary>\n\t\t///\t\tActions (if any) to perform on the outgoing request message.\n\t\t/// </summary>\n\t\tpublic ImmutableList<RequestAction<TContext>> RequestActions => GetProperty<ImmutableList<RequestAction<TContext>>>();\n\n\t\t/// <summary>\n\t\t///\t\tActions (if any) to perform on the incoming response message.\n\t\t/// </summary>\n\t\tpublic ImmutableList<ResponseAction<TContext>> ResponseActions => GetProperty<ImmutableList<ResponseAction<TContext>>>();\n\n\t\t/// <summary>\n\t\t///     The request's URI template parameters (if any).\n\t\t/// </summary>\n\t\tpublic ImmutableDictionary<string, IValueProvider<TContext, string>> TemplateParameters => GetProperty<ImmutableDictionary<string, IValueProvider<TContext, string>>>();\n\n\t\t/// <summary>\n\t\t///     The request's query parameters (if any).\n\t\t/// </summary>\n\t\tpublic ImmutableDictionary<string, IValueProvider<TContext, string>> QueryParameters => GetProperty<ImmutableDictionary<string, IValueProvider<TContext, string>>>();\n\n\t\t#endregion // Properties\n\n\t\t#region Invocation\n\n\t\t/// <summary>\n\t\t///     Build and configure a new HTTP request message.\n\t\t/// </summary>\n\t\t/// <param name=\"httpMethod\">\n\t\t///     The HTTP request method to use.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe object used as a context for resolving deferred template values.\n\t\t/// </param>\n\t\t/// <param name=\"body\">\n\t\t///     Optional <see cref=\"HttpContent\" /> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///     An optional base URI to use if the request does not already have an absolute request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///     The configured <see cref=\"HttpRequestMessage\" />.\n\t\t/// </returns>\n\t\tpublic HttpRequestMessage BuildRequestMessage(HttpMethod httpMethod, TContext context, HttpContent body = null, Uri baseUri = null)\n\t\t{\n\t\t\tif (httpMethod == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpMethod));\n\n\t\t\t// Ensure we have an absolute URI.\n\t\t\tUri requestUri = Uri;\n\t\t\tif (requestUri == null)\n\t\t\t\tthrow new InvalidOperationException(\"Cannot build a request message; the request does not have a URI.\");\n\n\t\t\tif (!requestUri.IsAbsoluteUri)\n\t\t\t{\n\t\t\t\tif (baseUri == null)\n\t\t\t\t\tthrow new InvalidOperationException(\"Cannot build a request message; the request does not have an absolute request URI, and no base URI was supplied.\");\n\n\t\t\t\t// Make relative to base URI.\n\t\t\t\trequestUri = baseUri.AppendRelativeUri(requestUri);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Extract base URI to which request URI is already (by definition) relative.\n\t\t\t\tbaseUri = new Uri(\n\t\t\t\t\trequestUri.GetComponents(\n\t\t\t\t\t\tUriComponents.Scheme | UriComponents.StrongAuthority,\n\t\t\t\t\t\tUriFormat.UriEscaped\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (IsUriTemplate)\n\t\t\t{\n\t\t\t\tUriTemplate template = new UriTemplate(\n\t\t\t\t\trequestUri.GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped)\n\t\t\t\t);\n\n\t\t\t\tIDictionary<string, string> templateParameterValues = GetTemplateParameterValues(context);\n\n\t\t\t\trequestUri = template.Populate(baseUri, templateParameterValues);\n\t\t\t}\n\n\t\t\t// Merge in any other query parameters defined directly on the request.\n\t\t\trequestUri = MergeQueryParameters(requestUri, context);\n\n\t\t\tHttpRequestMessage requestMessage = null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\trequestMessage = new HttpRequestMessage(httpMethod, requestUri);\n\t\t\t\tSetStandardMessageProperties(requestMessage);\n\n\t\t\t\tif (body != null)\n\t\t\t\t\trequestMessage.Content = body;\n\n\t\t\t\tList<Exception> configurationActionExceptions = new List<Exception>();\n\t\t\t\tforeach (RequestAction<TContext> requestAction in RequestActions)\n\t\t\t\t{\n\t\t\t\t\tif (requestAction == null)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\trequestAction(requestMessage, context);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (Exception eConfigurationAction)\n\t\t\t\t\t{\n\t\t\t\t\t\tconfigurationActionExceptions.Add(eConfigurationAction);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (configurationActionExceptions.Count > 0)\n\t\t\t\t{\n\t\t\t\t\tthrow new AggregateException(\n\t\t\t\t\t\t\"One or more unhandled exceptions were encountered while configuring the outgoing request message.\",\n\t\t\t\t\t\tconfigurationActionExceptions\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tusing (requestMessage)\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn requestMessage;\n\t\t}\n\n\t\t#endregion // Invocation\n\n\t\t#region IHttpRequest\n\n\t\t/// <summary>\n\t\t///\t\tActions (if any) to perform on the outgoing request message.\n\t\t/// </summary>\n\t\tIReadOnlyList<RequestAction<TContext>> IHttpRequestProperties<TContext>.RequestActions => RequestActions;\n\n\t\t/// <summary>\n\t\t///\t\tActions (if any) to perform on the outgoing request message.\n\t\t/// </summary>\n\t\tIReadOnlyList<ResponseAction<TContext>> IHttpRequestProperties<TContext>.ResponseActions => ResponseActions;\n\n\t\t/// <summary>\n\t\t///     The request's URI template parameters (if any).\n\t\t/// </summary>\n\t\tIReadOnlyDictionary<string, IValueProvider<TContext, string>> IHttpRequestProperties<TContext>.TemplateParameters => TemplateParameters;\n\n\t\t/// <summary>\n\t\t///     The request's query parameters (if any).\n\t\t/// </summary>\n\t\tIReadOnlyDictionary<string, IValueProvider<TContext, string>> IHttpRequestProperties<TContext>.QueryParameters => QueryParameters;\n\n\t\t#endregion // IHttpRequest\n\n\t\t#region Cloning\n\n\t\t/// <summary>\n\t\t///\t\tClone the request.\n\t\t/// </summary>\n\t\t/// <param name=\"modifications\">\n\t\t///\t\tA delegate that performs modifications to the request properties.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe cloned request.\n\t\t/// </returns>\n\t\tpublic new HttpRequest<TContext> Clone(Action<IDictionary<string, object>> modifications)\n\t\t{\n\t\t\tif (modifications == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(modifications));\n\n\t\t\treturn (HttpRequest<TContext>)base.Clone(modifications);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new instance of the HTTP request using the specified properties.\n\t\t/// </summary>\n\t\t/// <param name=\"requestProperties\">\n\t\t///\t\tThe request properties.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new HTTP request instance.\n\t\t/// </returns>\n\t\tprotected override HttpRequestBase CreateInstance(ImmutableDictionary<string, object> requestProperties)\n\t\t{\n\t\t\treturn new HttpRequest<TContext>(requestProperties);\n\t\t}\n\n\t\t#endregion // Cloning\n\n\t\t#region Helpers\n\n\t\t/// <summary>\n\t\t///\t\tMerge the request's query parameters (if any) into the request URI.\n\t\t/// </summary>\n\t\t/// <param name=\"requestUri\">\n\t\t///\t\tThe request URI.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> from which parameter values will be resolved.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe request URI with query parameters merged into it.\n\t\t/// </returns>\n\t\tUri MergeQueryParameters(Uri requestUri, TContext context)\n\t\t{\n\t\t\tif (requestUri == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestUri));\n\n\t\t\tif (QueryParameters.Count == 0)\n\t\t\t\treturn requestUri;\n\n\t\t\tNameValueCollection queryParameters = requestUri.ParseQueryParameters();\n\t\t\tforeach (KeyValuePair<string, IValueProvider<TContext, string>> queryParameter in QueryParameters)\n\t\t\t{\n\t\t\t\tstring queryParameterValue = queryParameter.Value.Get(context);\n\t\t\t\tif (queryParameterValue != null)\n\t\t\t\t\tqueryParameters[queryParameter.Key] = queryParameterValue;\n\t\t\t\telse\n\t\t\t\t\tqueryParameters.Remove(queryParameter.Key);\n\t\t\t}\n\n\t\t\treturn requestUri.WithQueryParameters(queryParameters);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet a dictionary mapping template parameters (if any) to their current values.\n\t\t/// </summary>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> from which parameter values will be resolved.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA dictionary of key / value pairs (any parameters whose value-getters return null will be omitted).\n\t\t/// </returns>\n\t\tIDictionary<string, string> GetTemplateParameterValues(TContext context)\n\t\t{\n\t\t\treturn\n\t\t\t\tTemplateParameters.Select(templateParameter =>\n\t\t\t\t{\n\t\t\t\t\tDebug.Assert(templateParameter.Value != null);\n\n\t\t\t\t\treturn new\n\t\t\t\t\t{\n\t\t\t\t\t\ttemplateParameter.Key,\n\t\t\t\t\t\tValue = templateParameter.Value.Get(context)\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.Where(\n\t\t\t\t\ttemplateParameter => templateParameter.Value != null\n\t\t\t\t)\n\t\t\t\t.ToDictionary(\n\t\t\t\t\ttemplateParameter => templateParameter.Key,\n\t\t\t\t\ttemplateParameter => templateParameter.Value\n\t\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tConfigure standard properties for the specified <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"requestMessage\">\n\t\t///\t\tThe <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tvoid SetStandardMessageProperties(HttpRequestMessage requestMessage)\n\t\t{\n\t\t\tif (requestMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(requestMessage));\n\n            // TODO: Switch to HttpRequestOptions once we drop netstandard2.1 support.\n#pragma warning disable CS0618 // Type or member is obsolete\n            requestMessage.Properties[MessageProperties.Request] = this;\n#pragma warning restore CS0618 // Type or member is obsolete\n        }\n\n\t\t#endregion // Helpers\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/HttpResponse.cs",
    "content": "﻿using System;\nusing System.Net.Http;\nusing System.Runtime.CompilerServices;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http\n{\n\t/// <summary>\n\t///\t\tThe response from an asynchronous invocation of an <see cref=\"HttpRequest\"/>.\n\t/// </summary>\n\tpublic struct HttpResponse\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpResponse\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe request whose response is represented by the <see cref=\"HttpResponse\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"task\">\n\t\t///\t\tThe underlying <see cref=\"Task{HttpResponse}\"/> represented by the <see cref=\"HttpResponse\"/>.\n\t\t/// </param>\n\t\tpublic HttpResponse(HttpRequest request, Task<HttpResponseMessage> task)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (task == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(task));\n\n\t\t\tRequest = request;\n\t\t\tTask = task;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"HttpResponse\"/> for the specified asynchronous action.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe request whose response is represented by the <see cref=\"HttpResponse\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"asyncAction\">\n\t\t///\t\tAn asynchronous delegate that produces the action's resulting <see cref=\"HttpResponseMessage\"/>.\n\t\t/// </param>\n\t\tpublic HttpResponse(HttpRequest request, Func<Task<HttpResponseMessage>> asyncAction)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (asyncAction == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(asyncAction));\n\n\t\t\tRequest = request;\n\t\t\tTask = asyncAction();\n\t\t\tif (Task == null)\n\t\t\t\tthrow new InvalidOperationException(\"The asynchronous action delegate returned null.\");\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe request whose response is represented by the <see cref=\"HttpResponse\"/>.\n\t\t/// </summary>\n\t\tpublic HttpRequest Request { get; set; }\n\n\t\t/// <summary>\n\t\t///\t\tThe underlying <see cref=\"Task{T}\"/> represented by the <see cref=\"HttpResponse\"/>.\n\t\t/// </summary>\n\t\tpublic Task<HttpResponseMessage> Task { get; }\n\n\t\t// TODO: Considering something like Promise's \"Then\" method to encapsulate the construction of a new HttpResponse using the same HttpRequest but a new async action.\n\n\t\t/// <summary>\n\t\t///\t\tGet an awaiter for the underlying <see cref=\"Task{HttpResponse}\"/> represented by the <see cref=\"HttpResponse\"/>.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tThe task awaiter.\n\t\t/// </returns>\n\t\t/// <remarks>\n\t\t///\t\tEnables directly awaiting the <see cref=\"HttpResponse\"/>.\n\t\t/// </remarks>\n\t\tpublic TaskAwaiter<HttpResponseMessage> GetAwaiter() => Task.GetAwaiter();\n\n\t\t/// <summary>\n\t\t///\t\tConfigure the way that the response's task is awaited.\n\t\t/// </summary>\n\t\t/// <param name=\"continueOnCapturedContext\">\n\t\t///\t\tShould the awaited task return to the ambient synchronisation context?\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"ConfiguredTaskAwaitable{HttpResponseMessage}\"/> that can be awaited.\n\t\t/// </returns>\n\t\tpublic ConfiguredTaskAwaitable<HttpResponseMessage> ConfigureAwait(bool continueOnCapturedContext) => Task.ConfigureAwait(continueOnCapturedContext);\n\n\t\t/// <summary>\n\t\t///\t\tImplicit conversion from <see cref=\"HttpResponse\"/> to <see cref=\"Task{HttpResponse}\"/>\n\t\t/// </summary>\n\t\t/// <param name=\"httpResponse\">\n\t\t///\t\tThe <see cref=\"HttpResponse\"/> to convert.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe <see cref=\"HttpResponse\"/>'s <see cref=\"Task\"/>.\n\t\t/// </returns>\n\t\tpublic static implicit operator Task<HttpResponseMessage>(HttpResponse httpResponse)\n\t\t{\n\t\t\treturn httpResponse.Task;\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/KubeClient.Http/IHttpErrorResponse.cs",
    "content": "namespace KubeClient.Http\n{\n    /// <summary>\n    ///     Represents an HTTP error response whose properties can be used to populate an <see cref=\"HttpRequestException{TResponse}\"/>.\n    /// </summary>\n    public interface IHttpErrorResponse\n    {\n        /// <summary>\n        ///     Get the exception message associated with the response.\n        /// </summary>\n        string GetExceptionMesage();\n    }\n}"
  },
  {
    "path": "src/KubeClient.Http/IHttpRequest.cs",
    "content": "﻿using System;\nusing System.Net.Http;\n\nnamespace KubeClient.Http\n{\n\t/// <summary>\n\t///\t\tRepresents a template for building HTTP requests.\n\t/// </summary>\n\tpublic interface IHttpRequest\n\t\t: IHttpRequestProperties\n\t{\n\t\t/// <summary>\n\t\t///\t\tBuild and configure a new HTTP request message.\n\t\t/// </summary>\n\t\t/// <param name=\"httpMethod\">\n\t\t///\t\tThe HTTP request method to use.\n\t\t/// </param>\n\t\t/// <param name=\"body\">\n\t\t///\t\tOptional <see cref=\"HttpContent\"/> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI to use if the request builder does not already have an absolute request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </returns>\n\t\tHttpRequestMessage BuildRequestMessage(HttpMethod httpMethod, HttpContent body = null, Uri baseUri = null);\n    }\n\n\t/// <summary>\n\t///     Represents a template for building HTTP requests with lazily-resolved values extracted from a specific context.\n\t/// </summary>\n\t/// <typeparam name=\"TContext\">\n\t///     The type of object used by the request when resolving deferred values.\n\t/// </typeparam>\n\tpublic interface IHttpRequest<TContext>\n\t\t: IHttpRequestProperties<TContext>\n\t{\n\t\t/// <summary>\n\t\t///     Build and configure a new HTTP request message.\n\t\t/// </summary>\n\t\t/// <param name=\"httpMethod\">\n\t\t///     The HTTP request method to use.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///     The <typeparamref name=\"TContext\" /> to use as the context for resolving any deferred template or query parameters.\n\t\t/// </param>\n\t\t/// <param name=\"body\">\n\t\t///     Optional <see cref=\"HttpContent\" /> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///     An optional base URI to use if the request builder does not already have an absolute request URI.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///     The configured <see cref=\"HttpRequestMessage\" />.\n\t\t/// </returns>\n\t\tHttpRequestMessage BuildRequestMessage(HttpMethod httpMethod, TContext context, HttpContent body = null, Uri baseUri = null);\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/IHttpRequestProperties.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\n\nnamespace KubeClient.Http\n{\n\tusing ValueProviders;\n\n\t/// <summary>\n\t///\t\tRepresents common properties of templates for building HTTP requests.\n\t/// </summary>\n\tpublic interface IHttpRequestProperties\n    {\n\t\t/// <summary>\n\t\t///\t\tThe request URI.\n\t\t/// </summary>\n\t\tUri Uri\n\t\t{\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tIs the request URI a template?\n\t\t/// </summary>\n\t\tbool IsUriTemplate\n\t\t{\n\t\t\tget;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAdditional properties for the request.\n\t\t/// </summary>\n\t\tImmutableDictionary<string, object> Properties\n\t\t{\n\t\t\tget;\n\t\t}\n    }\n\n\t/// <summary>\n\t///\t\tRepresents common properties of templates for building HTTP requests.\n\t/// </summary>\n\t/// <typeparam name=\"TContext\">\n\t///\t\tThe type of object used as a context for resolving deferred template parameters.\n\t/// </typeparam>\n\tpublic interface IHttpRequestProperties<TContext>\n\t\t: IHttpRequestProperties\n\t{\n\t\t/// <summary>\n\t\t///\t\tActions (if any) to perform on the outgoing request message.\n\t\t/// </summary>\n\t\tIReadOnlyList<RequestAction<TContext>> RequestActions { get; }\n\n\t\t/// <summary>\n\t\t///\t\tActions (if any) to perform on the outgoing request message.\n\t\t/// </summary>\n\t\tIReadOnlyList<ResponseAction<TContext>> ResponseActions { get; }\n\n\t\t/// <summary>\n\t\t///     The request's URI template parameters (if any).\n\t\t/// </summary>\n\t\tIReadOnlyDictionary<string, IValueProvider<TContext, string>> TemplateParameters { get; }\n\n\t\t/// <summary>\n\t\t///     The request's query parameters (if any).\n\t\t/// </summary>\n\t\tIReadOnlyDictionary<string, IValueProvider<TContext, string>> QueryParameters { get; }\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/KubeClient.Http.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0;netstandard2.1</TargetFrameworks>\n\n    <Description>HTTP support for KubeClient (dotnet-kube-client)</Description>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n    <PackageReference Include=\"System.Collections.Immutable\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'netstandard2.1'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"8.0.0\" />\n    <PackageReference Include=\"System.Text.Json\" Version=\"8.0.5\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"9.0.3\" />\n    <PackageReference Include=\"System.Text.Json\" Version=\"9.0.2\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.JsonPatch\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Http\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n    <PackageReference Include=\"System.Text.Json\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient.Core/KubeClient.Core.csproj\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "src/KubeClient.Http/MessageExtensions.cs",
    "content": "using System;\nusing System.Net.Http;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    /// \tExtension methods for <see cref=\"HttpRequestMessage\"/> / <see cref=\"HttpResponseMessage\"/>.\n    /// </summary>\n    public static class MessageExtensions\n    {\n        /// <summary>\n        /// \tDetermine whether the request message has been configured for a streamed response.\n        /// </summary>\n        /// <param name=\"message\">\n        /// \tThe HTTP request message.\n        /// </param>\n        /// <returns>\n        /// \t<c>true</c>, if the request message has been configured for a streamed response; otherwise, <c>false</c>.\n        /// </returns>\n        public static bool IsStreamed(this HttpRequestMessage message)\n        {\n            if (message == null)\n                throw new ArgumentNullException(nameof(message));\n\n            object isStreamedValue;\n\n            // TODO: Switch to HttpRequestOptions once we drop netstandard2.1 support.\n#pragma warning disable CS0618 // Type or member is obsolete\n            message.Properties.TryGetValue(MessageProperties.IsStreamed, out isStreamedValue);\n#pragma warning restore CS0618 // Type or member is obsolete\n\n            return (isStreamedValue as bool?) ?? false;\n        }\n\n        /// <summary>\n        /// \tMark the request message as configured for a streamed / buffered response.\n        /// </summary>\n        /// <param name=\"message\">\n        /// \tThe HTTP request message.\n        /// </param>\n        /// <param name=\"isStreamed\">\n        /// \tIf <c>true</c>, the request message is configured for a streamed response; otherwise, it is configured for a buffered response.\n        /// </param>\n        /// <returns>\n        /// \tThe HTTP request message (enables inline use).\n        /// </returns>\n        public static HttpRequestMessage MarkAsStreamed(this HttpRequestMessage message, bool isStreamed = true)\n        {\n            if (message == null)\n                throw new ArgumentNullException(nameof(message));\n\n            // TODO: Switch to HttpRequestOptions once we drop netstandard2.1 support.\n#pragma warning disable CS0618 // Type or member is obsolete\n            message.Properties[MessageProperties.IsStreamed] = isStreamed;\n#pragma warning restore CS0618 // Type or member is obsolete\n\n            return message;\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Http/MessageProperties.cs",
    "content": "namespace KubeClient.Http\n{\n    // TODO: Switch to HttpRequestOptions once we drop netstandard2.1 support.\n\n    /// <summary>\n    ///\t\tThe names of well-known HttpRequestMessage / HttpResponseMessage properties.\n    /// </summary>\n    public static class MessageProperties\n    {\n        /// <summary>\n        ///\t\tThe prefix for KubeClient.Http property names.\n        /// </summary>\n        static readonly string Prefix = \"KubeClient.Http.\";\n\n        /// <summary>\n        ///\t\tThe <see cref=\"IHttpRequest\"/> that created the message.\n        /// </summary>\n        public static readonly string Request = Prefix + \"Request\";\n\n        /// <summary>\n        ///\t\tThe message's collection of content formatters.\n        /// </summary>\n        public static readonly string ContentFormatters = Prefix + \"ContentFormatters\";\n\n        /// <summary>\n        /// \tIs the request configured for a streamed response?\n        /// </summary>\n        public static readonly string IsStreamed = Prefix + \"IsStreamed\";\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/OtherHttpMethods.cs",
    "content": "﻿using System.Net.Http;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\tAdditional standard HTTP methods.\n    /// </summary>\n    public static class OtherHttpMethods\n    {\n        /// <summary>\n        ///\t\tThe HTTP PATCH method.\n        /// </summary>\n        public static readonly HttpMethod Patch = new HttpMethod(\"PATCH\");\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/README.md",
    "content": "﻿# KubeClient.Http\n\n## Introduction\n\n`KubeClient.Http` is a port of [HTTPlease](https://github.com/tintoy/HTTPlease), the HTTP client library that dotnet-kube-client was originally built on top of.\nA subset of HTTPlease functionality has now been folded into dotnet-kube-client so that consumers no longer need to reference HTTPlease or its dependencies.\n"
  },
  {
    "path": "src/KubeClient.Http/RequestActions.cs",
    "content": "﻿using System.Net.Http;\n\nnamespace KubeClient.Http\n{\n\t/// <summary>\n\t///\t\tDelegate that performs configuration of an outgoing HTTP request message.\n\t/// </summary>\n\t/// <param name=\"requestMessage\">\n\t///\t\tThe outgoing request message.\n\t/// </param>\n\tpublic delegate void RequestAction(HttpRequestMessage requestMessage);\n\t\n\t/// <summary>\n\t///\t\tDelegate that performs configuration of an outgoing HTTP request message.\n\t/// </summary>\n\t/// <typeparam name=\"TContext\">\n\t///\t\tThe type of object used by the request when resolving deferred parameters.\n\t/// </typeparam>\n\t/// <param name=\"requestMessage\">\n\t///\t\tThe outgoing request message.\n\t/// </param>\n\t/// <param name=\"context\">\n\t///\t\tThe object used by the request when resolving deferred parameters.\n\t/// </param>\n\tpublic delegate void RequestAction<in TContext>(HttpRequestMessage requestMessage, TContext context);\n}\n"
  },
  {
    "path": "src/KubeClient.Http/RequestExtensions.Headers.cs",
    "content": "﻿using System;\nusing System.Net.Http.Headers;\n\nnamespace KubeClient.Http\n{\n    using ValueProviders;\n\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest\"/> / <see cref=\"IHttpRequest\"/> extension methods for HTTP headers.\n    /// </summary>\n    public static partial class RequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds a header to each request.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerName\">\n        ///\t\tThe header name.\n        /// </param>\n        /// <param name=\"headerValue\">\n        ///\t\tThe header value.\n        /// </param>\n        /// <param name=\"ensureQuoted\">\n        ///\t\tEnsure that the header value is quoted?\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithHeader(this HttpRequest request, string headerName, string headerValue, bool ensureQuoted = false)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(headerName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(headerName));\n\n            if (headerValue == null)\n                throw new ArgumentNullException(nameof(headerValue));\n\n            return request.WithHeaderFromProvider(headerName,\n                ValueProvider<object>.FromConstantValue(headerValue),\n                ensureQuoted\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds a header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerName\">\n        ///\t\tThe header name.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that returns the header value for each request.\n        /// </param>\n        /// <param name=\"ensureQuoted\">\n        ///\t\tEnsure that the header value is quoted?\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithHeader<TValue>(this HttpRequest request, string headerName, Func<TValue> getValue, bool ensureQuoted = false)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(headerName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'headerName'.\", nameof(headerName));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeaderFromProvider(headerName,\n                ValueProvider<object>.FromFunction(getValue).Convert().ValueToString(),\n                ensureQuoted\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request, but with the specified media type added to the \"Accept\" header.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"mediaType\">\n        ///\t\tThe media-type name.\n        /// </param>\n        /// <param name=\"quality\">\n        ///\t\tAn optional media-type quality.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest AcceptMediaType(this HttpRequest request, string mediaType, double? quality = null)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(mediaType))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'mediaType'.\", nameof(mediaType));\n\n            MediaTypeWithQualityHeaderValue mediaTypeHeader =\n                quality.HasValue ?\n                    new MediaTypeWithQualityHeaderValue(mediaType, quality.Value)\n                    :\n                    new MediaTypeWithQualityHeaderValue(mediaType);\n\n            return request.WithRequestAction(requestMessage =>\n            {\n                requestMessage.Headers.Accept.Add(mediaTypeHeader);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request, but with no media types in the \"Accept\" header.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest AcceptNoMediaTypes(this HttpRequest request)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            return request.WithRequestAction(requestMessage =>\n            {\n                requestMessage.Headers.Accept.Clear();\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-Match\" header to each request.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerValue\">\n        ///\t\tThe header value.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithIfMatchHeader(this HttpRequest request, string headerValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (headerValue == null)\n                throw new ArgumentNullException(nameof(headerValue));\n\n            return request.WithHeader(\"If-Match\", () => headerValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-Match\" header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that returns the header value for each request.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithIfMatchHeader(this HttpRequest request, Func<string> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeader(\"If-Match\", getValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-None-Match\" header to each request.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerValue\">\n        ///\t\tThe header value.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithIfNoneMatchHeader(this HttpRequest request, string headerValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (headerValue == null)\n                throw new ArgumentNullException(nameof(headerValue));\n\n            return request.WithHeader(\"If-None-Match\", () => headerValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-None-Match\" header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that returns the header value for each request.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithIfNoneMatchHeader(this HttpRequest request, Func<string> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeader(\"If-None-Match\", getValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds a header to each request.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerName\">\n        ///\t\tThe header name.\n        /// </param>\n        /// <param name=\"valueProvider\">\n        ///\t\tThe header value provider.\n        /// </param>\n        /// <param name=\"ensureQuoted\">\n        ///\t\tEnsure that the header value is quoted?\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithHeaderFromProvider(this HttpRequest request, string headerName, IValueProvider<object, string> valueProvider, bool ensureQuoted = false)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(headerName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(headerName));\n\n            if (valueProvider == null)\n                throw new ArgumentNullException(nameof(valueProvider));\n\n            return request.WithRequestAction((requestMessage, context) =>\n            {\n                requestMessage.Headers.Remove(headerName);\n\n                string headerValue = valueProvider.Get(context);\n                if (headerValue == null)\n                    return;\n\n                if (ensureQuoted)\n                    headerValue = EnsureQuoted(headerValue);\n\n                requestMessage.Headers.Add(headerName, headerValue);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/RequestExtensions.Helpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Text;\n\nnamespace KubeClient.Http\n{\n    using ValueProviders;\n\n    /// <summary>\n    ///\t\tHelper methods for <see cref=\"HttpRequest\"/> / <see cref=\"IHttpRequest\"/> extensions.\n    /// </summary>\n    public static partial class RequestExtensions\n    {\n        /// <summary>\n        ///\t\tConfigure the request URI (and template status) in the request properties.\n        /// </summary>\n        /// <param name=\"requestProperties\">\n        ///\t\tThe request properties to modify.\n        /// </param>\n        /// <param name=\"requestUri\">\n        ///\t\tThe request URI.\n        /// </param>\n        static void SetUri(this IDictionary<string, object> requestProperties, Uri requestUri)\n        {\n            if (requestProperties == null)\n                throw new ArgumentNullException(nameof(requestProperties));\n\n            if (requestUri == null)\n                throw new ArgumentNullException(nameof(requestUri));\n\n            requestProperties[nameof(IHttpRequest.Uri)] = requestUri;\n            requestProperties[nameof(IHttpRequest.IsUriTemplate)] = UriTemplate.IsTemplate(requestUri);\n        }\n\n        /// <summary>\n        ///\t\tEnsure that the specified string is surrounted by quotes.\n        /// </summary>\n        /// <param name=\"str\">\n        ///\t\tThe string to examine.\n        /// </param>\n        /// <returns>\n        ///\t\tThe string, with quotes prepended / appended as required.\n        /// </returns>\n        /// <remarks>\n        ///\t\tSome HTTP headers (such as If-Match) require their values to be quoted.\n        /// </remarks>\n        static string EnsureQuoted(string str)\n        {\n            if (str == null)\n                throw new ArgumentNullException(nameof(str));\n\n            if (str.Length == 0)\n                return \"\\\"\\\"\";\n\n            StringBuilder quotedStringBuilder = new StringBuilder(str);\n\n            if (quotedStringBuilder[0] != '\\\"')\n                quotedStringBuilder.Insert(0, '\\\"');\n\n            if (quotedStringBuilder[quotedStringBuilder.Length - 1] != '\\\"')\n                quotedStringBuilder.Append('\\\"');\n\n            return quotedStringBuilder.ToString();\n        }\n\n        /// <summary>\n        ///\t\tConvert the specified object's properties to deferred parameters.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <typeparam name=\"TParameters\">\n        ///\t\tThe type of object whose properties will form the parameters.\n        /// </typeparam>\n        /// <param name=\"parameters\">\n        ///\t\tThe object whose properties will form the parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tA sequence of key / value pairs representing the parameters.\n        /// </returns>\n        static IEnumerable<KeyValuePair<string, IValueProvider<TContext, string>>> CreateDeferredParameters<TContext, TParameters>(this TParameters parameters)\n        {\n            if (Equals(parameters, null))\n                throw new ArgumentNullException(nameof(parameters));\n\n            // TODO: Refactor PropertyInfo retrieval logic (move it out to an extension method).\n\n            // Yes yes yes, reflection might be \"slow\", but it's still blazingly fast compared to making a request over the network.\n            foreach (PropertyInfo property in typeof(TParameters).GetTypeInfo().DeclaredProperties)\n            {\n                // Ignore write-only properties.\n                if (!property.CanRead)\n                    continue;\n\n                // Public instance properties only.\n                if (!property.GetMethod.IsPublic || property.GetMethod.IsStatic)\n                    continue;\n\n                yield return new KeyValuePair<string, IValueProvider<TContext, string>>(\n                    property.Name,\n                    ValueProvider<TContext>.FromSelector(\n                        context => property.GetValue(parameters)\n                    )\n                    .Convert().ValueToString()\n                );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/RequestExtensions.QueryParameters.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\n\nnamespace KubeClient.Http\n{\n    using ValueProviders;\n\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest\"/> / <see cref=\"IHttpRequest\"/> extension methods for query parameters.\n    /// </summary>\n    public static partial class RequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI query parameter.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <typeparam name=\"TParameter\">\n        ///\t\tThe parameter data-type.\n        /// </typeparam>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"value\">\n        ///\t\tThe parameter value.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithQueryParameter<TParameter>(this HttpRequest request, string name, TParameter value)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            return request.WithQueryParameterFromProvider(name,\n                ValueProvider<object>.FromConstantValue(value?.ToString())\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI query parameter.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <typeparam name=\"TParameter\">\n        ///\t\tThe parameter data-type.\n        /// </typeparam>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tDelegate that returns the parameter value (cannot be <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithQueryParameter<TParameter>(this HttpRequest request, string name, Func<TParameter> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithQueryParameterFromProvider(\n                name,\n                ValueProvider<object>.FromFunction(getValue)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI query parameter.\n        /// </summary>\n        /// <typeparam name=\"TParameter\">\n        ///\t\tThe parameter data-type.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"valueProvider\">\n        ///\t\tDelegate that, given the current context, returns the parameter value (cannot be <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithQueryParameterFromProvider<TParameter>(this HttpRequest request, string name, IValueProvider<object, TParameter> valueProvider)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (valueProvider == null)\n                throw new ArgumentNullException(nameof(valueProvider));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.QueryParameters)] = request.QueryParameters.SetItem(\n                    key: name,\n                    value: valueProvider.Convert().ValueToString()\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request, but with query parameters from the specified object's properties.\n        /// </summary>\n        /// <typeparam name=\"TParameters\">\n        ///\t\tThe type of object whose properties will form the parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"parameters\">\n        ///\t\tThe object whose properties will form the parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithQueryParameters<TParameters>(this HttpRequest request, TParameters parameters)\n        {\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            return request.WithQueryParametersFromProviders(\n                CreateDeferredParameters<object, TParameters>(parameters)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI query parameters.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"queryParameters\">\n        ///\t\tA sequence of 0 or more key / value pairs representing the query parameters (values cannot be <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithQueryParametersFromProviders(this HttpRequest request, IEnumerable<KeyValuePair<string, IValueProvider<object, string>>> queryParameters)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (queryParameters == null)\n                throw new ArgumentNullException(nameof(queryParameters));\n\n            bool modified = false;\n            ImmutableDictionary<string, IValueProvider<object, string>>.Builder queryParametersBuilder = request.QueryParameters.ToBuilder();\n            foreach (KeyValuePair<string, IValueProvider<object, string>> queryParameter in queryParameters)\n            {\n                if (queryParameter.Value == null)\n                {\n                    throw new ArgumentException(\n                        String.Format(\n                            \"Query parameter '{0}' has a null getter; this is not supported.\",\n                            queryParameter.Key\n                        ),\n                        nameof(queryParameters)\n                    );\n                }\n\n                queryParametersBuilder[queryParameter.Key] = queryParameter.Value;\n                modified = true;\n            }\n\n            if (!modified)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.QueryParameters)] = queryParametersBuilder.ToImmutable();\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder without the specified request URI query parameter.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithoutQueryParameter(this HttpRequest request, string name)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (!request.QueryParameters.ContainsKey(name))\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.QueryParameters)] = request.QueryParameters.Remove(name);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder without the specified request URI query parameters.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"names\">\n        ///\t\tThe parameter names.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithoutQueryParameters(this HttpRequest request, IEnumerable<string> names)\n        {\n            if (names == null)\n                throw new ArgumentNullException(nameof(names));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.QueryParameters)] = request.QueryParameters.RemoveRange(names);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/RequestExtensions.RequestActions.cs",
    "content": "﻿using System;\nusing System.Linq;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest\"/> / <see cref=\"IHttpRequest\"/> extension methods for request-configuration actions.\n    /// </summary>\n    public static partial class RequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request-configuration action.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"requestAction\">\n        ///\t\tA delegate that configures outgoing request messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithRequestAction(this HttpRequest request, RequestAction requestAction)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestAction == null)\n                throw new ArgumentNullException(nameof(requestAction));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.RequestActions)] = request.RequestActions.Add(\n                    (message, context) => requestAction(message)\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request-configuration action.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"requestAction\">\n        ///\t\tA delegate that configures outgoing request messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithRequestAction(this HttpRequest request, RequestAction<object> requestAction)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestAction == null)\n                throw new ArgumentNullException(nameof(requestAction));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.RequestActions)] = request.RequestActions.Add(requestAction);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request-configuration actions.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"requestActions\">\n        ///\t\tA delegate that configures outgoing request messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithRequestAction(this HttpRequest request, params RequestAction[] requestActions)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestActions == null)\n                throw new ArgumentNullException(nameof(requestActions));\n\n            if (requestActions.Length == 0)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.RequestActions)] = request.RequestActions.AddRange(\n                    requestActions.Select(requestAction =>\n                    {\n                        RequestAction<object> requestActionWithContext = (message, context) => requestAction(message);\n\n                        return requestActionWithContext;\n                    })\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request-configuration actions.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"requestActions\">\n        ///\t\tA delegate that configures outgoing request messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithRequestAction(this HttpRequest request, params RequestAction<object>[] requestActions)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestActions == null)\n                throw new ArgumentNullException(nameof(requestActions));\n\n            if (requestActions.Length == 0)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.RequestActions)] = request.RequestActions.AddRange(requestActions);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/RequestExtensions.RequestUri.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http\n{\n    using Utilities;\n\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest\"/> / <see cref=\"IHttpRequest\"/> extension methods for request URIs.\n    /// </summary>\n    public static partial class RequestExtensions\n    {\n        /// <summary>\n        ///\t\tEnsure that the <see cref=\"IHttpRequest\"/> has an <see cref=\"UriKind.Absolute\">absolute</see> <see cref=\"Uri\">URI</see>.\n        /// </summary>\n        /// <returns>\n        ///\t\tThe request's absolute URI.\n        /// </returns>\n        /// <exception cref=\"InvalidOperationException\">\n        ///\t\tThe request has a <see cref=\"UriKind.Relative\">relative</see> <see cref=\"Uri\">URI</see>.\n        /// </exception>\n        public static bool HasAbsoluteUri(this IHttpRequest httpRequest)\n        {\n            if (httpRequest == null)\n                throw new ArgumentNullException(nameof(httpRequest));\n\n            return httpRequest.Uri.IsAbsoluteUri;\n        }\n\n        /// <summary>\n        ///\t\tEnsure that the <see cref=\"IHttpRequest\"/> has an <see cref=\"UriKind.Absolute\">absolute</see> <see cref=\"Uri\">URI</see>.\n        /// </summary>\n        /// <returns>\n        ///\t\tThe request's absolute URI.\n        /// </returns>\n        /// <exception cref=\"InvalidOperationException\">\n        ///\t\tThe request has a <see cref=\"UriKind.Relative\">relative</see> <see cref=\"Uri\">URI</see>.\n        /// </exception>\n        public static Uri EnsureAbsoluteUri(this IHttpRequest httpRequest)\n        {\n            if (httpRequest == null)\n                throw new ArgumentNullException(nameof(httpRequest));\n\n            Uri requestUri = httpRequest.Uri;\n            if (requestUri.IsAbsoluteUri)\n                return requestUri;\n\n            throw new InvalidOperationException(\"The HTTP request does not have an absolute URI.\");\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified base URI.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe request.\n        /// </param>\n        /// <param name=\"baseUri\">\n        ///\t\tThe request base URI (must be absolute).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        /// <exception cref=\"InvalidOperationException\">\n        ///\t\tThe request already has an absolute URI.\n        /// </exception>\n        public static HttpRequest WithBaseUri(this HttpRequest request, Uri baseUri)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (baseUri == null)\n                throw new ArgumentNullException(nameof(baseUri));\n\n            if (!baseUri.IsAbsoluteUri)\n                throw new ArgumentException(\"The supplied base URI is not an absolute URI.\", nameof(baseUri));\n\n            if (request.Uri.IsAbsoluteUri)\n                throw new InvalidOperationException(\"The request already has an absolute URI.\");\n\n            return request.Clone(properties =>\n            {\n                properties.SetUri(\n                    baseUri.AppendRelativeUri(request.Uri)\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request URI.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe request.\n        /// </param>\n        /// <param name=\"requestUri\">\n        ///\t\tThe new request URI.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithUri(this HttpRequest request, Uri requestUri)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestUri == null)\n                throw new ArgumentNullException(nameof(requestUri));\n\n            return request.Clone(properties =>\n            {\n                properties.SetUri(requestUri);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request URI appended to its existing URI.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe request.\n        /// </param>\n        /// <param name=\"relativeUri\">\n        ///\t\tThe relative request URI.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithRelativeUri(this HttpRequest request, string relativeUri)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(relativeUri))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'relativeUri'.\", nameof(relativeUri));\n\n            return request.WithRelativeUri(\n                new Uri(relativeUri, UriKind.Relative)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request URI appended to its existing URI.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe request.\n        /// </param>\n        /// <param name=\"relativeUri\">\n        ///\t\tThe relative request URI.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithRelativeUri(this HttpRequest request, Uri relativeUri)\n        {\n            if (relativeUri == null)\n                throw new ArgumentNullException(nameof(relativeUri));\n\n            if (relativeUri.IsAbsoluteUri)\n                throw new ArgumentException(\"The specified URI is not a relative URI.\", nameof(relativeUri));\n\n            return request.Clone(properties =>\n            {\n                properties.SetUri(\n                    request.Uri.AppendRelativeUri(relativeUri)\n                );\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/RequestExtensions.ResponseActions.cs",
    "content": "﻿using System;\nusing System.Linq;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest\"/> / <see cref=\"IHttpRequest\"/> extension methods for response-processing actions.\n    /// </summary>\n    public static partial class RequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified response-processing action.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"responseAction\">\n        ///\t\tA delegate that configures incoming response messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithResponseAction(this HttpRequest request, ResponseAction responseAction)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseAction == null)\n                throw new ArgumentNullException(nameof(responseAction));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.ResponseActions)] = request.ResponseActions.Add(\n                    (message, context) => responseAction(message)\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified response-processing action.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"responseAction\">\n        ///\t\tA delegate that configures incoming response messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithResponseAction(this HttpRequest request, ResponseAction<object> responseAction)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseAction == null)\n                throw new ArgumentNullException(nameof(responseAction));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.ResponseActions)] = request.ResponseActions.Add(responseAction);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified response-processing actions.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"responseActions\">\n        ///\t\tA delegate that configures incoming response messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithResponseAction(this HttpRequest request, params ResponseAction[] responseActions)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseActions == null)\n                throw new ArgumentNullException(nameof(responseActions));\n\n            if (responseActions.Length == 0)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.ResponseActions)] = request.ResponseActions.AddRange(\n                    responseActions.Select(responseAction =>\n                    {\n                        ResponseAction<object> responseActionWithContext = (message, context) => responseAction(message);\n\n                        return responseActionWithContext;\n                    })\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified response-processing actions.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"responseActions\">\n        ///\t\tA delegate that configures incoming response messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithResponseAction(this HttpRequest request, params ResponseAction<object>[] responseActions)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseActions == null)\n                throw new ArgumentNullException(nameof(responseActions));\n\n            if (responseActions.Length == 0)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.ResponseActions)] = request.ResponseActions.AddRange(responseActions);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/RequestExtensions.TemplateParameters.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\n\nnamespace KubeClient.Http\n{\n    using ValueProviders;\n\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest\"/> / <see cref=\"IHttpRequest\"/> extension methods for template parameters.\n    /// </summary>\n    public static partial class RequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI template parameter.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <typeparam name=\"TParameter\">\n        ///\t\tThe parameter data-type.\n        /// </typeparam>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"value\">\n        ///\t\tThe parameter value.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithTemplateParameter<TParameter>(this HttpRequest request, string name, TParameter value)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            return request.WithTemplateParameterFromProvider(name,\n                ValueProvider<object>.FromConstantValue(value?.ToString())\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI template parameter.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <typeparam name=\"TParameter\">\n        ///\t\tThe parameter data-type.\n        /// </typeparam>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tDelegate that returns the parameter value (cannot be <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithTemplateParameter<TParameter>(this HttpRequest request, string name, Func<TParameter> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithTemplateParameterFromProvider(name,\n                ValueProvider<object>.FromFunction(getValue).Convert().ValueToString()\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI template parameter.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <typeparam name=\"TParameter\">\n        ///\t\tThe parameter data-type.\n        /// </typeparam>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"valueProvider\">\n        ///\t\tA <see cref=\"IValueProvider{TSource, TValue}\">value provider</see> that, given the current context, returns the parameter value.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithTemplateParameterFromProvider<TParameter>(this HttpRequest request, string name, IValueProvider<object, TParameter> valueProvider)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (valueProvider == null)\n                throw new ArgumentNullException(nameof(valueProvider));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.TemplateParameters)] = request.TemplateParameters.SetItem(\n                    key: name,\n                    value: valueProvider.Convert().ValueToString()\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request, but with template parameters from the specified object's properties.\n        /// </summary>\n        /// <typeparam name=\"TParameters\">\n        ///\t\tThe type of object whose properties will form the parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"parameters\">\n        ///\t\tThe object whose properties will form the parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithTemplateParameters<TParameters>(this HttpRequest request, TParameters parameters)\n        {\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            return request.WithTemplateParametersFromProviders(\n                CreateDeferredParameters<object, TParameters>(parameters)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI template parameters.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"templateParameters\">\n        ///\t\tA sequence of 0 or more key / value pairs representing the template parameters (values cannot be <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithTemplateParametersFromProviders(this HttpRequest request, IEnumerable<KeyValuePair<string, IValueProvider<object, string>>> templateParameters)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (templateParameters == null)\n                throw new ArgumentNullException(nameof(templateParameters));\n\n            bool modified = false;\n            ImmutableDictionary<string, IValueProvider<object, string>>.Builder templateParametersBuilder = request.TemplateParameters.ToBuilder();\n            foreach (KeyValuePair<string, IValueProvider<object, string>> templateParameter in templateParameters)\n            {\n                if (templateParameter.Value == null)\n                {\n                    throw new ArgumentException(\n                        String.Format(\n                            \"Template parameter '{0}' has a null getter; this is not supported.\",\n                            templateParameter.Key\n                        ),\n                        nameof(templateParameters)\n                    );\n                }\n\n                templateParametersBuilder[templateParameter.Key] = templateParameter.Value;\n                modified = true;\n            }\n\n            if (!modified)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.TemplateParameters)] = templateParametersBuilder.ToImmutable();\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder without the specified request URI template parameter.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithoutTemplateParameter(this HttpRequest request, string name)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (!request.TemplateParameters.ContainsKey(name))\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.TemplateParameters)] = request.TemplateParameters.Remove(name);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder without the specified request URI template parameters.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"names\">\n        ///\t\tThe parameter names.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest WithoutTemplateParameters(this HttpRequest request, IEnumerable<string> names)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (names == null)\n                throw new ArgumentNullException(nameof(names));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.TemplateParameters)] = request.TemplateParameters.RemoveRange(names);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/RequestHeaderExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http.Headers;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\tExtension method for <see cref=\"HttpRequestHeaders\"/>\n    /// </summary>\n    public static class RequestHeaderExtensions\n    {\n        /// <summary>\n        ///\t\tRetrieve the value of an optional HTTP request header.\n        /// </summary>\n        /// <param name=\"requestHeaders\">\n        ///\t\tThe HTTP request headers to examine.\n        /// </param>\n        /// <param name=\"headerName\">\n        ///\t\tThe name of the target header.\n        /// </param>\n        /// <returns>\n        ///\t\tThe header value, or <c>null</c> if the header is not present (or an <see cref=\"string.Empty\"/> string if the header is present but has no value).\n        /// </returns>\n        public static string GetOptionalHeaderValue(this HttpRequestHeaders requestHeaders, string headerName)\n        {\n            if (requestHeaders == null)\n                throw new ArgumentNullException(nameof(requestHeaders));\n\n            if (String.IsNullOrWhiteSpace(headerName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'headerName'.\", nameof(headerName));\n\n            IEnumerable<string> headerValues;\n            if (!requestHeaders.TryGetValues(headerName, out headerValues))\n                return null;\n\n            return\n                headerValues.DefaultIfEmpty(\n                    String.Empty\n                )\n                .FirstOrDefault();\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/ResponseActions.cs",
    "content": "﻿using System.Net.Http;\n\nnamespace KubeClient.Http\n{\n\t/// <summary>\n\t///\t\tDelegate that performs processing of an incoming HTTP response message.\n\t/// </summary>\n\t/// <param name=\"responseMessage\">\n\t///\t\tThe incoming response message.\n\t/// </param>\n\tpublic delegate void ResponseAction(HttpResponseMessage responseMessage);\n\t\n\t/// <summary>\n\t///\t\tDelegate that performs processing of an incoming HTTP response message.\n\t/// </summary>\n\t/// <typeparam name=\"TContext\">\n\t///\t\tThe type of object used by the response when resolving deferred parameters.\n\t/// </typeparam>\n\t/// <param name=\"responseMessage\">\n\t///\t\tThe incoming response message.\n\t/// </param>\n\t/// <param name=\"context\">\n\t///\t\tThe object used by the response when resolving deferred parameters.\n\t/// </param>\n\tpublic delegate void ResponseAction<in TContext>(HttpResponseMessage responseMessage, TContext context);\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/ITemplateEvaluationContext.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tRepresents the evaluation context for a URI template.\n\t/// </summary>\n\tinterface ITemplateEvaluationContext\n\t{\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the specified parameter is defined.\n\t\t/// </summary>\n\t\t/// <param name=\"parameterName\">\n\t\t///\t\tThe parameter name.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the parameter is defined; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tbool IsParameterDefined(string parameterName);\n\n\t\t/// <summary>\n\t\t///\t\tThe value of the specified template parameter\n\t\t/// </summary>\n\t\t/// <param name=\"parameterName\">\n\t\t///\t\tThe name of the template parameter.\n\t\t/// </param>\n\t\t/// <param name=\"isOptional\">\n\t\t///\t\tIs the parameter optional? If so, return <c>null</c> if it is not present, rather than throwing an exception.\n\t\t/// \n\t\t///\t\tDefault is <c>true</c>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe parameter value, or <c>null</c>.\n\t\t/// </returns>\n\t\t/// <exception cref=\"ArgumentException\">\n\t\t///\t\t<paramref name=\"parameterName\"/> is <c>null</c>, empty, or entirely composed of whitespace.\n\t\t/// </exception>\n\t\t/// <exception cref=\"KeyNotFoundException\">\n\t\t///\t\tThe parameter is not <paramref name=\"isOptional\"/>, and is not preset.\n\t\t/// </exception>\n\t\tstring this[string parameterName, bool isOptional = false]\n\t\t{\n\t\t\tget;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/LiteralQuerySegment.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tA template segment that represents a literal query parameter (i.e. one that has a constant value).\n\t/// </summary>\n\tsealed class LiteralQuerySegment\n\t\t: QuerySegment\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe value for the query parameter that the segment represents.\n\t\t/// </summary>\n\t\treadonly string _queryParameterValue;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new literal query segment.\n\t\t/// </summary>\n\t\t/// <param name=\"queryParameterName\">\n\t\t///\t\tThe name of the query parameter that the segment represents.\n\t\t/// </param>\n\t\t/// <param name=\"queryParameterValue\">\n\t\t///\t\tThe value for the query parameter that the segment represents.\n\t\t/// </param>\n\t\tpublic LiteralQuerySegment(string queryParameterName, string queryParameterValue)\n\t\t\t: base(queryParameterName)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(queryParameterValue))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'value'.\", nameof(queryParameterValue));\n\n\t\t\t_queryParameterValue = queryParameterValue;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe value for the query parameter that the segment represents.\n\t\t/// </summary>\n\t\tpublic string QueryParameterValue\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _queryParameterValue;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet the value of the segment (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"evaluationContext\">\n\t\t///\t\tThe current template evaluation context.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe segment value, or <c>null</c> if the segment has no value.\n\t\t/// </returns>\n\t\tpublic override string GetValue(ITemplateEvaluationContext evaluationContext)\n\t\t{\n\t\t\tif (evaluationContext == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(evaluationContext));\n\n\t\t\treturn _queryParameterValue;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/LiteralUriSegment.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tRepresents a literal URI segment (i.e. one that has a constant value).\n\t/// </summary>\n\tsealed class LiteralUriSegment\n\t\t: UriSegment\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe segment value;\n\t\t/// </summary>\n\t\treadonly string _value;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new literal URI segment.\n\t\t/// </summary>\n\t\t/// <param name=\"value\">\n\t\t///\t\tThe segment value.\n\t\t/// </param>\n\t\t/// <param name=\"isDirectory\">\n\t\t///\t\tDoes the segment represent a directory (i.e. have a trailing slash?).\n\t\t/// </param>\n\t\tpublic LiteralUriSegment(string value, bool isDirectory)\n\t\t\t: base(isDirectory)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(value))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'value'.\", nameof(value));\n\n\t\t\t_value = value;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe segment value;\n\t\t/// </summary>\n\t\tpublic string Value\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _value;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet the value of the segment (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"evaluationContext\">\n\t\t///\t\tThe current template evaluation context.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe segment value, or <c>null</c> if the segment is missing.\n\t\t/// </returns>\n\t\tpublic override string GetValue(ITemplateEvaluationContext evaluationContext)\n\t\t{\n\t\t\tif (evaluationContext == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(evaluationContext));\n\n\t\t\treturn _value;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/ParameterizedQuerySegment.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tA template segment that represents a query parameter whose value comes from a template parameter.\n\t/// </summary>\n\tsealed class ParameterizedQuerySegment\n\t\t: QuerySegment\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe name of the template parameter whose value becomes the query parameter.\n\t\t/// </summary>\n\t\treadonly string\t_templateParameterName;\n\n\t\t/// <summary>\n\t\t///\t\tIs the segment optional?\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t///\t\tIf <c>true</c>, then the query parameter will be omitted if its associated template variable is not defined.\n\t\t/// </remarks>\n\t\treadonly bool\t_isOptional;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new literal query segment.\n\t\t/// </summary>\n\t\t/// <param name=\"queryParameterName\">\n\t\t///\t\tThe name of the query parameter that the segment represents.\n\t\t/// </param>\n\t\t/// <param name=\"templateParameterName\">\n\t\t///\t\tThe value for the query parameter that the segment represents.\n\t\t/// </param>\n\t\t/// <param name=\"isOptional\">\n\t\t///\t\tIs the segment optional?\n\t\t/// </param>\n\t\tpublic ParameterizedQuerySegment(string queryParameterName, string templateParameterName, bool isOptional = false)\n\t\t\t: base(queryParameterName)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(templateParameterName))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'value'.\", nameof(templateParameterName));\n\n\t\t\t_templateParameterName = templateParameterName;\n\t\t\t_isOptional = isOptional;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe name of the template parameter whose value becomes the query parameter.\n\t\t/// </summary>\n\t\tpublic string TemplateParameterName\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _templateParameterName;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tIs the segment optional?\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t///\t\tIf <c>true</c>, then the query parameter will be omitted if its associated template variable is not defined.\n\t\t/// </remarks>\n\t\tpublic bool IsOptional\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _isOptional;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDoes the segment have a parameterised (non-constant) value?\n\t\t/// </summary>\n\t\tpublic override bool IsParameterized => true;\n\n\t\t/// <summary>\n\t\t///\t\tGet the value of the segment (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"evaluationContext\">\n\t\t///\t\tThe current template evaluation context.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe segment value, or <c>null</c> if the segment has no value.\n\t\t/// </returns>\n\t\tpublic override string GetValue(ITemplateEvaluationContext evaluationContext)\n\t\t{\n\t\t\tif (evaluationContext == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(evaluationContext));\n\n\t\t\treturn evaluationContext[_templateParameterName, _isOptional];\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/ParameterizedUriSegment.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tRepresents a literal URI segment (i.e. one that has a constant value).\n\t/// </summary>\n\tsealed class ParameterizedUriSegment\n\t\t: UriSegment\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe name of the parameter from which the URI segment obtains its value.\n\t\t/// </summary>\n\t\treadonly string _templateParameterName;\n\n\t\t/// <summary>\n\t\t///\t\tIs the segment optional?\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t///\t\tIf <c>true</c>, then the segment is not rendered when its associated parameter is missing.\n\t\t/// </remarks>\n\t\treadonly bool\t_isOptional;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new literal URI segment.\n\t\t/// </summary>\n\t\t/// <param name=\"templateParameterName\">\n\t\t///\t\tThe name of the parameter from which the URI segment obtains its value.\n\t\t/// </param>\n\t\t/// <param name=\"isDirectory\">\n\t\t///\t\tDoes the segment represent a directory (i.e. have a trailing slash?).\n\t\t/// </param>\n\t\t/// <param name=\"isOptional\">\n\t\t///\t\tIs the segment optional?\n\t\t/// \n\t\t///\t\tDefault is <c>false</c>.\n\t\t/// </param>\n\t\tpublic ParameterizedUriSegment(string templateParameterName, bool isDirectory, bool isOptional = false)\n\t\t\t: base(isDirectory)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(templateParameterName))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'value'.\", nameof(templateParameterName));\n\n\t\t\t_templateParameterName = templateParameterName;\n\t\t\t_isOptional = isOptional;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe name of the parameter from which the URI segment obtains its value.\n\t\t/// </summary>\n\t\tpublic string TemplateParameterName\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _templateParameterName;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tIs the segment optional?\n\t\t/// </summary>\n\t\t/// <remarks>\n\t\t///\t\tIf <c>true</c>, then the segment is not rendered when its associated parameter is missing.\n\t\t/// </remarks>\n\t\tpublic bool IsOptional\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _isOptional;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDoes the segment have a parameterised (non-constant) value?\n\t\t/// </summary>\n\t\tpublic override bool IsParameterized => true;\n\n\t\t/// <summary>\n\t\t///\t\tGet the value of the segment (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"evaluationContext\">\n\t\t///\t\tThe current template evaluation context.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe segment value, or <c>null</c> if the segment is missing.\n\t\t/// </returns>\n\t\tpublic override string GetValue(ITemplateEvaluationContext evaluationContext)\n\t\t{\n\t\t\tif (evaluationContext == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(evaluationContext));\n\n\t\t\treturn evaluationContext[_templateParameterName, _isOptional];\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/QuerySegment.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tThe base class for template segments that represent components of a URI's query.\n\t/// </summary>\n\tabstract class QuerySegment\n\t\t: TemplateSegment\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe name of the query parameter that the segment represents.\n\t\t/// </summary>\n\t\treadonly string _queryParameterName;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new query segment.\n\t\t/// </summary>\n\t\t/// <param name=\"queryParameterName\">\n\t\t///\t\tThe name of the query parameter that the segment represents.\n\t\t/// </param>\n\t\tprotected QuerySegment(string queryParameterName)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(queryParameterName))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'queryParameterName'.\", nameof(queryParameterName));\n\n\t\t\t_queryParameterName = queryParameterName;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe name of the query parameter that the segment represents.\n\t\t/// </summary>\n\t\tpublic string QueryParameterName\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _queryParameterName;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/RootUriSegment.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tA literal URI segment representing the root folder (\"/\").\n\t/// </summary>\n\tsealed class RootUriSegment\n\t\t: UriSegment\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe singleton instance of the root URI segment.\n\t\t/// </summary>\n\t\tpublic static readonly RootUriSegment Instance = new RootUriSegment();\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new literal URI segment.\n\t\t/// </summary>\n\t\tRootUriSegment()\n\t\t\t: base(isDirectory: true)\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet the value of the segment (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"evaluationContext\">\n\t\t///\t\tThe current template evaluation context.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe segment value, or <c>null</c> if the segment is missing.\n\t\t/// </returns>\n\t\tpublic override string GetValue(ITemplateEvaluationContext evaluationContext)\n\t\t{\n\t\t\tif (evaluationContext == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(evaluationContext));\n\n\t\t\treturn String.Empty;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/TemplateEvaluationContext.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tThe default evaluation context for a URI template.\n\t/// </summary>\n\tsealed class TemplateEvaluationContext\n\t\t: ITemplateEvaluationContext\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe template parameters.\n\t\t/// </summary>\n\t\treadonly Dictionary<string, string> _templateParameters = new Dictionary<string, string>();\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new template evaluation context.\n\t\t/// </summary>\n\t\tpublic TemplateEvaluationContext()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new template evaluation context.\n\t\t/// </summary>\n\t\t/// <param name=\"templateParameters\">\n\t\t///\t\tA dictionary of template parameters (and their values) used to populate the evaluation context.\n\t\t/// </param>\n\t\tpublic TemplateEvaluationContext(IDictionary<string, string> templateParameters)\n\t\t{\n\t\t\tif (templateParameters == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(templateParameters));\n\n\t\t\tforeach (KeyValuePair<string, string> templateParameter in templateParameters)\n\t\t\t\t_templateParameters[templateParameter.Key] = templateParameter.Value;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe template parameters.\n\t\t/// </summary>\n\t\tpublic Dictionary<string, string> TemplateParameters\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _templateParameters;\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the specified parameter is defined.\n\t\t/// </summary>\n\t\t/// <param name=\"parameterName\">\n\t\t///\t\tThe parameter name.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the parameter is defined; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tpublic bool IsParameterDefined(string parameterName)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(parameterName))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'parameterName'.\", nameof(parameterName));\n\n\t\t\treturn _templateParameters.ContainsKey(parameterName);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe value of the specified template parameter\n\t\t/// </summary>\n\t\t/// <param name=\"parameterName\">\n\t\t///\t\tThe name of the template parameter.\n\t\t/// </param>\n\t\t/// <param name=\"isOptional\">\n\t\t///\t\tIs the parameter optional? If so, return <c>null</c> if it is not present, rather than throwing an exception.\n\t\t/// \n\t\t///\t\tDefault is <c>true</c>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe parameter value, or <c>null</c>.\n\t\t/// </returns>\n\t\t/// <exception cref=\"ArgumentException\">\n\t\t///\t\t<paramref name=\"parameterName\"/> is <c>null</c>, empty, or entirely composed of whitespace.\n\t\t/// </exception>\n\t\t/// <exception cref=\"KeyNotFoundException\">\n\t\t///\t\tThe parameter is not <paramref name=\"isOptional\"/>, and is not preset.\n\t\t/// </exception>\n\t\tpublic string this[string parameterName, bool isOptional]\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\tif (String.IsNullOrWhiteSpace(parameterName))\n\t\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'parameterName'.\", nameof(parameterName));\n\n\t\t\t\tstring parameterValue;\n\t\t\t\tif (!_templateParameters.TryGetValue(parameterName, out parameterValue))\n\t\t\t\t{\n\t\t\t\t\tif (!isOptional)\n\t\t\t\t\t\tthrow new UriTemplateException($\"Required template parameter '{parameterName}' is not defined.\");\n\t\t\t\t}\n\n\t\t\t\treturn parameterValue;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/TemplateSegment.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.RegularExpressions;\n\nnamespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tThe base class for the segments that comprise a URI template.\n\t/// </summary>\n\tabstract class TemplateSegment\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe regular expression used to match variables.\n\t\t/// </summary>\n\t\tstatic readonly Regex VariableRegex = new Regex(\n\t\t\t@\"\\{(?<VariableName>\\w+)(?<VariableIsOptional>\\?)?\\}\\/?\",\n\t\t\tRegexOptions.Compiled | RegexOptions.Singleline\n\t\t);\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new URI template segment.\n\t\t/// </summary>\n\t\tprotected TemplateSegment()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDoes the segment have a parameterised (non-constant) value?\n\t\t/// </summary>\n\t\tpublic virtual bool IsParameterized => true;\n\n\t\t/// <summary>\n\t\t///\t\tGet the value of the segment (if any).\n\t\t/// </summary>\n\t\t/// <param name=\"evaluationContext\">\n\t\t///\t\tThe current template evaluation context.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe segment value, or <c>null</c> if the segment has no value.\n\t\t/// </returns>\n\t\tpublic abstract string GetValue(ITemplateEvaluationContext evaluationContext);\n\n\t\t/// <summary>\n\t\t///\t\tParse the specified URI into template segments.\n\t\t/// </summary>\n\t\t/// <param name=\"template\">\n\t\t///\t\tThe URI to parse.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe template segments.\n\t\t/// </returns>\n\t\tpublic static IReadOnlyList<TemplateSegment> Parse(string template)\n\t\t{\n\t\t\tif (template == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(template));\n\n\t\t\tList<TemplateSegment> segments = new List<TemplateSegment>();\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tUri templateUri = new Uri(\n\t\t\t\t\tnew Uri(\"http://localhost/\"),\n\t\t\t\t\ttemplate.Replace(\"?}\", \"%3F}\") // Special case for '?' because it messes with Uri's parser.\n\t\t\t\t);\n\t\t\t\tsegments.AddRange(\n\t\t\t\t\tParsePathSegments(templateUri)\n\t\t\t\t);\n\t\t\t\tsegments.AddRange(\n\t\t\t\t\tParseQuerySegments(templateUri)\n\t\t\t\t);\n\t\t\t}\n\t\t\tcatch (Exception eParse)\n\t\t\t{\n\t\t\t\tthrow new UriTemplateException(eParse, $\"'{template}' is not a valid URI template.\");\n\t\t\t}\n\t\t\t\n\t\t\treturn segments;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tParse URI segments from the specified template.\n\t\t/// </summary>\n\t\t/// <param name=\"template\">\n\t\t///\t\tThe URI template.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA sequence of 0 or more URI segments.\n\t\t/// </returns>\n\t\tstatic IEnumerable<UriSegment> ParsePathSegments(Uri template)\n\t\t{\n\t\t\tif (template == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(template));\n\n\t\t\tbool haveRoot = false;\n\t\t\tbool isLastSegmentDirectory = template.AbsolutePath[template.AbsolutePath.Length - 1] == '/';\n\t\t\t\n\t\t\tstring[] pathSegments =\n\t\t\t\ttemplate.AbsolutePath\n\t\t\t\t\t.Split('/')\n\t\t\t\t\t.Select(\n\t\t\t\t\t\tsegment => Uri.UnescapeDataString(segment)\n\t\t\t\t\t)\n\t\t\t\t\t.ToArray();\n\n\t\t\tint lastSegmentIndex = pathSegments.Length - 1;\n\t\t\tfor (int segmentIndex = 0; segmentIndex < pathSegments.Length; segmentIndex++)\n\t\t\t{\n\t\t\t\tstring pathSegment = pathSegments[segmentIndex];\n\t\t\t\tif (pathSegment != String.Empty)\n\t\t\t\t{\n\t\t\t\t\tbool isDirectory = isLastSegmentDirectory || segmentIndex < lastSegmentIndex;\n\n\t\t\t\t\tMatch variableMatch = VariableRegex.Match(pathSegment);\n\t\t\t\t\tif (variableMatch.Success)\n\t\t\t\t\t{\n\t\t\t\t\t\tstring templateParameterName = variableMatch.Groups[\"VariableName\"].Value;\n\t\t\t\t\t\tif (String.IsNullOrWhiteSpace(templateParameterName))\n\t\t\t\t\t\t\tyield return new LiteralUriSegment(pathSegment, isDirectory);\n\n\t\t\t\t\t\tbool isOptional = variableMatch.Groups[\"VariableIsOptional\"].Value.Length > 0;\n\n\t\t\t\t\t\tyield return new ParameterizedUriSegment(templateParameterName, isDirectory, isOptional);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tyield return new LiteralUriSegment(pathSegment, isDirectory);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (haveRoot)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\thaveRoot = true;\n\n\t\t\t\t\tyield return RootUriSegment.Instance;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tParse query segments from the specified template.\n\t\t/// </summary>\n\t\t/// <param name=\"template\">\n\t\t///\t\tThe URI template.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tA sequence of 0 or more query segments.\n\t\t/// </returns>\n\t\tstatic IEnumerable<QuerySegment> ParseQuerySegments(Uri template)\n\t\t{\n\t\t\tif (template == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(template));\n\n\t\t\tif (template.Query == String.Empty)\n\t\t\t\tyield break;\n\n\t\t\tstring[] queryParameters =\n\t\t\t\ttemplate.Query.Substring(1).Split(\n\t\t\t\t\tseparator: new char[]\n\t\t\t\t\t{\n\t\t\t\t\t\t'&'\n\t\t\t\t\t},\n\t\t\t\t\toptions: StringSplitOptions.RemoveEmptyEntries\n\n\t\t\t\t);\n\n\t\t\tforeach (string queryParameter in queryParameters)\n\t\t\t{\n\t\t\t\tstring[] parameterNameAndValue = queryParameter.Split(\n\t\t\t\t\tseparator: new char[]\n\t\t\t\t\t{\n\t\t\t\t\t\t'='\n\t\t\t\t\t},\n\t\t\t\t\tcount: 2\n\t\t\t\t);\n\n\t\t\t\tif (parameterNameAndValue.Length != 2)\n\t\t\t\t\tcontinue; // Remove parameter.\n\n\t\t\t\tstring queryParameterName = parameterNameAndValue[0];\n\t\t\t\tstring queryParameterValue = Uri.UnescapeDataString(parameterNameAndValue[1]);\n\n\t\t\t\tMatch variableMatch = VariableRegex.Match(queryParameterValue);\n\t\t\t\tif (variableMatch.Success)\n\t\t\t\t{\n\t\t\t\t\tstring templateParameterName = variableMatch.Groups[\"VariableName\"].Value;\n\t\t\t\t\tif (String.IsNullOrWhiteSpace(templateParameterName))\n\t\t\t\t\t\tyield return new LiteralQuerySegment(queryParameterName, queryParameterValue);\n\n\t\t\t\t\tbool isOptional = variableMatch.Groups[\"VariableIsOptional\"].Value.Length > 0;\n\n\t\t\t\t\tyield return new ParameterizedQuerySegment(queryParameterName, templateParameterName, isOptional);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tyield return new LiteralQuerySegment(queryParameterName, queryParameterValue);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Templates/UriSegment.cs",
    "content": "﻿namespace KubeClient.Http.Templates\n{\n\t/// <summary>\n\t///\t\tThe base class for URI template segments that represent segments of the URI.\n\t/// </summary>\n\tabstract class UriSegment\n\t\t: TemplateSegment\n\t{\n\t\t/// <summary>\n\t\t///\t\tDoes the segment represent a directory (i.e. have a trailing slash?).\n\t\t/// </summary>\n\t\treadonly bool _isDirectory;\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new URI segment.\n\t\t/// </summary>\n\t\t/// <param name=\"isDirectory\">\n\t\t///\t\tDoes the segment represent a directory (i.e. have a trailing slash?).\n\t\t/// </param>\n\t\tprotected UriSegment(bool isDirectory)\n\t\t{\n\t\t\t_isDirectory = isDirectory;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDoes the segment represent a directory (i.e. have a trailing slash?).\n\t\t/// </summary>\n\t\tpublic bool IsDirectory\n\t\t{\n\t\t\tget\n\t\t\t{\n\t\t\t\treturn _isDirectory;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedClientExtensions.cs",
    "content": "﻿using System.Collections.Generic;\nusing System;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http\n{\n\t/// <summary>\n\t///\t\tInvocation-related extension methods for <see cref=\"HttpClient\"/>s that use an <see cref=\"HttpRequest\"/>.\n\t/// </summary>\n\tpublic static class TypedClientExtensions\n    {\n\t\t#region Invoke\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP HEAD.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred parameters.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> HeadAsync<TContext>(this HttpClient httpClient, HttpRequest<TContext> request, TContext context, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Head, context, cancellationToken: cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP GET.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred parameters.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> GetAsync<TContext>(this HttpClient httpClient, HttpRequest<TContext> request, TContext context, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Get, context, cancellationToken: cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP POST.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred parameters.\n\t\t/// </param>\n\t\t/// <param name=\"postBody\">\n\t\t///\t\tOptional <see cref=\"HttpContent\"/> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PostAsync<TContext>(this HttpClient httpClient, HttpRequest<TContext> request, TContext context, HttpContent postBody = null, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Post, context, postBody, cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP PUT.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred parameters.\n\t\t/// </param>\n\t\t/// <param name=\"putBody\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PutAsync<TContext>(this HttpClient httpClient, HttpRequest<TContext> request, TContext context, HttpContent putBody, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (httpClient == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(httpClient));\n\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (putBody == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(putBody));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Put, context, putBody, cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP PATCH.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred parameters.\n\t\t/// </param>\n\t\t/// <param name=\"patchBody\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> PatchAsync<TContext>(this HttpClient httpClient, HttpRequest<TContext> request, TContext context, HttpContent patchBody, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (patchBody == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(patchBody));\n\n\t\t\treturn await httpClient.SendAsync(request, OtherHttpMethods.Patch, context, patchBody, cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute a request as an HTTP DELETE.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred parameters.\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> DeleteAsync<TContext>(this HttpClient httpClient, HttpRequest<TContext> request, TContext context, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\treturn await httpClient.SendAsync(request, HttpMethod.Delete, context, cancellationToken: cancellationToken).ConfigureAwait(false);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAsynchronously execute the request using the specified HTTP method.\n\t\t/// </summary>\n\t\t/// <param name=\"httpClient\">\n\t\t///\t\tThe <see cref=\"HttpClient\"/> used to execute the request.\n\t\t/// </param>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tAn <see cref=\"HttpMethod\"/> representing the method to use.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred parameters.\n\t\t/// </param>\n\t\t/// <param name=\"body\">\n\t\t///\t\tOptional <see cref=\"HttpContent\"/> representing the request body (if any).\n\t\t/// </param>\n\t\t/// <param name=\"cancellationToken\">\n\t\t///\t\tAn optional cancellation token that can be used to cancel the asynchronous operation.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tAn <see cref=\"HttpResponseMessage\"/> representing the response.\n\t\t/// </returns>\n\t\tpublic static async Task<HttpResponseMessage> SendAsync<TContext>(this HttpClient httpClient, HttpRequest<TContext> request, HttpMethod method, TContext context, HttpContent body = null, CancellationToken cancellationToken = default)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(method, context, body, httpClient.BaseAddress))\n\t\t\t{\n\t\t\t\tHttpResponseMessage responseMessage = await httpClient.SendAsync(requestMessage, cancellationToken).ConfigureAwait(false);\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\trequest.ExecuteResponseActions(responseMessage, context);\n\t\t\t\t}\n\t\t\t\tcatch\n\t\t\t\t{\n\t\t\t\t\tusing (responseMessage)\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn responseMessage;\n\t\t\t}\n\t\t}\n\n\t\t#endregion // Invoke\n\n\t\t#region Helpers\n\n\t\t/// <summary>\n\t\t///\t\tExecute the request's configured response actions (if any) against the specified response message.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"responseMessage\">\n\t\t///\t\tThe HTTP response message.\n\t\t/// </param>\n        /// <param name=\"context\">\n        /// \tThe <typeparamref name=\"TContext\"/> used as a context for resolving deferred values.\n        /// </param>\n\t\tstatic void ExecuteResponseActions<TContext>(this HttpRequest<TContext> request, HttpResponseMessage responseMessage, TContext context)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (responseMessage == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(responseMessage));\n\n\t\t\tList<Exception> responseActionExceptions = new List<Exception>();\n\t\t\tforeach (ResponseAction<TContext> responseAction in request.ResponseActions)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tresponseAction(responseMessage, context);\n\t\t\t\t}\n\t\t\t\tcatch (Exception eResponseAction)\n\t\t\t\t{\n\t\t\t\t\tresponseActionExceptions.Add(eResponseAction);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (responseActionExceptions.Count > 0)\n\t\t\t\tthrow new AggregateException(\"One or more errors occurred while processing the response message.\", responseActionExceptions);\n\t\t}\n\n\t\t#endregion // Helpers\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedFactoryExtensions.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\tExtension methods for <see cref=\"HttpRequestFactory{TContext}\"/>.\n    /// </summary>\n    public static class TypedFactoryExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a new HTTP request with the specified request URI.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"requestFactory\">\n        ///\t\tThe HTTP request factory.\n        /// </param>\n        /// <param name=\"requestUri\">\n        ///\t\tThe request URI (can be relative or absolute).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> Create<TContext>(this HttpRequestFactory<TContext> requestFactory, string requestUri)\n        {\n            if (requestFactory == null)\n                throw new ArgumentNullException(nameof(requestFactory));\n\n            if (String.IsNullOrWhiteSpace(requestUri))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'requestUri'.\", nameof(requestUri));\n\n            return requestFactory.Create(\n                new Uri(requestUri, UriKind.RelativeOrAbsolute)\n            );\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedRequestExtensions.Headers.cs",
    "content": "﻿using System;\nusing System.Net.Http.Headers;\n\nnamespace KubeClient.Http\n{\n    using ValueProviders;\n\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest{TContext}\"/> / <see cref=\"IHttpRequest{TContext}\"/> extension methods for HTTP headers.\n    /// </summary>\n    public static partial class TypedRequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds a header to each request.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe header value data-type.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerName\">\n        ///\t\tThe header name.\n        /// </param>\n        /// <param name=\"headerValue\">\n        ///\t\tThe header value.\n        /// </param>\n        /// <param name=\"ensureQuoted\">\n        ///\t\tEnsure that the header value is quoted?\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithHeader<TContext, TValue>(this HttpRequest<TContext> request, string headerName, TValue headerValue, bool ensureQuoted = false)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(headerName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(headerName));\n\n            if (headerValue == null)\n                throw new ArgumentNullException(nameof(headerValue));\n\n            return request.WithHeaderFromProvider(headerName,\n                ValueProvider<TContext>.FromConstantValue(headerValue).Convert().ValueToString(),\n                ensureQuoted\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds a header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of header value to add.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerName\">\n        ///\t\tThe header name.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that returns the header value for each request.\n        /// </param>\n        /// <param name=\"ensureQuoted\">\n        ///\t\tEnsure that the header value is quoted?\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithHeader<TContext, TValue>(this HttpRequest<TContext> request, string headerName, Func<TValue> getValue, bool ensureQuoted = false)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(headerName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(headerName));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeaderFromProvider(headerName,\n                ValueProvider<TContext>.FromFunction(getValue).Convert().ValueToString(),\n                ensureQuoted\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds a header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of header value to add.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerName\">\n        ///\t\tThe header name.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that extracts the header value from the context for each request.\n        /// </param>\n        /// <param name=\"ensureQuoted\">\n        ///\t\tEnsure that the header value is quoted?\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithHeader<TContext, TValue>(this HttpRequest<TContext> request, string headerName, Func<TContext, TValue> getValue, bool ensureQuoted = false)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(headerName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(headerName));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeaderFromProvider(headerName,\n                ValueProvider<TContext>.FromSelector(getValue).Convert().ValueToString(),\n                ensureQuoted\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request, but with the specified media type added to the \"Accept\" header.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"mediaType\">\n        ///\t\tThe media-type name.\n        /// </param>\n        /// <param name=\"quality\">\n        ///\t\tAn optional media-type quality.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> AcceptMediaType<TContext>(this HttpRequest<TContext> request, string mediaType, double? quality = null)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(mediaType))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'mediaType'.\", nameof(mediaType));\n\n            MediaTypeWithQualityHeaderValue mediaTypeHeader =\n                quality.HasValue ?\n                    new MediaTypeWithQualityHeaderValue(mediaType, quality.Value)\n                    :\n                    new MediaTypeWithQualityHeaderValue(mediaType);\n\n            return request.WithRequestAction(requestMessage =>\n            {\n                requestMessage.Headers.Accept.Add(mediaTypeHeader);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request, but with no media types in the \"Accept\" header.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> AcceptNoMediaTypes<TContext>(this HttpRequest<TContext> request)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            return request.WithRequestAction(requestMessage =>\n            {\n                requestMessage.Headers.Accept.Clear();\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-Match\" header to each request.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerValue\">\n        ///\t\tThe header value.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithIfMatchHeader<TContext>(this HttpRequest<TContext> request, string headerValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (headerValue == null)\n                throw new ArgumentNullException(nameof(headerValue));\n\n            return request.WithHeader(\"If-Match\", () => headerValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-Match\" header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that extracts the header value from the context for each request.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithIfMatchHeader<TContext>(this HttpRequest<TContext> request, Func<TContext, string> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeader(\"If-Match\", getValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-Match\" header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that returns the header value for each request.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithIfMatchHeader<TContext>(this HttpRequest<TContext> request, Func<string> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeader(\"If-Match\", getValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-None-Match\" header to each request.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerValue\">\n        ///\t\tThe header value.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithIfNoneMatchHeader<TContext>(this HttpRequest<TContext> request, string headerValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (headerValue == null)\n                throw new ArgumentNullException(nameof(headerValue));\n\n            return request.WithHeader(\"If-None-Match\", () => headerValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-None-Match\" header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that extracts the header value from the context for each request.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithIfNoneMatchHeader<TContext>(this HttpRequest<TContext> request, Func<TContext, string> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeader(\"If-None-Match\", getValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds an \"If-None-Match\" header with its value obtained from the specified delegate.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tA delegate that returns the header value for each request.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithIfNoneMatchHeader<TContext>(this HttpRequest<TContext> request, Func<string> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithHeader(\"If-None-Match\", getValue, ensureQuoted: true);\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request that adds a header to each request.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"headerName\">\n        ///\t\tThe header name.\n        /// </param>\n        /// <param name=\"valueProvider\">\n        ///\t\tThe header value provider.\n        /// </param>\n        /// <param name=\"ensureQuoted\">\n        ///\t\tEnsure that the header value is quoted?\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithHeaderFromProvider<TContext>(this HttpRequest<TContext> request, string headerName, IValueProvider<TContext, string> valueProvider, bool ensureQuoted = false)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(headerName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(headerName));\n\n            if (valueProvider == null)\n                throw new ArgumentNullException(nameof(valueProvider));\n\n            return request.WithRequestAction((requestMessage, context) =>\n            {\n                requestMessage.Headers.Remove(headerName);\n\n                string headerValue = valueProvider.Get(context);\n                if (headerValue == null)\n                    return;\n\n                if (ensureQuoted)\n                    headerValue = EnsureQuoted(headerValue);\n\n                requestMessage.Headers.Add(headerName, headerValue);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedRequestExtensions.Helpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Text;\n\nnamespace KubeClient.Http\n{\n    using ValueProviders;\n\n    /// <summary>\n    ///\t\tHelper methods for <see cref=\"HttpRequest{TContext}\"/> / <see cref=\"IHttpRequest{TContext}\"/> extensions.\n    /// </summary>\n    public static partial class TypedRequestExtensions\n    {\n        /// <summary>\n        ///\t\tConfigure the request URI (and template status) in the request properties.\n        /// </summary>\n        /// <param name=\"requestProperties\">\n        ///\t\tThe request properties to modify.\n        /// </param>\n        /// <param name=\"requestUri\">\n        ///\t\tThe request URI.\n        /// </param>\n        static void SetUri(this IDictionary<string, object> requestProperties, Uri requestUri)\n        {\n            if (requestProperties == null)\n                throw new ArgumentNullException(nameof(requestProperties));\n\n            if (requestUri == null)\n                throw new ArgumentNullException(nameof(requestUri));\n\n            requestProperties[nameof(IHttpRequest.Uri)] = requestUri;\n            requestProperties[nameof(IHttpRequest.IsUriTemplate)] = UriTemplate.IsTemplate(requestUri);\n        }\n\n        /// <summary>\n        ///\t\tEnsure that the specified string is surrounted by quotes.\n        /// </summary>\n        /// <param name=\"str\">\n        ///\t\tThe string to examine.\n        /// </param>\n        /// <returns>\n        ///\t\tThe string, with quotes prepended / appended as required.\n        /// </returns>\n        /// <remarks>\n        ///\t\tSome HTTP headers (such as If-Match) require their values to be quoted.\n        /// </remarks>\n        static string EnsureQuoted(string str)\n        {\n            if (str == null)\n                throw new ArgumentNullException(nameof(str));\n\n            if (str.Length == 0)\n                return \"\\\"\\\"\";\n\n            StringBuilder quotedStringBuilder = new StringBuilder(str);\n\n            if (quotedStringBuilder[0] != '\\\"')\n                quotedStringBuilder.Insert(0, '\\\"');\n\n            if (quotedStringBuilder[quotedStringBuilder.Length - 1] != '\\\"')\n                quotedStringBuilder.Append('\\\"');\n\n            return quotedStringBuilder.ToString();\n        }\n\n        /// <summary>\n        ///\t\tConvert the specified object's properties to deferred parameters.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <typeparam name=\"TParameters\">\n        ///\t\tThe type of object whose properties will form the parameters.\n        /// </typeparam>\n        /// <param name=\"parameters\">\n        ///\t\tThe object whose properties will form the parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tA sequence of key / value pairs representing the parameters.\n        /// </returns>\n        static IEnumerable<KeyValuePair<string, IValueProvider<TContext, string>>> CreateDeferredParameters<TContext, TParameters>(TParameters parameters)\n        {\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            // TODO: Refactor PropertyInfo retrieval logic (move it out to an extension method).\n\n            // Yes yes yes, reflection might be \"slow\", but it's still blazingly fast compared to making a request over the network.\n            foreach (PropertyInfo property in typeof(TParameters).GetTypeInfo().DeclaredProperties)\n            {\n                // Ignore write-only properties.\n                if (!property.CanRead)\n                    continue;\n\n                // Public instance properties only.\n                if (!property.GetMethod.IsPublic || property.GetMethod.IsStatic)\n                    continue;\n\n                yield return new KeyValuePair<string, IValueProvider<TContext, string>>(\n                    property.Name,\n                    ValueProvider<TContext>.FromSelector(\n                        context => property.GetValue(parameters)\n                    )\n                    .Convert().ValueToString()\n                );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedRequestExtensions.QueryParameters.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\n\nnamespace KubeClient.Http\n{\n    using ValueProviders;\n\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest{TContext}\"/> / <see cref=\"IHttpRequest{TContext}\"/> extension methods for query parameters.\n    /// </summary>\n    public static partial class TypedRequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI query parameter.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe parameter data-type.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"value\">\n        ///\t\tThe parameter value.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithQueryParameter<TContext, TValue>(this HttpRequest<TContext> request, string name, TValue value)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            return request.WithQueryParameterFromProvider(name,\n                ValueProvider<TContext>.FromConstantValue(value?.ToString())\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI query parameter.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"getValue\">\n        ///\t\tDelegate that returns the parameter value (cannot be <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithQueryParameter<TContext>(this HttpRequest<TContext> request, string name, Func<object> getValue)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return request.WithQueryParameterFromProvider(\n                name,\n                ValueProvider<TContext>.FromFunction(getValue)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI query parameter.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <param name=\"valueProvider\">\n        ///\t\tDelegate that, given the current context, returns the parameter value (cannot be <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithQueryParameterFromProvider<TContext>(this HttpRequest<TContext> request, string name, IValueProvider<TContext, object> valueProvider)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (valueProvider == null)\n                throw new ArgumentNullException(nameof(valueProvider));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.QueryParameters)] = request.QueryParameters.SetItem(\n                    key: name,\n                    value: valueProvider.Convert().ValueToString()\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request, but with query parameters from the specified object's properties.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <typeparam name=\"TParameters\">\n        ///\t\tThe type of object whose properties will form the parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"parameters\">\n        ///\t\tThe object whose properties will form the parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithQueryParametersFrom<TContext, TParameters>(HttpRequest<TContext> request, TParameters parameters)\n        {\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            return request.WithQueryParametersFromProviders(\n                CreateDeferredParameters<TContext, TParameters>(parameters)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder with the specified request URI query parameters.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"queryParameters\">\n        ///\t\tA sequence of 0 or more key / value pairs representing the query parameters (values cannot be <c>null</c>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithQueryParametersFromProviders<TContext>(this HttpRequest<TContext> request, IEnumerable<KeyValuePair<string, IValueProvider<TContext, string>>> queryParameters)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (queryParameters == null)\n                throw new ArgumentNullException(nameof(queryParameters));\n\n            bool modified = false;\n            ImmutableDictionary<string, IValueProvider<TContext, string>>.Builder queryParametersBuilder = request.QueryParameters.ToBuilder();\n            foreach (KeyValuePair<string, IValueProvider<TContext, string>> queryParameter in queryParameters)\n            {\n                if (queryParameter.Value == null)\n                {\n                    throw new ArgumentException(\n                        String.Format(\n                            \"Query parameter '{0}' has a null getter; this is not supported.\",\n                            queryParameter.Key\n                        ),\n                        nameof(queryParameters)\n                    );\n                }\n\n                queryParametersBuilder[queryParameter.Key] = queryParameter.Value;\n                modified = true;\n            }\n\n            if (!modified)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.QueryParameters)] = queryParametersBuilder.ToImmutable();\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder without the specified request URI query parameter.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"name\">\n        ///\t\tThe parameter name.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithoutQueryParameter<TContext>(this HttpRequest<TContext> request, string name)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n            if (!request.QueryParameters.ContainsKey(name))\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.QueryParameters)] = request.QueryParameters.Remove(name);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request builder without the specified request URI query parameters.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"names\">\n        ///\t\tThe parameter names.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithoutQueryParameters<TContext>(this HttpRequest<TContext> request, IEnumerable<string> names)\n        {\n            if (names == null)\n                throw new ArgumentNullException(nameof(names));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.QueryParameters)] = request.QueryParameters.RemoveRange(names);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedRequestExtensions.RequestActions.cs",
    "content": "﻿using System;\nusing System.Linq;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest{TContext}\"/> / <see cref=\"IHttpRequest{TContext}\"/> extension methods for request-configuration actions.\n    /// </summary>\n    public static partial class TypedRequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request-configuration action.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"requestAction\">\n        ///\t\tA delegate that configures outgoing request messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithRequestAction<TContext>(this HttpRequest<TContext> request, RequestAction requestAction)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestAction == null)\n                throw new ArgumentNullException(nameof(requestAction));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest<TContext>.RequestActions)] = request.RequestActions.Add(\n                    (message, context) => requestAction(message)\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request-configuration action.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"requestAction\">\n        ///\t\tA delegate that configures outgoing request messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithRequestAction<TContext>(this HttpRequest<TContext> request, RequestAction<TContext> requestAction)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestAction == null)\n                throw new ArgumentNullException(nameof(requestAction));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest<TContext>.RequestActions)] = request.RequestActions.Add(requestAction);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request-configuration actions.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"requestActions\">\n        ///\t\tA delegate that configures outgoing request messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithRequestAction<TContext>(this HttpRequest<TContext> request, params RequestAction[] requestActions)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestActions == null)\n                throw new ArgumentNullException(nameof(requestActions));\n\n            if (requestActions.Length == 0)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest<TContext>.RequestActions)] = request.RequestActions.AddRange(\n                    requestActions.Select(requestAction =>\n                    {\n                        RequestAction<TContext> requestActionWithContext = (message, context) => requestAction(message);\n\n                        return requestActionWithContext;\n                    })\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request-configuration actions.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"requestActions\">\n        ///\t\tA delegate that configures outgoing request messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithRequestAction<TContext>(this HttpRequest<TContext> request, params RequestAction<TContext>[] requestActions)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestActions == null)\n                throw new ArgumentNullException(nameof(requestActions));\n\n            if (requestActions.Length == 0)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest<TContext>.RequestActions)] = request.RequestActions.AddRange(requestActions);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedRequestExtensions.RequestUri.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http\n{\n    using Utilities;\n\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest{TContext}\"/> / <see cref=\"IHttpRequest{TContext}\"/> extension methods for request URIs.\n    /// </summary>\n    public static partial class TypedRequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified base URI.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe request.\n        /// </param>\n        /// <param name=\"baseUri\">\n        ///\t\tThe request base URI (must be absolute).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        /// <exception cref=\"InvalidOperationException\">\n        ///\t\tThe request already has an absolute URI.\n        /// </exception>\n        public static HttpRequest<TContext> WithBaseUri<TContext>(this HttpRequest<TContext> request, Uri baseUri)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (baseUri == null)\n                throw new ArgumentNullException(nameof(baseUri));\n\n            if (!baseUri.IsAbsoluteUri)\n                throw new ArgumentException(\"The supplied base URI is not an absolute URI.\", nameof(baseUri));\n\n            if (request.Uri.IsAbsoluteUri)\n                throw new InvalidOperationException(\"The request already has an absolute URI.\");\n\n            return request.Clone(properties =>\n            {\n                properties.SetUri(\n                    baseUri.AppendRelativeUri(request.Uri)\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request URI.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe request.\n        /// </param>\n        /// <param name=\"requestUri\">\n        ///\t\tThe new request URI.\n        ///\n        ///\t\tMust be an absolute URI (otherwise, use <see cref=\"WithRelativeUri{TContext}(HttpRequest{TContext}, Uri)\"/>).\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithUri<TContext>(this HttpRequest<TContext> request, Uri requestUri)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (requestUri == null)\n                throw new ArgumentNullException(nameof(requestUri));\n\n            return request.Clone(properties =>\n            {\n                properties.SetUri(requestUri);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request URI appended to its existing URI.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe request.\n        /// </param>\n        /// <param name=\"relativeUri\">\n        ///\t\tThe relative request URI.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithRelativeUri<TContext>(this HttpRequest<TContext> request, string relativeUri)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(relativeUri))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'relativeUri'.\", nameof(relativeUri));\n\n            return request.WithRelativeUri(\n                new Uri(relativeUri, UriKind.Relative)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified request URI appended to its existing URI.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used as a context for resolving deferred parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe request.\n        /// </param>\n        /// <param name=\"relativeUri\">\n        ///\t\tThe relative request URI.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithRelativeUri<TContext>(this HttpRequest<TContext> request, Uri relativeUri)\n        {\n            if (relativeUri == null)\n                throw new ArgumentNullException(nameof(relativeUri));\n\n            if (relativeUri.IsAbsoluteUri)\n                throw new ArgumentException(\"The specified URI is not a relative URI.\", nameof(relativeUri));\n\n            return request.Clone(properties =>\n            {\n                properties.SetUri(\n                    request.Uri.AppendRelativeUri(relativeUri)\n                );\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedRequestExtensions.ResponseActions.cs",
    "content": "﻿using System;\nusing System.Linq;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n    ///\t\t<see cref=\"HttpRequest{TContext}\"/> / <see cref=\"IHttpRequest{TContext}\"/> extension methods for response-processing actions.\n    /// </summary>\n    public static partial class TypedRequestExtensions\n    {\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified response-processing action.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"responseAction\">\n        ///\t\tA delegate that configures incoming response messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithResponseAction<TContext>(this HttpRequest<TContext> request, ResponseAction responseAction)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseAction == null)\n                throw new ArgumentNullException(nameof(responseAction));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.ResponseActions)] = request.ResponseActions.Add(\n                    (message, context) => responseAction(message)\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified response-processing action.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"responseAction\">\n        ///\t\tA delegate that configures incoming response messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithResponseAction<TContext>(this HttpRequest<TContext> request, ResponseAction<TContext> responseAction)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseAction == null)\n                throw new ArgumentNullException(nameof(responseAction));\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.ResponseActions)] = request.ResponseActions.Add(responseAction);\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified response-processing actions.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"responseActions\">\n        ///\t\tA delegate that configures incoming response messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithResponseAction<TContext>(this HttpRequest<TContext> request, params ResponseAction[] responseActions)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseActions == null)\n                throw new ArgumentNullException(nameof(responseActions));\n\n            if (responseActions.Length == 0)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.ResponseActions)] = request.ResponseActions.AddRange(\n                    responseActions.Select(responseAction =>\n                    {\n                        ResponseAction<TContext> responseActionWithContext = (message, context) => responseAction(message);\n\n                        return responseActionWithContext;\n                    })\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of the request with the specified response-processing actions.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe type of object used by the request when resolving deferred template parameters.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///\t\tThe HTTP request.\n        /// </param>\n        /// <param name=\"responseActions\">\n        ///\t\tA delegate that configures incoming response messages.\n        /// </param>\n        /// <returns>\n        ///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n        /// </returns>\n        public static HttpRequest<TContext> WithResponseAction<TContext>(this HttpRequest<TContext> request, params ResponseAction<TContext>[] responseActions)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseActions == null)\n                throw new ArgumentNullException(nameof(responseActions));\n\n            if (responseActions.Length == 0)\n                return request;\n\n            return request.Clone(properties =>\n            {\n                properties[nameof(HttpRequest.ResponseActions)] = request.ResponseActions.AddRange(responseActions);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/TypedRequestExtensions.TemplateParameters.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\n\nnamespace KubeClient.Http\n{\n\tusing ValueProviders;\n\n\t/// <summary>\n\t///\t\t<see cref=\"HttpRequest{TContext}\"/> / <see cref=\"IHttpRequest{TContext}\"/> extension methods for template parameters.\n\t/// </summary>\n\tpublic static partial class TypedRequestExtensions\n    {\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the request builder with the specified request URI template parameter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TValue\">\n\t\t///\t\tThe parameter data-type.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"name\">\n\t\t///\t\tThe parameter name.\n\t\t/// </param>\n\t\t/// <param name=\"value\">\n\t\t///\t\tThe parameter value.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithTemplateParameter<TContext, TValue>(this HttpRequest<TContext> request, string name, TValue value)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (String.IsNullOrWhiteSpace(name))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n\t\t\treturn request.WithTemplateParameterFromProvider(name,\n\t\t\t\tValueProvider<TContext>.FromConstantValue(value?.ToString())\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the request builder with the specified request URI template parameter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TParameter\">\n\t\t///\t\tThe parameter data-type.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"name\">\n\t\t///\t\tThe parameter name.\n\t\t/// </param>\n\t\t/// <param name=\"getValue\">\n\t\t///\t\tDelegate that returns the parameter value.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithTemplateParameter<TContext, TParameter>(this HttpRequest<TContext> request, string name, Func<TParameter> getValue)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (String.IsNullOrWhiteSpace(name))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n\t\t\tif (getValue == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(getValue));\n\n\t\t\treturn request.WithTemplateParameterFromProvider(name,\n\t\t\t\tValueProvider<TContext>.FromFunction(getValue).Convert().ValueToString()\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the request builder with the specified request URI template parameter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TParameter\">\n\t\t///\t\tThe parameter data-type.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"name\">\n\t\t///\t\tThe parameter name.\n\t\t/// </param>\n\t\t/// <param name=\"getValue\">\n\t\t///\t\tDelegate that returns the parameter value.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithTemplateParameter<TContext, TParameter>(this HttpRequest<TContext> request, string name, Func<TContext, TParameter> getValue)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (String.IsNullOrWhiteSpace(name))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n\t\t\tif (getValue == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(getValue));\n\n\t\t\treturn request.WithTemplateParameterFromProvider(name,\n\t\t\t\tValueProvider<TContext>.FromSelector(getValue).Convert().ValueToString()\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the request builder with the specified request URI template parameter.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TParameter\">\n\t\t///\t\tThe parameter data-type.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"name\">\n\t\t///\t\tThe parameter name.\n\t\t/// </param>\n\t\t/// <param name=\"valueProvider\">\n\t\t///\t\tA <see cref=\"IValueProvider{TSource, TValue}\">value provider</see> that, given the current context, returns the parameter value.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithTemplateParameterFromProvider<TContext, TParameter>(this HttpRequest<TContext> request, string name, IValueProvider<TContext, TParameter> valueProvider)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (String.IsNullOrWhiteSpace(name))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n\t\t\tif (valueProvider == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(valueProvider));\n\n\t\t\treturn request.Clone(properties =>\n\t\t\t{\n\t\t\t\tproperties[nameof(HttpRequest.TemplateParameters)] = request.TemplateParameters.SetItem(\n\t\t\t\t\tkey: name,\n\t\t\t\t\tvalue: valueProvider.Convert().ValueToString()\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the request, but with template parameters from the specified object's properties.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <typeparam name=\"TParameters\">\n\t\t///\t\tThe type of object whose properties will form the parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"parameters\">\n\t\t///\t\tThe object whose properties will form the parameters.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithTemplateParameters<TContext, TParameters>(HttpRequest<TContext> request, TParameters parameters)\n\t\t{\n\t\t\tif (ReferenceEquals(parameters, null))\n\t\t\t\tthrow new ArgumentNullException(nameof(parameters));\n\n\t\t\tif (parameters == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(parameters));\n\n\t\t\treturn request.WithTemplateParametersFromProviders(\n\t\t\t\tCreateDeferredParameters<TContext, TParameters>(parameters)\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the request builder with the specified request URI template parameters.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"templateParameters\">\n\t\t///\t\tA sequence of 0 or more key / value pairs representing the template parameters (values cannot be <c>null</c>).\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithTemplateParametersFromProviders<TContext>(this HttpRequest<TContext> request, IEnumerable<KeyValuePair<string, IValueProvider<TContext, string>>> templateParameters)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (templateParameters == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(templateParameters));\n\n\t\t\tbool modified = false;\n\t\t\tImmutableDictionary<string, IValueProvider<TContext, string>>.Builder templateParametersBuilder = request.TemplateParameters.ToBuilder();\n\t\t\tforeach (KeyValuePair<string, IValueProvider<TContext, string>> templateParameter in templateParameters)\n\t\t\t{\n\t\t\t\tif (templateParameter.Value == null)\n\t\t\t\t{\n\t\t\t\t\tthrow new ArgumentException(\n\t\t\t\t\t\tString.Format(\n\t\t\t\t\t\t\t\"Template parameter '{0}' has a null getter; this is not supported.\",\n\t\t\t\t\t\t\ttemplateParameter.Key\n\t\t\t\t\t\t),\n\t\t\t\t\t\tnameof(templateParameters)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\ttemplateParametersBuilder[templateParameter.Key] = templateParameter.Value;\n\t\t\t\tmodified = true;\n\t\t\t}\n\n\t\t\tif (!modified)\n\t\t\t\treturn request;\n\n\t\t\treturn request.Clone(properties =>\n\t\t\t{\n\t\t\t\tproperties[nameof(HttpRequest.TemplateParameters)] = templateParametersBuilder.ToImmutable();\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the request builder without the specified request URI template parameter.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"name\">\n\t\t///\t\tThe parameter name.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithoutTemplateParameter<TContext>(this HttpRequest<TContext> request, string name)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (String.IsNullOrWhiteSpace(name))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'name'.\", nameof(name));\n\n\t\t\tif (!request.TemplateParameters.ContainsKey(name))\n\t\t\t\treturn request;\n\n\t\t\treturn request.Clone(properties =>\n\t\t\t{\n\t\t\t\tproperties[nameof(HttpRequest.TemplateParameters)] = request.TemplateParameters.Remove(name);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a copy of the request builder without the specified request URI template parameters.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe HTTP request.\n\t\t/// </param>\n\t\t/// <param name=\"names\">\n\t\t///\t\tThe parameter names.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </returns>\n\t\tpublic static HttpRequest<TContext> WithoutTemplateParameters<TContext>(this HttpRequest<TContext> request, IEnumerable<string> names)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (names == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(names));\n\n\t\t\treturn request.Clone(properties =>\n\t\t\t{\n\t\t\t\tproperties[nameof(HttpRequest.TemplateParameters)] = request.TemplateParameters.RemoveRange(names);\n\t\t\t});\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/UriTemplate.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace KubeClient.Http\n{\n    using Templates;\n\n    /// <summary>\n    ///\t\tPopulates parameterised URI templates.\n    /// </summary>\n    public sealed class UriTemplate\n    {\n        /// <summary>\n        ///\t\tThe URI template.\n        /// </summary>\n        readonly string _template;\n\n        /// <summary>\n        ///\t\tThe template's URI segments.\n        /// </summary>\n        readonly IReadOnlyList<UriSegment> _uriSegments;\n\n        /// <summary>\n        ///\t\tThe template's URI segments.\n        /// </summary>\n        readonly IReadOnlyList<QuerySegment> _querySegments;\n\n        /// <summary>\n        ///\t\tCreate a new URI template.\n        /// </summary>\n        /// <param name=\"template\">\n        ///\t\tThe template.\n        /// </param>\n        public UriTemplate(string template)\n        {\n            if (String.IsNullOrWhiteSpace(template))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'template'.\", nameof(template));\n\n            _template = template;\n\n            IReadOnlyList<TemplateSegment> templateSegments = TemplateSegment.Parse(_template);\n            _uriSegments = templateSegments.OfType<UriSegment>().ToArray();\n            if (_uriSegments.Count == 0)\n                throw new UriTemplateException(\"Invalid URI template (contains no path segments).\");\n\n            _querySegments = templateSegments.OfType<QuerySegment>().ToArray();\n        }\n\n        /// <summary>\n        ///\t\tBuild a URI from the template.\n        /// </summary>\n        /// <param name=\"templateParameters\">\n        ///\t\tA dictionary containing the template parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tThe generated URI.\n        /// </returns>\n        public Uri Populate(IDictionary<string, string> templateParameters)\n        {\n            return Populate(null, templateParameters);\n        }\n\n        /// <summary>\n        ///\t\tBuild a URI from the template.\n        /// </summary>\n        /// <param name=\"baseUri\">\n        ///\t\tThe base URI, or <c>null</c> to generate a relative URI.\n        /// </param>\n        /// <param name=\"templateParameters\">\n        ///\t\tA dictionary containing the template parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tThe generated URI.\n        /// </returns>\n        public Uri Populate(Uri baseUri, IDictionary<string, string> templateParameters)\n        {\n            if (baseUri != null && !baseUri.IsAbsoluteUri)\n                throw new UriTemplateException($\"Base URI '{baseUri}' is not an absolute URI.\");\n\n            if (templateParameters == null)\n                throw new ArgumentNullException(nameof(templateParameters));\n\n            TemplateEvaluationContext evaluationContext = new TemplateEvaluationContext(templateParameters);\n            StringBuilder uriBuilder = new StringBuilder();\n            if (baseUri != null)\n            {\n                uriBuilder.Append(\n                    baseUri.GetComponents(UriComponents.Scheme | UriComponents.StrongAuthority, UriFormat.UriEscaped)\n                );\n            }\n\n            if (_uriSegments.Count > 0)\n            {\n                foreach (UriSegment uriSegment in _uriSegments)\n                {\n                    string segmentValue = uriSegment.GetValue(evaluationContext);\n                    if (segmentValue == null)\n                        continue;\n\n                    // TODO: ensure we have tests for the existing baseline before we even * consider * changing the escape mechanism\n#pragma warning disable SYSLIB0013 // Type or member is obsolete\n                    uriBuilder.Append(\n                        Uri.EscapeUriString(segmentValue)\n                    );\n#pragma warning restore SYSLIB0013 // Type or member is obsolete\n\n                    if (uriSegment.IsDirectory)\n                        uriBuilder.Append('/');\n                }\n            }\n            else\n                uriBuilder.Append('/');\n\n            bool isFirstParameterWithValue = true;\n            foreach (QuerySegment segment in _querySegments)\n            {\n                string queryParameterValue = segment.GetValue(evaluationContext);\n                if (queryParameterValue == null)\n                    continue;\n\n                // Different prefix for first parameter that has a value.\n                if (isFirstParameterWithValue)\n                {\n                    uriBuilder.Append('?');\n\n                    isFirstParameterWithValue = false;\n                }\n                else\n                    uriBuilder.Append('&');\n\n                uriBuilder.AppendFormat(\n                    \"{0}={1}\",\n                    Uri.EscapeDataString(segment.QueryParameterName),\n                    Uri.EscapeDataString(queryParameterValue)\n                );\n            }\n\n            return new Uri(uriBuilder.ToString(), UriKind.RelativeOrAbsolute);\n        }\n\n        /// <summary>\n        ///\t\tDoes the specified URI represent a template?\n        /// </summary>\n        /// <param name=\"uri\">\n        ///\t\tThe URI.\n        /// </param>\n        /// <returns>\n        ///\t\t<c>true</c>, if any of the URI's components are parameterised (i.e. have non-constant values); otherwise, <c>false</c>.\n        /// </returns>\n        public static bool IsTemplate(Uri uri)\n        {\n            if (uri == null)\n                throw new ArgumentNullException(nameof(uri));\n\n            return IsTemplate(uri.ToString());\n        }\n\n        /// <summary>\n        ///\t\tDoes the specified URI represent a template?\n        /// </summary>\n        /// <param name=\"uri\">\n        ///\t\tThe URI.\n        /// </param>\n        /// <returns>\n        ///\t\t<c>true</c>, if any of the URI's components are parameterised (i.e. have non-constant values); otherwise, <c>false</c>.\n        /// </returns>\n        public static bool IsTemplate(string uri)\n        {\n            if (uri == null)\n                throw new ArgumentNullException(nameof(uri));\n\n            IReadOnlyList<TemplateSegment> templateSegments = TemplateSegment.Parse(uri);\n\n            return templateSegments.Any(segment => segment.IsParameterized);\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/UriTemplateException.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http\n{\n    /// <summary>\n\t///\t\tException raised when a <see cref=\"UriTemplate\"/> is invalid or is missing required information.\n\t/// </summary>\n\tpublic class UriTemplateException\n        : KubeClientException\n    {\n        /// <summary>\n        ///\t\tCreate a new <see cref=\"UriTemplateException\"/>.\n        /// </summary>\n        /// <param name=\"message\">\n        ///\t\tThe exception message.\n        /// </param>\n        public UriTemplateException(string message)\n            : base(message)\n        {\n        }\n\n        /// <summary>\n        ///\t\tCreate a new <see cref=\"UriTemplateException\"/>.\n        /// </summary>\n        /// <param name=\"innerException\">\n        ///\t\tThe exception that caused this exception to be raised.\n        /// </param>\n        /// <param name=\"message\">\n        ///\t\tThe exception message.\n        /// </param>\n        public UriTemplateException(Exception innerException, string message)\n            : base(message, innerException)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Utilities/DisposalHelpers.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace KubeClient.Http.Utilities\n{\n    /// <summary>\n    ///\t\tHelper methods for <see cref=\"IDisposable\"/>.\n    /// </summary>\n    static class DisposalHelpers\n    {\n        /// <summary>\n        ///\t\tCreate an aggregate <see cref=\"IDisposable\"/> that disposes of the specified <see cref=\"IDisposable\"/>s when it is disposed.\n        /// </summary>\n        /// <param name=\"disposables\">\n        ///\t\tThe <see cref=\"IDisposable\"/>s to aggregate.\n        /// </param>\n        /// <returns>\n        ///\t\tAn aggregate <see cref=\"IDisposable\"/> representing the supplied disposables.\n        /// </returns>\n        /// <exception cref=\"AggregateException\">\n        ///\t\tOne or more aggregated disposables throw exceptions during disposal.\n        /// </exception>\n        public static AggregateDisposable ToAggregateDisposable(this IEnumerable<IDisposable> disposables)\n        {\n            if (disposables == null)\n                return new AggregateDisposable();\n\n            return new AggregateDisposable(disposables);\n        }\n\n        #region AggregateDisposable\n\n        /// <summary>\n        ///\t\tImplements disposal of multiple <see cref=\"IDisposable\"/>s.\n        /// </summary>\n        public struct AggregateDisposable\n            : IDisposable\n        {\n            /// <summary>\n            ///\t\tThe disposables to dispose of.\n            /// </summary>\n            readonly IReadOnlyList<IDisposable> _disposables;\n\n            /// <summary>\n            ///\t\tCreate a new aggregate disposable.\n            /// </summary>\n            /// <param name=\"disposables\">\n            ///\t\tA sequence of <see cref=\"IDisposable\"/>s to aggregate.\n            /// </param>\n            public AggregateDisposable(IEnumerable<IDisposable> disposables)\n            {\n                if (disposables == null)\n                    throw new ArgumentNullException(nameof(disposables));\n\n                _disposables = disposables.ToArray();\n            }\n\n            /// <summary>\n            ///\t\tDispose the disposables.\n            /// </summary>\n            public void Dispose()\n            {\n                List<Exception> disposalExceptions = new List<Exception>();\n                foreach (IDisposable disposable in _disposables)\n                {\n                    try\n                    {\n                        disposable.Dispose();\n                    }\n                    catch (Exception eDisposal)\n                    {\n                        disposalExceptions.Add(eDisposal);\n                    }\n                }\n\n                if (disposalExceptions.Count > 0)\n                    throw new AggregateException(\"One or more exceptions were encountered during object disposal.\", disposalExceptions);\n            }\n        }\n\n        #endregion // AggregateDisposable\n    }\n}"
  },
  {
    "path": "src/KubeClient.Http/Utilities/HttpRequestBase.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Runtime.CompilerServices;\n\nnamespace KubeClient.Http\n{\n    using Utilities;\n\n\tusing RequestProperties = ImmutableDictionary<string, object>;\n\n\t/// <summary>\n\t///\t\tThe base class for HTTP request templates.\n\t/// </summary>\n\tpublic abstract class HttpRequestBase\n\t\t: IHttpRequestProperties\n\t{\n\t\t#region Instance data\n\n\t\t/// <summary>\n\t\t///\t\tThe request properties.\n\t\t/// </summary>\n\t\treadonly RequestProperties _properties;\n\n\t\t#endregion // Instance data\n\n\t\t#region Construction\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new HTTP request.\n\t\t/// </summary>\n\t\t/// <param name=\"properties\">\n\t\t///\t\tThe request properties.\n\t\t/// </param>\n\t\tprotected HttpRequestBase(ImmutableDictionary<string, object> properties)\n\t\t{\n\t\t\tif (properties == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(properties));\n\n\t\t\t_properties = properties;\n\n\t\t\tEnsurePropertyType<Uri>(nameof(Uri));\n\t\t\tEnsurePropertyType<bool>(nameof(IsUriTemplate));\n\t\t}\n\n\t\t#endregion // Construction\n\n\t\t#region IHttpRequest\n\n\t\t/// <summary>\n\t\t///\t\tThe request URI.\n\t\t/// </summary>\n\t\tpublic Uri Uri => GetOptionalProperty<Uri>();\n\n\t\t/// <summary>\n\t\t///\t\tIs the request URI a template?\n\t\t/// </summary>\n\t\tpublic bool IsUriTemplate => GetOptionalProperty<bool>();\n\n\t\t/// <summary>\n\t\t///\t\tAll properties for the request.\n\t\t/// </summary>\n\t\tpublic ImmutableDictionary<string, object> Properties => _properties;\n\n\t\t#endregion // IHttpRequest\n\n\t\t#region Request properties\n\n\t\t/// <summary>\n\t\t///\t\tDetermine whether the specified property is defined for the request.\n\t\t/// </summary>\n\t\t/// <param name=\"propertyName\">\n\t\t///\t\tThe property name.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\t<c>true</c>, if the request is defined; otherwise, <c>false</c>.\n\t\t/// </returns>\n\t\tprotected bool HaveProperty([CallerMemberName] string propertyName = null)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(propertyName))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'propertyName'.\", nameof(propertyName));\n\n\t\t\treturn _properties.ContainsKey(propertyName);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet the specified request property.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TProperty\">\n\t\t///\t\tThe type of property to retrieve.\n\t\t/// </typeparam>\n\t\t/// <param name=\"propertyName\">\n\t\t///\t\tThe name of the property to retrieve.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe property value.\n\t\t/// </returns>\n\t\t/// <exception cref=\"ArgumentException\">\n\t\t///\t\t<paramref name=\"propertyName\"/> is null, empty, or entirely composed of whitespace.\n\t\t/// </exception>\n\t\t/// <exception cref=\"KeyNotFoundException\">\n\t\t///\t\tThe specified property is not defined.\n\t\t/// </exception>\n\t\tprotected TProperty GetProperty<TProperty>([CallerMemberName] string propertyName = null)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(propertyName))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'propertyName'.\", nameof(propertyName));\n\t\t\t\n\t\t\tobject propertyValue;\n\t\t\tif (!_properties.TryGetValue(propertyName, out propertyValue))\n\t\t\t\tthrow new KeyNotFoundException($\"Property '{propertyName}' is not defined.\");\n\n\t\t\treturn (TProperty)propertyValue;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tGet the specified request property.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TProperty\">\n\t\t///\t\tThe type of property to retrieve.\n\t\t/// </typeparam>\n\t\t/// <param name=\"propertyName\">\n\t\t///\t\tThe name of the property to retrieve.\n\t\t/// </param>\n\t\t/// <param name=\"defaultValue\">\n\t\t///\t\tThe default value to return if the property is not defined.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe property value, or the default value if the property is not defined.\n\t\t/// </returns>\n\t\t/// <exception cref=\"ArgumentException\">\n\t\t///\t\t<paramref name=\"propertyName\"/> is null, empty, or entirely composed of whitespace.\n\t\t/// </exception>\n\t\t/// <exception cref=\"KeyNotFoundException\">\n\t\t///\t\tThe specified property is not defined.\n\t\t/// </exception>\n\t\tprotected TProperty GetOptionalProperty<TProperty>([CallerMemberName] string propertyName = null, TProperty defaultValue = default(TProperty))\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(propertyName))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'propertyName'.\", nameof(propertyName));\n\n\t\t\tobject propertyValue;\n\t\t\tif (_properties.TryGetValue(propertyName, out propertyValue))\n\t\t\t\treturn (TProperty)propertyValue;\n\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tEnsure that the specified property (if defined) is of the correct type.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TProperty\">\n\t\t///\t\tThe expected property type.\n\t\t/// </typeparam>\n\t\t/// <param name=\"propertyName\">\n\t\t///\t\tThe name of the property to validate.\n\t\t/// </param>\n\t\t/// <exception cref=\"ArgumentException\">\n\t\t///\t\t<paramref name=\"propertyName\"/> is null, empty, or entirely composed of whitespace.\n\t\t/// </exception>\n\t\tprotected void EnsurePropertyType<TProperty>(string propertyName)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(propertyName))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'propertyName'.\", nameof(propertyName));\n\n\t\t\tobject propertyValue;\n\t\t\tif (!_properties.TryGetValue(propertyName, out propertyValue))\n\t\t\t\treturn;\n\n\t\t\tif (propertyValue is TProperty)\n\t\t\t\treturn;\n\n\t\t\t// It's not of the correct type, but is that because it's null?\n\t\t\tType propertyType = typeof(TProperty);\n\t\t\tif (propertyValue != null)\n\t\t\t{\n\t\t\t\tthrow new InvalidOperationException(\n\t\t\t\t\t$\"Value for property '{propertyName}' has unexpected type '{propertyType.FullName}' (should be '{propertyValue.GetType().FullName}').\"\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// It's null; is that legal?\n\t\t\tif (typeof(TProperty).IsNullable())\n\t\t\t\treturn;\n\n\t\t\tthrow new InvalidOperationException(\n\t\t\t\t$\"Property '{propertyName}' is null but its type ('{propertyType.FullName}') is not nullable.\"\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tClone the request properties, but with the specified changes.\n\t\t/// </summary>\n\t\t/// <param name=\"modifications\">\n\t\t///\t\tA delegate that modifies the request properties.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe cloned request properties.\n\t\t/// </returns>\n\t\tprotected ImmutableDictionary<string, object> CloneProperties(Action<RequestProperties.Builder> modifications)\n\t\t{\n\t\t\tif (modifications == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(modifications));\n\n\t\t\tRequestProperties.Builder requestProperties = _properties.ToBuilder();\n\t\t\tmodifications(requestProperties);\n\n\t\t\treturn requestProperties.ToImmutable();\n\t\t}\n\n\t\t#endregion // Request properties\n\n\t\t#region Cloning\n\n\t\t/// <summary>\n\t\t///\t\tClone the request.\n\t\t/// </summary>\n\t\t/// <param name=\"modifications\">\n\t\t///\t\tA delegate that performs modifications to the request properties.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe cloned request.\n\t\t/// </returns>\n\t\tpublic virtual HttpRequestBase Clone(Action<IDictionary<string, object>> modifications)\n\t\t{\n\t\t\tif (modifications == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(modifications));\n\n\t\t\treturn CreateInstance(\n\t\t\t\tCloneProperties(modifications)\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate a new instance of the HTTP request using the specified properties.\n\t\t/// </summary>\n\t\t/// <param name=\"requestProperties\">\n\t\t///\t\tThe request properties.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe new HTTP request instance.\n\t\t/// </returns>\n\t\tprotected abstract HttpRequestBase CreateInstance(ImmutableDictionary<string, object> requestProperties);\n\n\t\t#endregion // Cloning\n\n\t\t#region ToString\n\n\t\t/// <summary>\n\t\t///\t\tConvert the HTTP request to a textual representation.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tThe textual representation.\n\t\t/// </returns>\n\t\tpublic override string ToString()\n\t\t{\n\t\t\treturn $\"HTTP Request ({Uri?.ToString() ?? \"empty\"})\";\n\t\t}\n\n\t\t#endregion // ToString\n\t}\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Utilities/ReflectionHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Concurrent;\nusing System.Reflection;\n\nnamespace KubeClient.Http.Utilities\n{\n    /// <summary>\n    ///\t\tHelper methods for working with Reflection.\n    /// </summary>\n    public static class ReflectionHelper\n    {\n        /// <summary>\n        ///\t\tTypes that are known to be nullable.\n        /// </summary>\n        static readonly ConcurrentDictionary<Type, bool> _nullableTypes = new ConcurrentDictionary<Type, bool>();\n\n        /// <summary>\n        ///\t\tDetermine whether a reference to an instance of the type can be <c>null</c>.\n        /// </summary>\n        /// <param name=\"type\">\n        ///\t\tThe type.\n        /// </param>\n        /// <returns>\n        ///\t\t<c>true</c>, if the <paramref name=\"type\"/> represents a reference type or a <see cref=\"Nullable{T}\">nullable value type</see>.\n        /// </returns>\n        public static bool IsNullable(this Type type)\n        {\n            if (type == null)\n                throw new ArgumentNullException(nameof(type));\n\n            return _nullableTypes.GetOrAdd(type, targetType =>\n            {\n                if (type.GetTypeInfo().IsClass)\n                    return true;\n\n                // For non-nullable types, Nullable.GetUnderlyingType just returns the type supplied to it.\n                return Nullable.GetUnderlyingType(type) != type;\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/Utilities/UriHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Specialized;\nusing System.Diagnostics;\nusing System.Text;\n\nnamespace KubeClient.Http.Utilities\n{\n    /// <summary>\n    ///\t\tHelper methods for working with <see cref=\"Uri\"/>s.\n    /// </summary>\n    public static class UriHelper\n    {\n        /// <summary>\n        ///\t\tParse the URI's query parameters.\n        /// </summary>\n        /// <param name=\"uri\">\n        ///\t\tThe URI.\n        /// </param>\n        /// <returns>\n        ///\t\tA <see cref=\"NameValueCollection\"/> containing key / value pairs representing the query parameters.\n        /// </returns>\n        public static NameValueCollection ParseQueryParameters(this Uri uri)\n        {\n            if (uri == null)\n                throw new ArgumentNullException(nameof(uri));\n\n            NameValueCollection queryParameters = new NameValueCollection();\n            if (String.IsNullOrWhiteSpace(uri.Query))\n                return queryParameters;\n\n            Debug.Assert(uri.Query[0] == '?', \"Query string does not start with '?'.\");\n\n            string[] keyValuePairs = uri.Query.Substring(1).Split(\n                separator: new char[] { '&' },\n                options: StringSplitOptions.RemoveEmptyEntries\n            );\n\n            foreach (string keyValuePair in keyValuePairs)\n            {\n                string[] keyAndValue = keyValuePair.Split(\n                    separator: new char[] { '=' },\n                    count: 2\n                );\n\n                string key = keyAndValue[0];\n                string value = keyAndValue.Length == 2 ? keyAndValue[1] : null;\n\n                queryParameters[key] = value;\n            }\n\n            return queryParameters;\n        }\n\n        /// <summary>\n        ///\t\tCreate a copy of URI with its <see cref=\"Uri.Query\">query</see> component populated with the supplied parameters.\n        /// </summary>\n        /// <param name=\"uri\">\n        ///\t\tThe <see cref=\"Uri\"/> used to construct the URI.\n        /// </param>\n        /// <param name=\"parameters\">\n        ///\t\tA <see cref=\"NameValueCollection\"/> representing the query parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tA new URI with the specified query.\n        /// </returns>\n        public static Uri WithQueryParameters(this Uri uri, NameValueCollection parameters)\n        {\n            if (uri == null)\n                throw new ArgumentNullException(nameof(uri));\n\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            return\n                new UriBuilder(uri)\n                    .WithQueryParameters(parameters)\n                    .Uri;\n        }\n\n        /// <summary>\n        ///\t\tPopulate the <see cref=\"UriBuilder.Query\">query</see> component of the URI.\n        /// </summary>\n        /// <param name=\"uriBuilder\">\n        ///\t\tThe <see cref=\"UriBuilder\"/> used to construct the URI\n        /// </param>\n        /// <param name=\"parameters\">\n        ///\t\tA <see cref=\"NameValueCollection\"/> representing the query parameters.\n        /// </param>\n        /// <returns>\n        ///\t\tThe <paramref name=\"uriBuilder\">URI builder</paramref> (enables inline use).\n        /// </returns>\n        public static UriBuilder WithQueryParameters(this UriBuilder uriBuilder, NameValueCollection parameters)\n        {\n            if (uriBuilder == null)\n                throw new ArgumentNullException(nameof(uriBuilder));\n\n            if (parameters == null)\n                throw new ArgumentNullException(nameof(parameters));\n\n            if (parameters.Count == 0)\n                return uriBuilder;\n\n            // Yes, you could do this using String.Join, but it seems a bit wasteful to allocate all those \"key=value\" strings only to throw them away again.\n\n            Action<StringBuilder, int> addQueryParameter = (builder, parameterIndex) =>\n            {\n                string parameterName = parameters.GetKey(parameterIndex);\n                string parameterValue = parameters.Get(parameterIndex);\n\n                builder.Append(parameterName);\n\n                // Support for /foo/bar?x=1&y&z=2\n                if (parameterValue != null)\n                {\n                    builder.Append('=');\n\n                    // TODO: ensure we have tests for the existing baseline before we even * consider * changing the escape mechanism\n#pragma warning disable SYSLIB0013 // Type or member is obsolete\n                    builder.Append(\n                        Uri.EscapeUriString(parameterValue)\n                    );\n#pragma warning restore SYSLIB0013 // Type or member is obsolete\n                }\n            };\n\n            StringBuilder queryBuilder = new StringBuilder();\n\n            // First parameter has no prefix.\n            addQueryParameter(queryBuilder, 0);\n\n            // Subsequent parameters are separated with an '&'\n            for (int parameterIndex = 1; parameterIndex < parameters.Count; parameterIndex++)\n            {\n                queryBuilder.Append('&');\n                addQueryParameter(queryBuilder, parameterIndex);\n            }\n\n            uriBuilder.Query = queryBuilder.ToString();\n\n            return uriBuilder;\n        }\n\n        /// <summary>\n        ///\t\tAppend a relative URI to the base URI.\n        /// </summary>\n        /// <param name=\"baseUri\">\n        ///\t\tThe base URI.\n        /// \n        ///\t\tA trailing \"/\" will be appended, if necessary.\n        /// </param>\n        /// <param name=\"relativeUri\">\n        ///\t\tThe relative URI to append (leading slash will be trimmed, if required).\n        /// </param>\n        /// <returns>\n        ///\t\tThe concatenated URI.\n        /// </returns>\n        /// <remarks>\n        ///\t\tThis function is required because, sometimes, appending of a relative path to a URI can behave counter-intuitively.\n        ///\t\tIf the base URI does not have a trailing \"/\", then its last path segment is *replaced* by the relative UI. This is hardly ever what you actually want.\n        /// </remarks>\n        internal static Uri AppendRelativeUri(this Uri baseUri, Uri relativeUri)\n        {\n            if (baseUri == null)\n                throw new ArgumentNullException(nameof(baseUri));\n\n            if (relativeUri == null)\n                throw new ArgumentNullException(nameof(relativeUri));\n\n            if (relativeUri.IsAbsoluteUri)\n                return relativeUri;\n\n            if (baseUri.IsAbsoluteUri)\n            {\n                // Working with relative URIs is painful (e.g. you can't use .PathAndQuery).\n                string relativeUriString = relativeUri.ToString();\n\n                // Handle the case where the relative URI only contains query parameters (no path).\n                if (relativeUriString[0] == '?')\n                {\n                    StringBuilder absoluteUriBuilder = new StringBuilder(baseUri.AbsoluteUri);\n                    if (String.IsNullOrWhiteSpace(baseUri.Query))\n                        absoluteUriBuilder.Append('?');\n                    else\n                        absoluteUriBuilder.Append('&');\n\n                    absoluteUriBuilder.Append(relativeUriString,\n                        startIndex: 1,\n                        count: relativeUriString.Length - 1\n                    );\n\n                    return new Uri(\n                        absoluteUriBuilder.ToString()\n                    );\n                }\n\n                // Retain URI-concatenation semantics, except that we behave the same whether trailing slash is present or absent.\n                UriBuilder uriBuilder = new UriBuilder(baseUri);\n\n                string[] relativePathAndQuery =\n                    relativeUriString.Split(\n                        new[] { '?' },\n                        count: 2,\n                        options: StringSplitOptions.RemoveEmptyEntries\n                    );\n\n                uriBuilder.Path = AppendPaths(uriBuilder.Path, relativePathAndQuery[0]);\n\n                // Merge query parameters, if required.\n                if (relativePathAndQuery.Length == 2)\n                {\n                    uriBuilder.Query = MergeQueryStrings(\n                        baseQueryString: uriBuilder.Query,\n                        additionalQueryString: relativePathAndQuery[1]\n                    );\n                }\n\n                return uriBuilder.Uri;\n            }\n\n            // Irritatingly, you can't use UriBuilder with a relative path.\n            return new Uri(\n                AppendPaths(baseUri.ToString(), relativeUri.ToString()),\n                UriKind.Relative\n            );\n        }\n\n        /// <summary>\n        ///\t\tContatenate 2 relative URI paths.\n        /// </summary>\n        /// <param name=\"basePath\">\n        ///\t\tThe base URI path.\n        /// </param>\n        /// <param name=\"relativePath\">\n        ///\t\tThe relative URI path to append to the base URI path.\n        /// </param>\n        /// <returns>\n        ///\t\tThe appended paths, separated by a single slash.\n        /// </returns>\n        static string AppendPaths(string basePath, string relativePath)\n        {\n            if (basePath == null)\n                throw new ArgumentNullException(nameof(basePath));\n\n            if (relativePath == null)\n                throw new ArgumentNullException(nameof(relativePath));\n\n            StringBuilder pathBuilder = new StringBuilder(basePath);\n            if (pathBuilder.Length == 0 || pathBuilder[pathBuilder.Length - 1] != '/')\n                pathBuilder.Append(\"/\");\n\n            int relativePathStartIndex =\n                    (relativePath.Length > 0 && relativePath[0] == '/') ? 1 : 0;\n\n            pathBuilder.Append(\n                relativePath,\n                startIndex: (relativePath.Length > 0 && relativePath[0] == '/') ? 1 : 0,\n                count: relativePath.Length - relativePathStartIndex\n            );\n\n            return pathBuilder.ToString();\n        }\n\n        /// <summary>\n        /// \tMerge 2 query strings.\n        /// </summary>\n        /// <param name=\"baseQueryString\">\n        /// \tThe base query string.\n        /// \n        /// \tIf empty, the additional query string is used.\n        /// </param>\n        /// <param name=\"additionalQueryString\">\n        /// \tThe additional query string.\n        /// \n        /// \tIf empty, the base query string is used.\n        /// </param>\n        /// <returns></returns>\n        /// <remarks>\n        /// \tDoes not remove duplicate parameters.\n        /// </remarks>\n        static string MergeQueryStrings(string baseQueryString, string additionalQueryString)\n        {\n            if (String.IsNullOrWhiteSpace(additionalQueryString))\n                return baseQueryString;\n\n            if (String.IsNullOrWhiteSpace(baseQueryString))\n                return additionalQueryString;\n\n            StringBuilder combinedQueryParameters = new StringBuilder();\n            if (baseQueryString[0] != '?')\n                combinedQueryParameters.Append('?');\n\n            combinedQueryParameters.Append(baseQueryString);\n\n            if (additionalQueryString[0] != '?')\n                combinedQueryParameters.Append(additionalQueryString);\n            else\n                combinedQueryParameters.Append(additionalQueryString, 1, additionalQueryString.Length - 1);\n\n            return combinedQueryParameters.ToString();\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/ValueProviders/IValueProvider.cs",
    "content": "﻿namespace KubeClient.Http.ValueProviders\n{\n    /// <summary>\n    ///\t\tRepresents the provider for a value from an instance of <typeparamref name=\"TContext\"/>.\n    /// </summary>\n    /// <typeparam name=\"TContext\">\n    ///\t\tThe source type from which the value is extracted.\n    /// </typeparam>\n    /// <typeparam name=\"TValue\">\n    ///\t\tThe type of value returned by the provider.\n    /// </typeparam>\n    public interface IValueProvider<in TContext, out TValue>\n    {\n        /// <summary>\n        ///\t\tExtract the value from the specified context.\n        /// </summary>\n        /// <param name=\"source\">\t\n        ///\t\tThe <typeparamref name=\"TContext\"/> instance from which the value is to be extracted.\n        /// </param>\n        /// <returns>\n        ///\t\tThe value.\n        /// </returns>\n        TValue Get(TContext source);\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/ValueProviders/ValueProvider.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.ValueProviders\n{\n    /// <summary>\n    ///\t\tFactory methods for creating value providers.\n    /// </summary>\n    /// <typeparam name=\"TContext\">\n    ///\t\tThe type used as a context for each request.\n    /// </typeparam>\n    public static class ValueProvider<TContext>\n    {\n        /// <summary>\n        ///\t\tCreate a value provider from the specified selector function.\n        /// </summary>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of value returned by the selector.\n        /// </typeparam>\n        /// <param name=\"selector\">\n        ///\t\tA selector function that, when given an instance of <typeparamref name=\"TContext\"/>, and returns a well-known value of type <typeparamref name=\"TValue\"/> derived from the context.\n        /// </param>\n        /// <returns>\n        ///\t\tThe value provider.\n        /// </returns>\n        public static IValueProvider<TContext, TValue> FromSelector<TValue>(Func<TContext, TValue> selector)\n        {\n            if (selector == null)\n                throw new ArgumentNullException(nameof(selector));\n\n            return new SelectorValueProvider<TValue>(selector);\n        }\n\n        /// <summary>\n        ///\t\tCreate a value provider from the specified function.\n        /// </summary>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of value returned by the function.\n        /// </typeparam>\n        /// <param name=\"getValue\">\n        ///\t\tA function that returns a well-known value of type <typeparamref name=\"TValue\"/>.\n        /// </param>\n        /// <returns>\n        ///\t\tThe value provider.\n        /// </returns>\n        public static IValueProvider<TContext, TValue> FromFunction<TValue>(Func<TValue> getValue)\n        {\n            if (getValue == null)\n                throw new ArgumentNullException(nameof(getValue));\n\n            return new FunctionValueProvider<TValue>(getValue);\n        }\n\n        /// <summary>\n        ///\t\tCreate a value provider from the specified constant value.\n        /// </summary>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of value returned by the provider.\n        /// </typeparam>\n        /// <param name=\"value\">\n        ///\t\tA constant value that is returned by the provider.\n        /// </param>\n        /// <returns>\n        ///\t\tThe value provider.\n        /// </returns>\n        public static IValueProvider<TContext, TValue> FromConstantValue<TValue>(TValue value)\n        {\n            return new ConstantValueProvider<TValue>(value);\n        }\n\n        /// <summary>\n        ///\t\tValue provider that invokes a selector function on the context to extract its value.\n        /// </summary>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of value returned by the provider.\n        /// </typeparam>\n        class SelectorValueProvider<TValue>\n            : IValueProvider<TContext, TValue>\n        {\n            /// <summary>\n            ///\t\tThe selector function that extracts a value from the context.\n            /// </summary>\n            readonly Func<TContext, TValue> _selector;\n\n            /// <summary>\n            ///\t\tCreate a new selector-based value provider.\n            /// </summary>\n            /// <param name=\"selector\">\n            ///\t\tThe selector function that extracts a value from the context.\n            /// </param>\n            public SelectorValueProvider(Func<TContext, TValue> selector)\n            {\n                _selector = selector;\n            }\n\n            /// <summary>\n            ///\t\tExtract the value from the specified context.\n            /// </summary>\n            /// <param name=\"source\">\t\n            ///\t\tThe TContext instance from which the value is to be extracted.\n            /// </param>\n            /// <returns>\n            ///\t\tThe value.\n            /// </returns>\n            public TValue Get(TContext source)\n            {\n                if (source == null)\n                    throw new InvalidOperationException(\"The current request template has one more more deferred parameters that refer to its context; the context parameter must therefore be supplied.\");\n\n                return _selector(source);\n            }\n        }\n\n        /// <summary>\n        ///\t\tValue provider that invokes a function to extract its value.\n        /// </summary>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of value returned by the provider.\n        /// </typeparam>\n        class FunctionValueProvider<TValue>\n            : IValueProvider<TContext, TValue>\n        {\n            /// <summary>\n            ///\t\tThe function that is invoked to provide a value.\n            /// </summary>\n            readonly Func<TValue> _getValue;\n\n            /// <summary>\n            ///\t\tCreate a new function-based value provider.\n            /// </summary>\n            /// <param name=\"getValue\">\n            ///\t\tThe function that is invoked to provide a value.\n            /// </param>\n            public FunctionValueProvider(Func<TValue> getValue)\n            {\n                _getValue = getValue;\n            }\n\n            /// <summary>\n            ///\t\tExtract the value from the specified context.\n            /// </summary>\n            /// <param name=\"source\">\t\n            ///\t\tThe TContext instance from which the value is to be extracted.\n            /// </param>\n            /// <returns>\n            ///\t\tThe value.\n            /// </returns>\n            public TValue Get(TContext source)\n            {\n                if (source == null)\n                    return default(TValue); // AF: Is this correct?\n\n                return _getValue();\n            }\n        }\n\n        /// <summary>\n        ///\t\tValue provider that returns a constant value.\n        /// </summary>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of value returned by the provider.\n        /// </typeparam>\n        class ConstantValueProvider<TValue>\n            : IValueProvider<TContext, TValue>\n        {\n            /// <summary>\n            ///\t\tThe constant value returned by the provider.\n            /// </summary>\n            readonly TValue _value;\n\n            /// <summary>\n            ///\t\tCreate a new constant value provider.\n            /// </summary>\n            /// <param name=\"value\">\n            ///\t\tThe constant value returned by the provider.\n            /// </param>\n            public ConstantValueProvider(TValue value)\n            {\n                _value = value;\n            }\n\n            /// <summary>\n            ///\t\tExtract the value from the specified context.\n            /// </summary>\n            /// <param name=\"source\">\t\n            ///\t\tThe TContext instance from which the value is to be extracted.\n            /// </param>\n            /// <returns>\n            ///\t\tThe value.\n            /// </returns>\n            public TValue Get(TContext source)\n            {\n                if (source == null)\n                    return default(TValue); // AF: Is this correct?\n\n                return _value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/KubeClient.Http/ValueProviders/ValueProviderConversion.cs",
    "content": "using System;\n\nnamespace KubeClient.Http.ValueProviders\n{\n    /// <summary>\n    ///\t\tConversion operations for a value provider.\n    /// </summary>\n    /// <typeparam name=\"TContext\">\n    ///\t\tThe type used as a context for each request.\n    /// </typeparam>\n    /// <typeparam name=\"TValue\">\n    ///\t\tThe type of value returned by the value provider.\n    /// </typeparam>\n    public struct ValueProviderConversion<TContext, TValue>\n    {\n        /// <summary>\n        ///\t\tCreate a new value-provider conversion.\n        /// </summary>\n        /// <param name=\"valueProvider\">\n        ///\t\tThe value provider being converted.\n        /// </param>\n        public ValueProviderConversion(IValueProvider<TContext, TValue> valueProvider)\n            : this()\n        {\n            if (valueProvider == null)\n                throw new ArgumentNullException(nameof(valueProvider));\n\n            ValueProvider = valueProvider;\n        }\n\n        /// <summary>\n        ///\t\tThe value provider being converted.\n        /// </summary>\n        public IValueProvider<TContext, TValue> ValueProvider { get; }\n\n        /// <summary>\n        ///\t\tWrap the specified value provider in a value provider that utilises a more-derived context type.\n        /// </summary>\n        /// <typeparam name=\"TDerivedContext\">\n        ///\t\tThe more-derived type used by the new provider as a context for each request.\n        /// </typeparam>\n        /// <returns>\n        ///\t\tThe outer (converting) value provider.\n        /// </returns>\n        public IValueProvider<TDerivedContext, TValue> ContextTo<TDerivedContext>()\n            where TDerivedContext : TContext\n        {\n            // Can't close over members of structs.\n            IValueProvider<TContext, TValue> valueProvider = ValueProvider;\n\n            return ValueProvider<TDerivedContext>.FromSelector(\n                context => valueProvider.Get(context)\n            );\n        }\n\n        /// <summary>\n        ///\t\tWrap the value provider in a value provider that converts its value to a string.\n        /// </summary>\n        /// <returns>\n        ///\t\tThe outer (converting) value provider.\n        /// </returns>\n        /// <remarks>\n        ///\t\tIf the underlying value is <c>null</c> then the converted string value will be <c>null</c>, too.\n        /// </remarks>\n        public IValueProvider<TContext, string> ValueToString()\n        {\n            // Special-case conversion to save on allocations.\n            if (typeof(TValue) == typeof(string))\n                return (IValueProvider<TContext, string>)ValueProvider;\n\n            // Can't close over members of structs.\n            IValueProvider<TContext, TValue> valueProvider = ValueProvider;\n\n            return ValueProvider<TContext>.FromSelector(\n                context =>\n                {\n                    TValue value = valueProvider.Get(context);\n\n                    return value != null ? value.ToString() : null;\n                }\n            );\n        }\n    }\n}"
  },
  {
    "path": "src/KubeClient.Http/ValueProviders/ValueProviderExtensions.cs",
    "content": "﻿using System;\n\nnamespace KubeClient.Http.ValueProviders\n{\n    /// <summary>\n    ///\t\tExtension methods for <see cref=\"IValueProvider{TContext,TValue}\"/>.\n    /// </summary>\n    public static class ValueProviderExtensions\n    {\n        /// <summary>\n        ///\t\tPerform a conversion on the value provider.\n        /// </summary>\n        /// <typeparam name=\"TContext\">\n        ///\t\tThe source type from which the value is extracted.\n        /// </typeparam>\n        /// <typeparam name=\"TValue\">\n        ///\t\tThe type of value extracted by the provider.\n        /// </typeparam>\n        /// <param name=\"valueProvider\">\n        ///\t\tThe value provider.\n        /// </param>\n        /// <returns>\n        ///\t\tA <see cref=\"ValueProviderConversion{TContext,TValue}\"/> whose methods can be used to select the conversion to perform on the value converter.\n        /// </returns>\n        public static ValueProviderConversion<TContext, TValue> Convert<TContext, TValue>(this IValueProvider<TContext, TValue> valueProvider)\n        {\n            if (valueProvider == null)\n                throw new ArgumentNullException(nameof(valueProvider));\n\n            return new ValueProviderConversion<TContext, TValue>(valueProvider);\n        }\n    }\n}\n"
  },
  {
    "path": "src/Swagger/generate_models.py",
    "content": "\"\"\"\nGenerate model classes from Kubernetes swagger.\n\"\"\"\n\nimport json\nimport os.path\nimport pprint\n\nBASE_DIRECTORY = os.path.abspath('../KubeClient/Models/generated')\nROOT_NAMESPACE = 'KubeClient.Models'\nIGNORE_MODELS = {\n    'io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions',\n    'io.k8s.apimachinery.pkg.apis.meta.v1.Time',\n    'io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime',\n\n    'io.k8s.apimachinery.pkg.api.resource.Quantity',\n    'io.k8s.apimachinery.pkg.util.intstr.IntOrString',\n\n    # Present in both regular and and 'extensions' groups:\n    'io.k8s.api.extensions.v1beta1.Deployment',\n    'io.k8s.api.extensions.v1beta1.DeploymentList',\n    'io.k8s.api.extensions.v1beta1.DeploymentRollback',\n    'io.k8s.api.extensions.v1beta1.NetworkPolicy',\n    'io.k8s.api.extensions.v1beta1.NetworkPolicyList',\n    'io.k8s.api.extensions.v1beta1.PodSecurityPolicy',\n    'io.k8s.api.extensions.v1beta1.PodSecurityPolicyList',\n    'io.k8s.api.extensions.v1beta1.ReplicaSet',\n    'io.k8s.api.extensions.v1beta1.ReplicaSetList',\n    'io.k8s.api.extensions.v1.Deployment',\n    'io.k8s.api.extensions.v1.DeploymentList',\n    'io.k8s.api.extensions.v1.DeploymentRollback',\n    'io.k8s.api.extensions.v1.NetworkPolicy',\n    'io.k8s.api.extensions.v1.NetworkPolicyList',\n    'io.k8s.api.extensions.v1.PodSecurityPolicy',\n    'io.k8s.api.extensions.v1.PodSecurityPolicyList',\n    'io.k8s.api.extensions.v1.ReplicaSet',\n    'io.k8s.api.extensions.v1.ReplicaSetList',\n    'io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevision',\n    'io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevisionList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSet',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Deployment',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentRollback',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicy',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicy',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicyList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSet',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Scale',\n    'io.k8s.kubernetes.pkg.apis.apps.v1.ControllerRevision',\n    'io.k8s.kubernetes.pkg.apis.apps.v1.ControllerRevisionList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.DaemonSet',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.DaemonSetList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.Deployment',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.DeploymentList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.DeploymentRollback',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.NetworkPolicy',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.NetworkPolicyList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.PodSecurityPolicy',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.PodSecurityPolicyList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.ReplicaSet',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.ReplicaSetList',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1.Scale',\n\n    # Special case for EventV1\n    'io.k8s.api.events.v1.Event',\n    'io.k8s.api.events.v1.EventList',\n\n    # Hand-coded:\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource',\n    'io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResourceList'\n}\nVALUE_TYPE_NAMES = [\n    'bool',\n    'int',\n    'long',\n    'double',\n    'DateTime'\n]\nKUBE_ACTIONS = {\n    'deletecollection': 'DeleteCollection',\n    'list': 'List',\n    'post': 'Create',\n    'delete': 'Delete',\n    'get': 'Get',\n    'patch': 'Patch',\n    'put': 'Update',\n    'watch': 'Watch',\n    'watchlist': 'WatchList',\n}\nLINE_ENDING = '\\n'\n\n\nclass KubeModel(object):\n    \"\"\"\n    Represents a Kubernetes API model.\n    \"\"\"\n\n    def __init__(self, name, summary, api_version, pretty_api_version, kube_group, required_property_keys):\n        self.name = name\n        self.api_version = api_version\n        self.pretty_api_version = pretty_api_version\n        self.kube_group = kube_group\n        if self.kube_group:\n            self.api_groupversion = '{0}/{1}'.format(self.kube_group, self.api_version)\n        else:\n            self.api_groupversion = self.api_version\n        self.clr_name = self.name + self.pretty_api_version\n        self.summary = summary or 'No summary provided'\n        self.required_property_keys = required_property_keys\n        self.properties = {}\n\n    def update_properties(self, property_definitions, data_types):\n        self.properties.clear()\n\n        for property_name in sorted(property_definitions.keys(), key=get_defname_sort_key):\n            safe_property_name = property_name\n            if safe_property_name.startswith('$'):\n                # Trim prefix\n                safe_property_name = safe_property_name[1:]\n\n                # Capitalise\n                safe_property_name = safe_property_name[0].capitalize() + safe_property_name[1:]\n                safe_property_name = safe_property_name.replace('$', 'dollar')\n\n            self.properties[safe_property_name] = KubeModelProperty.from_definition(\n                safe_property_name,\n                property_name,\n                property_definitions[property_name],\n                data_types,\n                is_optional=(\n                    property_name not in self.required_property_keys\n                )\n            )\n\n    def is_kube_object(self):\n        kind_property = self.properties.get('kind')\n        if not kind_property or kind_property.data_type.name != 'string':\n            return False\n\n        api_version_property = self.properties.get('apiVersion')\n        if not api_version_property or api_version_property.data_type.name != 'string':\n            return False\n\n        return True\n\n    def is_kube_resource(self):\n        return self.is_kube_object() and self.has_kube_metadata()\n\n    def is_kube_resource_list(self):\n        kind_property = self.properties.get('kind')\n        if not kind_property or kind_property.data_type.name != 'string':\n            return False\n\n        api_version_property = self.properties.get('apiVersion')\n        if not api_version_property or api_version_property.data_type.name != 'string':\n            return False\n\n        return self.has_kube_list_metadata()\n\n    def has_kube_metadata(self):\n        metadata_property = self.properties.get('metadata')\n        if not metadata_property:\n            return False\n\n        if metadata_property.data_type.name != 'ObjectMeta':\n            return False\n\n        return True\n\n    def has_kube_list_metadata(self):\n        metadata_property = self.properties.get('metadata')\n        if not metadata_property:\n            return False\n\n        if metadata_property.data_type.name != 'ListMeta':\n            return False\n\n        return True\n\n    def has_list_items(self):\n        items_property = self.properties.get('items')\n        if not items_property:\n            return False\n\n        return items_property.data_type.is_collection()\n\n    def list_item_data_type(self):\n        if not self.has_list_items():\n            return None\n\n        return self.properties['items'].data_type.element_type\n\n    @classmethod\n    def from_definition(cls, definition_name, definition):\n        (name, api_version, pretty_api_version) = KubeModel.get_model_info(definition_name)\n        summary = definition.get(\n            'description',\n            'No description provided.'\n        ).replace(\n            '&', '&amp;'\n        ).replace(\n            '<', '&lt;'\n        ).replace(\n            '>', '&gt;'\n        )\n\n        required_property_keys = set(\n            definition.get('required') or []\n        )\n\n        # Override model metadata with Kubernetes-specific values, if available.\n        kube_group = ''\n        if 'x-kubernetes-group-version-kind' in definition:\n            kube_metadata = definition['x-kubernetes-group-version-kind'][0]\n            kube_group = kube_metadata.get('group', '')\n            kube_kind = kube_metadata['kind']\n            api_version = kube_metadata['version']\n\n            name = kube_kind\n\n        return KubeModel(name, summary, api_version, pretty_api_version, kube_group, required_property_keys)\n\n\n    @classmethod\n    def get_model_info(cls, definition_name):\n        name_components = definition_name.split('.')\n        if len(name_components) < 2:\n            return (definition_name[-1], '', '')\n\n        name = capitalize_name(name_components[-1])\n\n        api_version = name_components[-2]\n        pretty_api_version = api_version.capitalize().replace(\n            'alpha', 'Alpha'\n        ).replace(\n            'beta', 'Beta'\n        )\n\n        # don't double up on version in model names\n        if name.endswith(pretty_api_version):\n            name = name[:-len(pretty_api_version)]\n\n        return (name, api_version, pretty_api_version)\n\n    def __repr__(self):\n        return 'KubeModel(name=\"{}\",version=\"{}\")\\n{}'.format(\n            self.name,\n            self.api_version,\n            pprint.pformat([\n                self.properties.values()\n            ])\n        )\n\n\nclass KubeModelProperty(object):\n    def __init__(self, name, json_name, summary, data_type, is_optional, is_merge, is_retain_keys, merge_key):\n        self.name = sanitize_name(name)\n        self.json_name = json_name\n        self.summary = summary or 'No summary provided'\n        self.summary = self.summary.replace(\n            '&', '&amp;'\n        ).replace(\n            '<', '&lt;'\n        ).replace(\n            '>', '&gt;'\n        )\n        self.data_type = data_type\n        self.is_optional = is_optional\n        self.is_merge = is_merge\n        self.is_retain_keys = is_retain_keys\n        self.merge_key = merge_key\n\n    def __repr__(self):\n        return 'KubeModelProperty(name=\"{}\",type={})'.format(\n            self.name,\n            repr(self.data_type)\n        )\n\n    @classmethod\n    def from_definition(cls, name, json_name, property_definition, data_types, is_optional):\n        summary = property_definition.get('description', 'Description not provided.')\n        data_type = KubeDataType.from_definition(property_definition, data_types)\n\n        is_merge = False\n        is_retain_keys = False\n\n        if property_definition.get('x-kubernetes-patch-strategy') == 'merge':\n            is_merge = True\n        elif property_definition.get('x-kubernetes-patch-strategy') == 'merge,retainKeys':\n            is_merge = True\n            is_retain_keys = True\n        elif property_definition.get('x-kubernetes-patch-strategy') == 'retainKeys':\n            is_retain_keys = True\n\n        merge_key = property_definition.get('x-kubernetes-patch-merge-key')\n\n        return KubeModelProperty(name, json_name, summary, data_type, is_optional, is_merge, is_retain_keys, merge_key)\n\n\nclass KubeDataType(object):\n    def __init__(self, name, summary):\n        self.name = name\n        self.summary = summary\n\n    def is_intrinsic(self):\n        return False\n\n    def is_collection(self):\n        return False\n\n    def to_clr_type_name(self, is_nullable=False):\n        return get_cts_type_name(self.name)\n\n    def __repr__(self):\n        return \"KubeDataType(name='{0}')\".format(self.name)\n\n    @classmethod\n    def from_definition(cls, definition, data_types):\n\n        if 'type' in definition:\n            type_name = definition['type']\n            type_format = definition.get('format')\n\n            if type_name == 'array':\n                item_definition = definition['items']\n                element_type = KubeDataType.from_definition(item_definition, data_types)\n\n                return KubeArrayDataType(element_type)\n            elif type_name == 'object':\n                item_definition = definition['additionalProperties']\n                element_type = KubeDataType.from_definition(item_definition, data_types)\n\n                return KubeDictionaryDataType(element_type)\n            elif type_name == 'number':\n                if type_format == 'double':\n                    return KubeIntrinsicDataType('double')\n            elif type_name == 'integer':\n                if type_format == 'int32':\n                    return KubeIntrinsicDataType('int')\n                elif type_format == 'int64':\n                    return KubeIntrinsicDataType('long')\n            else:\n                if type_name in data_types:\n                    return data_types[type_name]\n\n                data_type = KubeIntrinsicDataType(type_name)\n                data_types[type_name] = data_type\n\n                return data_type\n\n        type_name = definition['$ref'].replace('#/definitions/', '')\n        if type_name in data_types:\n            return data_types[type_name]\n\n        summary = definition.get('description', 'Description not provided.')\n        data_type = KubeDataType(type_name, summary)\n        data_types[type_name] = data_type\n\n        return data_type\n\nclass KubeIntrinsicDataType(KubeDataType):\n    def __init__(self, name):\n        super().__init__(name, 'Intrinsic data-type.')\n\n    def is_intrinsic(self):\n        return True\n\n    def __repr__(self):\n        return \"KubeIntrinsicDataType(name='{0}')\".format(self.name)\n\n    def to_clr_type_name(self, is_nullable=False):\n        clr_type_name = super().to_clr_type_name(is_nullable)\n\n        if (is_nullable and clr_type_name in VALUE_TYPE_NAMES) or clr_type_name == 'DateTime':\n            clr_type_name += '?'\n\n        return clr_type_name\n\nclass KubeArrayDataType(KubeDataType):\n    def __init__(self, element_type):\n        super().__init__(element_type.name, element_type.summary)\n\n        self.element_type = element_type\n\n    def is_collection(self):\n        return True\n\n    def __repr__(self):\n        return \"KubeArrayDataType(element_type={0})\".format(\n            repr(self.element_type)\n        )\n\n    def to_clr_type_name(self, is_nullable=False):\n        return 'List<{}>'.format(\n            get_cts_type_name(self.element_type.to_clr_type_name(is_nullable)).replace('?', '') # List<DateTime?> would be odious to deal with.\n        )\n\nclass KubeDictionaryDataType(KubeDataType):\n    def __init__(self, element_type):\n        super().__init__(element_type.name, element_type.summary)\n\n        self.element_type = element_type\n\n    def is_collection(self):\n        return True\n\n    def __repr__(self):\n        return \"KubeDictionaryDataType(element_type={0})\".format(\n            repr(self.element_type)\n        )\n\n    def to_clr_type_name(self, is_nullable=False):\n        return 'Dictionary<string, {}>'.format( # AFAICT, Kubernetes models only use strings as dictionary keys\n            get_cts_type_name(self.element_type.to_clr_type_name(is_nullable)).replace('?', '') # Dictionary<string, DateTime?> would be odious to deal with.\n        )\n\nclass KubeModelDataType(KubeDataType):\n    def __init__(self, model):\n        super().__init__(model.name, model.summary)\n        self.model = model\n        self.clr_name = self.model.name + self.model.api_version\n\n    def __repr__(self):\n        return \"KubeModelDataType(kind='{0}', api_version='{1}', clr_type_name='{2}')\".format(\n            self.model.name,\n            self.model.pretty_api_version,\n            self.to_clr_type_name()\n        )\n\n    def to_clr_type_name(self, is_nullable=False):\n        return self.model.clr_name\n\ndef capitalize_name(name):\n    return name[0].capitalize() + name[1:]\n\ndef sanitize_name(name):\n    name_components = name.split('-')\n    if name_components[0] == 'x':\n        name_components = name_components[1:]\n\n    return ''.join([\n        capitalize_name(name_component)\n        for name_component in name_components\n    ])\n\ndef get_defname_sort_key(definition_name):\n    (type_name, _, _) = KubeModel.get_model_info(definition_name)\n\n    return type_name\n\ndef get_cts_type_name(swagger_type_name):\n    if swagger_type_name == 'integer':\n        return 'int'\n\n    if swagger_type_name == 'boolean':\n        return 'bool'\n\n    return swagger_type_name\n\ndef parse_models(definitions):\n    models = {\n        definition_name: KubeModel.from_definition(\n            definition_name,\n            definitions[definition_name]\n        )\n        for definition_name in definitions.keys()\n        if definition_name not in IGNORE_MODELS\n    }\n\n    # Some model definitions are deprecated, and remapped to other definitions\n    for (definition_name, definition) in definitions.items():\n        if definition_name in IGNORE_MODELS:\n            continue\n\n        # Remapped (stub) models have '$ref' but not 'properties'.\n        if '$ref' in definition and 'properties' not in definition:\n            map_to_definition_name = definition['$ref'].replace('#/definitions/', '')\n            if map_to_definition_name in IGNORE_MODELS:\n                continue\n\n            # Point the model name to the updated definition.\n            models[definition_name] = models[map_to_definition_name]\n\n    return models\n\ndef get_data_types(models):\n    data_types = {\n        model_name: KubeModelDataType(\n            models[model_name]\n        )\n        for model_name in models.keys()\n    }\n\n    # Well-known intrinsic data-types\n    data_types.update({\n        'integer': KubeIntrinsicDataType('int'),\n        'string': KubeIntrinsicDataType('string'),\n        'io.k8s.apimachinery.pkg.apis.meta.v1.Time': KubeIntrinsicDataType('DateTime'),\n        'io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime': KubeIntrinsicDataType('DateTime'),\n        'io.k8s.apimachinery.pkg.util.intstr.IntOrString': KubeIntrinsicDataType('Int32OrStringV1'),\n        'io.k8s.apimachinery.pkg.api.resource.Quantity': KubeIntrinsicDataType('string'),\n        'io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions': KubeIntrinsicDataType('DeleteOptionsV1')  # This model is hand-crafted\n    })\n\n    return data_types\n\ndef parse_properties(models, data_types, definitions):\n    for definition_name in definitions.keys():\n        definition = definitions[definition_name]\n        if definition_name not in models:\n            continue\n\n        properties = definition.get('properties')\n        if not properties:\n            continue\n\n        model = models[definition_name]\n        model.update_properties(properties, data_types)\n\ndef parse_apis(api_paths):\n    apis = {}\n\n    for api_path in sorted(api_paths.keys()):\n        api_verbs = api_paths[api_path]\n        for api_verb in sorted(api_verbs.keys()):\n            if api_verb == 'parameters':\n                continue\n\n            api_metadata = api_verbs[api_verb]\n\n            if 'x-kubernetes-action' not in api_metadata or 'x-kubernetes-group-version-kind' not in api_metadata:\n                continue\n\n            action = api_metadata['x-kubernetes-action']\n            resource_metadata = api_metadata['x-kubernetes-group-version-kind']\n            resource_group = resource_metadata['group']\n            resource_api_version = resource_metadata['version']\n            resource_kind = resource_metadata['kind']\n\n            api_key = '{}/{}/{}'.format(resource_group, resource_api_version, resource_kind)\n\n            api = apis.get(api_key)\n            if not api:\n                api = {}\n                apis[api_key] = api\n\n            if action not in api:\n                api[action] = []\n\n            api[action].append(api_path)\n\n    return apis\n\ndef main():\n    try:\n        os.stat(BASE_DIRECTORY)\n    except FileNotFoundError:\n        os.mkdir(BASE_DIRECTORY)\n\n    with open('kube-1.31-swagger.json') as kube_swagger_file:\n        kube_swagger = json.load(kube_swagger_file)\n\n    paths = kube_swagger[\"paths\"]\n    apis = parse_apis(paths)\n\n    definitions = kube_swagger[\"definitions\"]\n    models = parse_models(definitions)\n\n    data_types = get_data_types(models)\n    parse_properties(models, data_types, definitions)\n\n    for definition_name in sorted(definitions.keys(), key=get_defname_sort_key):\n        if definition_name in IGNORE_MODELS:\n            continue\n\n        model = models[definition_name]\n\n        class_namespace = ROOT_NAMESPACE\n        class_directory_path = BASE_DIRECTORY\n\n        if not os.path.exists(class_directory_path):\n            os.mkdir(class_directory_path)\n        \n        resource_api_key = '{}/{}/{}'.format(model.kube_group, model.api_version, model.name)\n        resource_api = apis.get(resource_api_key)\n\n        class_file_name = os.path.join(class_directory_path, model.clr_name + '.cs')\n        with open(class_file_name, 'w') as class_file:\n            class_file.write('using Newtonsoft.Json;' + LINE_ENDING)\n            class_file.write('using System;' + LINE_ENDING)\n            class_file.write('using System.Collections.Generic;' + LINE_ENDING)\n            class_file.write('using YamlDotNet.Serialization;' + LINE_ENDING)\n            class_file.write(LINE_ENDING)\n            class_file.write('namespace ' + class_namespace + LINE_ENDING)\n            class_file.write('{' + LINE_ENDING)\n\n            class_file.write('    /// <summary>' + LINE_ENDING)\n\n            for model_summary_line in model.summary.split('\\n'):\n                class_file.write('    ///     ' + model_summary_line + LINE_ENDING)\n            class_file.write('    /// </summary>' + LINE_ENDING)\n\n            model_annotations = []\n\n            if model.has_list_items():\n                try:\n                    list_item_model = model.list_item_data_type().model\n                except AttributeError:\n                    print('List item datatype \"{0}\" is not a model'.format(model.name))\n                    pprint.pprint(model.list_item_data_type)\n\n                    raise\n\n                model_annotations.append('    [KubeListItem(\"{0}\", \"{1}\")]{2}'.format(\n                    list_item_model.name,\n                    list_item_model.api_groupversion,\n                    LINE_ENDING\n                ))\n\n            if model.is_kube_resource() or model.is_kube_resource_list():\n                model_annotations.append('    [KubeObject(\"{0}\", \"{1}\")]{2}'.format(\n                    model.name,\n                    model.api_groupversion,\n                    LINE_ENDING\n                ))\n\n            # TODO: Add KubeResourceAliasAttribute, but how do we infer singularName and shortNames? These are only available via the API.\n\n            if model.is_kube_resource() and resource_api:\n                added_annotations = set()\n                action_paths = {}\n                for action in sorted(resource_api.keys()):\n                    api_paths = resource_api[action]\n                    api_action = 'KubeAction.' + KUBE_ACTIONS.get(action,\n                        action.capitalize()  # Default\n                    )\n\n                    for api_path in api_paths:\n                        if api_action not in action_paths:\n                            action_paths[api_action] = []\n\n                        action_paths[api_action].append(api_path)\n\n                for api_action in sorted(action_paths.keys()):\n                    for api_path in sorted(action_paths[api_action]):\n                        annotation = '    [KubeApi({0}, \"{1}\")]{2}'.format(\n                            api_action,\n                            api_path.strip('/'),\n                            LINE_ENDING\n                        )\n\n                        # Ignore duplicates.\n                        if annotation not in added_annotations:\n                            model_annotations.append(annotation)\n                            added_annotations.add(annotation)\n\n            model_annotations.sort(key=len)  # Shorter attributes come first\n            for model_annotation in model_annotations:\n                class_file.write(model_annotation)\n\n            class_file.write('    public partial class ' + model.clr_name)\n            if model.is_kube_resource():\n                class_file.write(' : KubeResourceV1')\n            elif model.is_kube_resource_list():\n                if model.has_list_items():\n                    class_file.write(' : KubeResourceListV1<{0}>'.format(\n                        model.list_item_data_type().to_clr_type_name()\n                    ))\n                else:\n                    class_file.write(' : KubeResourceListV1')\n            elif model.is_kube_object():\n                class_file.write(' : KubeObjectV1')\n\n            class_file.write(LINE_ENDING)\n\n            class_file.write('    {' + LINE_ENDING)\n\n            properties = model.properties\n            property_names = [name for name in properties.keys()]\n\n            if model.is_kube_object():\n                property_names.remove('apiVersion')\n                property_names.remove('kind')\n\n                if model.has_kube_metadata() or model.has_kube_list_metadata():\n                    property_names.remove('metadata')\n\n                if model.is_kube_resource_list() and model.has_list_items():\n                    property_names.remove('items')\n\n            for property_index in range(0, len(property_names)):\n                property_name = property_names[property_index]\n                model_property = properties[property_name]\n\n                class_file.write('        /// <summary>' + LINE_ENDING)\n                for property_summary_line in model_property.summary.split('\\n'):\n                    class_file.write('        ///     ' + property_summary_line + LINE_ENDING)\n                class_file.write('        /// </summary>' + LINE_ENDING)\n\n                if model_property.data_type.is_collection():\n                    if model_property.is_retain_keys:\n                        class_file.write('        [RetainKeysStrategy]%s' % (LINE_ENDING, ))\n\n                    # Shorter attribute comes before [YamlMember]...\n                    if model_property.is_merge:\n                        if not model_property.merge_key:\n                            class_file.write('        [MergeStrategy]%s' % (LINE_ENDING,))\n                        elif len(model_property.merge_key) <= len(model_property.json_name):\n                            class_file.write('        [MergeStrategy(Key = \"%s\")]%s' % (model_property.merge_key, LINE_ENDING))  \n\n                    class_file.write('        [YamlMember(Alias = \"%s\")]%s' % (model_property.json_name, LINE_ENDING))\n\n                    # ...but longer attribute comes after [YamlMember].\n                    if model_property.is_merge:\n                        if model_property.merge_key and len(model_property.merge_key) > len(model_property.json_name):\n                            class_file.write('        [MergeStrategy(Key = \"%s\")]%s' % (model_property.merge_key, LINE_ENDING))\n\n                    class_file.write('        [JsonProperty(\"%s\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]%s' % (model_property.json_name, LINE_ENDING))\n\n                    class_file.write('        public %s %s { get; } = new %s();%s' % (\n                        model_property.data_type.to_clr_type_name(),\n                        model_property.name,\n                        model_property.data_type.to_clr_type_name(),\n                        LINE_ENDING\n                    ))\n\n                    # Don't serialise empty lists for optional properties.\n                    # See tintoy/dotnet-kube-client#36 for reasoning behind this.\n                    if model_property.is_optional:\n                        class_file.write(LINE_ENDING)\n\n                        class_file.write('        /// <summary>' + LINE_ENDING)\n                        class_file.write('        ///     Determine whether the <see cref=\"{0}\"/> property should be serialised.{1}'.format(model_property.name, LINE_ENDING))\n                        class_file.write('        /// </summary>' + LINE_ENDING)\n                        class_file.write('        public bool ShouldSerialize{0}() => {0}.Count > 0;{1}'.format(model_property.name, LINE_ENDING))\n                else:\n                    if model_property.is_retain_keys:\n                        class_file.write('        [RetainKeysStrategy]%s' % (LINE_ENDING, ))\n\n                    # Shorter attribute comes before [JsonProperty]...\n                    if model_property.is_merge:\n                        if not model_property.merge_key:\n                            class_file.write('        [MergeStrategy]%s' % (LINE_ENDING,))\n\n                    class_file.write('        [YamlMember(Alias = \"%s\")]%s' % (model_property.json_name, LINE_ENDING))\n\n                    if model_property.is_optional:\n                        class_file.write('        [JsonProperty(\"%s\", NullValueHandling = NullValueHandling.Ignore)]%s' % (model_property.json_name, LINE_ENDING))\n                    else:\n                        class_file.write('        [JsonProperty(\"%s\", NullValueHandling = NullValueHandling.Include)]%s' % (model_property.json_name, LINE_ENDING))\n\n                    # ...but longer attribute comes after [YamlMember].\n                    if model_property.is_merge:\n                        if model_property.merge_key:\n                            class_file.write('        [MergeStrategy(Key = \"%s\")]%s' % (model_property.merge_key, LINE_ENDING))\n\n                    class_file.write('        public %s %s { get; set; }%s' % (\n                        model_property.data_type.to_clr_type_name(is_nullable=model_property.is_optional),\n                        model_property.name,\n                        LINE_ENDING\n                    ))\n\n                if property_index + 1 < len(property_names):\n                    class_file.write(LINE_ENDING)\n\n            # Special case for Items property (we override the base class's property, adding the JsonProperty attribute).\n            if model.is_kube_resource_list() and model.has_list_items():\n                model_property = model.properties['items']\n\n                class_file.write('        /// <summary>' + LINE_ENDING)\n                for property_summary_line in model_property.summary.split('\\n'):\n                    class_file.write('        ///     ' + property_summary_line + LINE_ENDING)\n                class_file.write('        /// </summary>' + LINE_ENDING)\n\n                class_file.write('        [JsonProperty(\"%s\", ObjectCreationHandling = ObjectCreationHandling.Reuse)]%s' % (model_property.json_name, LINE_ENDING))\n                class_file.write('        public override %s %s { get; } = new %s();%s' % (\n                    model_property.data_type.to_clr_type_name(),\n                    model_property.name,\n                    model_property.data_type.to_clr_type_name(),\n                    LINE_ENDING\n                ))\n\n            class_file.write('    }' + LINE_ENDING) # Class\n\n            class_file.write('}' + LINE_ENDING) # Namespace\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "src/Swagger/kube-1.31-swagger.json",
    "content": "{\n  \"definitions\": {\n    \"io.k8s.api.admissionregistration.v1.AuditAnnotation\": {\n      \"description\": \"AuditAnnotation describes how to produce an audit annotation for an API request.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\\n\\nThe key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \\\"{ValidatingAdmissionPolicy name}/{key}\\\".\\n\\nIf an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\\n\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"valueExpression\": {\n          \"description\": \"valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb.\\n\\nIf multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list.\\n\\nRequired.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"valueExpression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ExpressionWarning\": {\n      \"description\": \"ExpressionWarning is a warning information that targets a specific expression.\",\n      \"properties\": {\n        \"fieldRef\": {\n          \"description\": \"The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \\\"spec.validations[0].expression\\\"\",\n          \"type\": \"string\"\n        },\n        \"warning\": {\n          \"description\": \"The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"fieldRef\",\n        \"warning\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.MatchCondition\": {\n      \"description\": \"MatchCondition represents a condition which must by fulfilled for a request to be sent to a webhook.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables:\\n\\n'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\\n'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\\n  request resource.\\nDocumentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/\\n\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\\n\\nRequired.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"expression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.MatchResources\": {\n      \"description\": \"MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\",\n      \"properties\": {\n        \"excludeResourceRules\": {\n          \"description\": \"ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.NamedRuleWithOperations\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"matchPolicy\": {\n          \"description\": \"matchPolicy defines how the \\\"MatchResources\\\" list is used to match incoming requests. Allowed values are \\\"Exact\\\" or \\\"Equivalent\\\".\\n\\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.\\n\\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.\\n\\nDefaults to \\\"Equivalent\\\"\",\n          \"type\": \"string\"\n        },\n        \"namespaceSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy.\\n\\nFor example, to run the webhook on any objects whose namespace is not associated with \\\"runlevel\\\" of \\\"0\\\" or \\\"1\\\";  you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"runlevel\\\",\\n      \\\"operator\\\": \\\"NotIn\\\",\\n      \\\"values\\\": [\\n        \\\"0\\\",\\n        \\\"1\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nIf instead you want to only run the policy on any objects whose namespace is associated with the \\\"environment\\\" of \\\"prod\\\" or \\\"staging\\\"; you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"environment\\\",\\n      \\\"operator\\\": \\\"In\\\",\\n      \\\"values\\\": [\\n        \\\"prod\\\",\\n        \\\"staging\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\\n\\nDefault to the empty LabelSelector, which matches everything.\"\n        },\n        \"objectSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\"\n        },\n        \"resourceRules\": {\n          \"description\": \"ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.NamedRuleWithOperations\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1.MutatingWebhook\": {\n      \"description\": \"MutatingWebhook describes an admission webhook and the resources and operations it applies to.\",\n      \"properties\": {\n        \"admissionReviewVersions\": {\n          \"description\": \"AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"clientConfig\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.WebhookClientConfig\",\n          \"description\": \"ClientConfig defines how to communicate with the hook. Required\"\n        },\n        \"failurePolicy\": {\n          \"description\": \"FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail.\",\n          \"type\": \"string\"\n        },\n        \"matchConditions\": {\n          \"description\": \"MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\\n\\nThe exact matching logic is (in order):\\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\\n  3. If any matchCondition evaluates to an error (but none are FALSE):\\n     - If failurePolicy=Fail, reject the request\\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MatchCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"matchPolicy\": {\n          \"description\": \"matchPolicy defines how the \\\"rules\\\" list is used to match incoming requests. Allowed values are \\\"Exact\\\" or \\\"Equivalent\\\".\\n\\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook.\\n\\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook.\\n\\nDefaults to \\\"Equivalent\\\"\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \\\"imagepolicy\\\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.\",\n          \"type\": \"string\"\n        },\n        \"namespaceSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook.\\n\\nFor example, to run the webhook on any objects whose namespace is not associated with \\\"runlevel\\\" of \\\"0\\\" or \\\"1\\\";  you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"runlevel\\\",\\n      \\\"operator\\\": \\\"NotIn\\\",\\n      \\\"values\\\": [\\n        \\\"0\\\",\\n        \\\"1\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nIf instead you want to only run the webhook on any objects whose namespace is associated with the \\\"environment\\\" of \\\"prod\\\" or \\\"staging\\\"; you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"environment\\\",\\n      \\\"operator\\\": \\\"In\\\",\\n      \\\"values\\\": [\\n        \\\"prod\\\",\\n        \\\"staging\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\\n\\nDefault to the empty LabelSelector, which matches everything.\"\n        },\n        \"objectSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"ObjectSelector decides whether to run the webhook based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the webhook, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\"\n        },\n        \"reinvocationPolicy\": {\n          \"description\": \"reinvocationPolicy indicates whether this webhook should be called multiple times as part of a single admission evaluation. Allowed values are \\\"Never\\\" and \\\"IfNeeded\\\".\\n\\nNever: the webhook will not be called more than once in a single admission evaluation.\\n\\nIfNeeded: the webhook will be called at least one additional time as part of the admission evaluation if the object being admitted is modified by other admission plugins after the initial webhook call. Webhooks that specify this option *must* be idempotent, able to process objects they previously admitted. Note: * the number of additional invocations is not guaranteed to be exactly one. * if additional invocations result in further modifications to the object, webhooks are not guaranteed to be invoked again. * webhooks that use this option may be reordered to minimize the number of additional invocations. * to validate an object after all mutations are guaranteed complete, use a validating admission webhook instead.\\n\\nDefaults to \\\"Never\\\".\",\n          \"type\": \"string\"\n        },\n        \"rules\": {\n          \"description\": \"Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.RuleWithOperations\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"sideEffects\": {\n          \"description\": \"SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some.\",\n          \"type\": \"string\"\n        },\n        \"timeoutSeconds\": {\n          \"description\": \"TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"clientConfig\",\n        \"sideEffects\",\n        \"admissionReviewVersions\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\": {\n      \"description\": \"MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"webhooks\": {\n          \"description\": \"Webhooks is a list of webhooks and the affected resources and operations.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhook\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList\": {\n      \"description\": \"MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of MutatingWebhookConfiguration.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfigurationList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1.NamedRuleWithOperations\": {\n      \"description\": \"NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.\",\n      \"properties\": {\n        \"apiGroups\": {\n          \"description\": \"APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"apiVersions\": {\n          \"description\": \"APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"operations\": {\n          \"description\": \"Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceNames\": {\n          \"description\": \"ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resources\": {\n          \"description\": \"Resources is a list of resources this rule applies to.\\n\\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\\n\\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\\n\\nDepending on the enclosing object, subresources might not be allowed. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"scope\": {\n          \"description\": \"scope specifies the scope of this rule. Valid values are \\\"Cluster\\\", \\\"Namespaced\\\", and \\\"*\\\" \\\"Cluster\\\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \\\"Namespaced\\\" means that only namespaced resources will match this rule. \\\"*\\\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \\\"*\\\".\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ParamKind\": {\n      \"description\": \"ParamKind is a tuple of Group Kind and Version.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion is the API group version the resources belong to. In format of \\\"group/version\\\". Required.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is the API kind the resources belong to. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ParamRef\": {\n      \"description\": \"ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the name of the resource being referenced.\\n\\nOne of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\\n\\nA single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.\\n\\nA per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.\\n\\n- If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.\\n\\n- If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.\",\n          \"type\": \"string\"\n        },\n        \"parameterNotFoundAction\": {\n          \"description\": \"`parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.\\n\\nAllowed values are `Allow` or `Deny`\\n\\nRequired\",\n          \"type\": \"string\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.\\n\\nIf multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.\\n\\nOne of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1.RuleWithOperations\": {\n      \"description\": \"RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.\",\n      \"properties\": {\n        \"apiGroups\": {\n          \"description\": \"APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"apiVersions\": {\n          \"description\": \"APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"operations\": {\n          \"description\": \"Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resources\": {\n          \"description\": \"Resources is a list of resources this rule applies to.\\n\\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\\n\\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\\n\\nDepending on the enclosing object, subresources might not be allowed. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"scope\": {\n          \"description\": \"scope specifies the scope of this rule. Valid values are \\\"Cluster\\\", \\\"Namespaced\\\", and \\\"*\\\" \\\"Cluster\\\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \\\"Namespaced\\\" means that only namespaced resources will match this rule. \\\"*\\\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \\\"*\\\".\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ServiceReference\": {\n      \"description\": \"ServiceReference holds a reference to Service.legacy.k8s.io\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"`name` is the name of the service. Required\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"`namespace` is the namespace of the service. Required\",\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"description\": \"`path` is an optional URL path which will be sent in any request to this service.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"description\": \"If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"namespace\",\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.TypeChecking\": {\n      \"description\": \"TypeChecking contains results of type checking the expressions in the ValidatingAdmissionPolicy\",\n      \"properties\": {\n        \"expressionWarnings\": {\n          \"description\": \"The type checking warnings for each expression.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ExpressionWarning\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\": {\n      \"description\": \"ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicySpec\",\n          \"description\": \"Specification of the desired behavior of the ValidatingAdmissionPolicy.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyStatus\",\n          \"description\": \"The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy behaves in the expected way. Populated by the system. Read-only.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\": {\n      \"description\": \"ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.\\n\\nFor a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding.\\n\\nThe CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingSpec\",\n          \"description\": \"Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList\": {\n      \"description\": \"ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of PolicyBinding.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBindingList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingSpec\": {\n      \"description\": \"ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.\",\n      \"properties\": {\n        \"matchResources\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MatchResources\",\n          \"description\": \"MatchResources declares what resources match this binding and will be validated by it. Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.\"\n        },\n        \"paramRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ParamRef\",\n          \"description\": \"paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.\"\n        },\n        \"policyName\": {\n          \"description\": \"PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.\",\n          \"type\": \"string\"\n        },\n        \"validationActions\": {\n          \"description\": \"validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions.\\n\\nFailures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.\\n\\nvalidationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action.\\n\\nThe supported actions values are:\\n\\n\\\"Deny\\\" specifies that a validation failure results in a denied request.\\n\\n\\\"Warn\\\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses.\\n\\n\\\"Audit\\\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\\\"validation.policy.admission.k8s.io/validation_failure\\\": \\\"[{\\\"message\\\": \\\"Invalid value\\\", {\\\"policy\\\": \\\"policy.example.com\\\", {\\\"binding\\\": \\\"policybinding.example.com\\\", {\\\"expressionIndex\\\": \\\"1\\\", {\\\"validationActions\\\": [\\\"Audit\\\"]}]\\\"`\\n\\nClients should expect to handle additional values by ignoring any values not recognized.\\n\\n\\\"Deny\\\" and \\\"Warn\\\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers.\\n\\nRequired.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList\": {\n      \"description\": \"ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of ValidatingAdmissionPolicy.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicySpec\": {\n      \"description\": \"ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.\",\n      \"properties\": {\n        \"auditAnnotations\": {\n          \"description\": \"auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.AuditAnnotation\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"failurePolicy\": {\n          \"description\": \"failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\\n\\nA policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource.\\n\\nfailurePolicy does not define how validations that evaluate to false are handled.\\n\\nWhen failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced.\\n\\nAllowed values are Ignore or Fail. Defaults to Fail.\",\n          \"type\": \"string\"\n        },\n        \"matchConditions\": {\n          \"description\": \"MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\\n\\nIf a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\\n\\nThe exact matching logic is (in order):\\n  1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\\n  2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\\n  3. If any matchCondition evaluates to an error (but none are FALSE):\\n     - If failurePolicy=Fail, reject the request\\n     - If failurePolicy=Ignore, the policy is skipped\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MatchCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"matchConstraints\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MatchResources\",\n          \"description\": \"MatchConstraints specifies what resources this policy is designed to validate. The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required.\"\n        },\n        \"paramKind\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ParamKind\",\n          \"description\": \"ParamKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.\"\n        },\n        \"validations\": {\n          \"description\": \"Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.Validation\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"variables\": {\n          \"description\": \"Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy.\\n\\nThe expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.Variable\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyStatus\": {\n      \"description\": \"ValidatingAdmissionPolicyStatus represents the status of an admission validation policy.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"The conditions represent the latest available observations of a policy's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"The generation observed by the controller.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"typeChecking\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.TypeChecking\",\n          \"description\": \"The results of type checking for each expression. Presence of this field indicates the completion of the type checking.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingWebhook\": {\n      \"description\": \"ValidatingWebhook describes an admission webhook and the resources and operations it applies to.\",\n      \"properties\": {\n        \"admissionReviewVersions\": {\n          \"description\": \"AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"clientConfig\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.WebhookClientConfig\",\n          \"description\": \"ClientConfig defines how to communicate with the hook. Required\"\n        },\n        \"failurePolicy\": {\n          \"description\": \"FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail.\",\n          \"type\": \"string\"\n        },\n        \"matchConditions\": {\n          \"description\": \"MatchConditions is a list of conditions that must be met for a request to be sent to this webhook. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\\n\\nThe exact matching logic is (in order):\\n  1. If ANY matchCondition evaluates to FALSE, the webhook is skipped.\\n  2. If ALL matchConditions evaluate to TRUE, the webhook is called.\\n  3. If any matchCondition evaluates to an error (but none are FALSE):\\n     - If failurePolicy=Fail, reject the request\\n     - If failurePolicy=Ignore, the error is ignored and the webhook is skipped\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MatchCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"matchPolicy\": {\n          \"description\": \"matchPolicy defines how the \\\"rules\\\" list is used to match incoming requests. Allowed values are \\\"Exact\\\" or \\\"Equivalent\\\".\\n\\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the webhook.\\n\\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the webhook.\\n\\nDefaults to \\\"Equivalent\\\"\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \\\"imagepolicy\\\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.\",\n          \"type\": \"string\"\n        },\n        \"namespaceSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook.\\n\\nFor example, to run the webhook on any objects whose namespace is not associated with \\\"runlevel\\\" of \\\"0\\\" or \\\"1\\\";  you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"runlevel\\\",\\n      \\\"operator\\\": \\\"NotIn\\\",\\n      \\\"values\\\": [\\n        \\\"0\\\",\\n        \\\"1\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nIf instead you want to only run the webhook on any objects whose namespace is associated with the \\\"environment\\\" of \\\"prod\\\" or \\\"staging\\\"; you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"environment\\\",\\n      \\\"operator\\\": \\\"In\\\",\\n      \\\"values\\\": [\\n        \\\"prod\\\",\\n        \\\"staging\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels for more examples of label selectors.\\n\\nDefault to the empty LabelSelector, which matches everything.\"\n        },\n        \"objectSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"ObjectSelector decides whether to run the webhook based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the webhook, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\"\n        },\n        \"rules\": {\n          \"description\": \"Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.RuleWithOperations\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"sideEffects\": {\n          \"description\": \"SideEffects states whether this webhook has side effects. Acceptable values are: None, NoneOnDryRun (webhooks created via v1beta1 may also specify Some or Unknown). Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission chain and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some.\",\n          \"type\": \"string\"\n        },\n        \"timeoutSeconds\": {\n          \"description\": \"TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 10 seconds.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"clientConfig\",\n        \"sideEffects\",\n        \"admissionReviewVersions\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\": {\n      \"description\": \"ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"webhooks\": {\n          \"description\": \"Webhooks is a list of webhooks and the affected resources and operations.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhook\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList\": {\n      \"description\": \"ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of ValidatingWebhookConfiguration.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfigurationList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1.Validation\": {\n      \"description\": \"Validation specifies the CEL expression which is used to apply the validation.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:\\n\\n- 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\\n  For example, a variable named 'foo' can be accessed as 'variables.foo'.\\n- 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\\n- 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\\n  request resource.\\n\\nThe `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\\n\\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\\n\\t  \\\"true\\\", \\\"false\\\", \\\"null\\\", \\\"in\\\", \\\"as\\\", \\\"break\\\", \\\"const\\\", \\\"continue\\\", \\\"else\\\", \\\"for\\\", \\\"function\\\", \\\"if\\\",\\n\\t  \\\"import\\\", \\\"let\\\", \\\"loop\\\", \\\"package\\\", \\\"namespace\\\", \\\"return\\\".\\nExamples:\\n  - Expression accessing a property named \\\"namespace\\\": {\\\"Expression\\\": \\\"object.__namespace__ > 0\\\"}\\n  - Expression accessing a property named \\\"x-prop\\\": {\\\"Expression\\\": \\\"object.x__dash__prop > 0\\\"}\\n  - Expression accessing a property named \\\"redact__d\\\": {\\\"Expression\\\": \\\"object.redact__underscores__d > 0\\\"}\\n\\nEquality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\\n  - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\\n    non-intersecting elements in `Y` are appended, retaining their partial order.\\n  - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\\n    are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\\n    non-intersecting keys are appended, retaining their partial order.\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"message\": {\n          \"description\": \"Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \\\"failed rule: {Rule}\\\". e.g. \\\"must be a URL with the host matching spec.host\\\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \\\"failed Expression: {Expression}\\\".\",\n          \"type\": \"string\"\n        },\n        \"messageExpression\": {\n          \"description\": \"messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \\\"object.x must be less than max (\\\"+string(params.max)+\\\")\\\"\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \\\"Unauthorized\\\", \\\"Forbidden\\\", \\\"Invalid\\\", \\\"RequestEntityTooLarge\\\". If not set, StatusReasonInvalid is used in the response to the client.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"expression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1.Variable\": {\n      \"description\": \"Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \\\"foo\\\", the variable will be available as `variables.foo`\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"expression\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1.WebhookClientConfig\": {\n      \"description\": \"WebhookClientConfig contains the information to make a TLS connection with the webhook\",\n      \"properties\": {\n        \"caBundle\": {\n          \"description\": \"`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.\",\n          \"format\": \"byte\",\n          \"type\": \"string\"\n        },\n        \"service\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ServiceReference\",\n          \"description\": \"`service` is a reference to the service for this webhook. Either `service` or `url` must be specified.\\n\\nIf the webhook is running within the cluster, then you should use `service`.\"\n        },\n        \"url\": {\n          \"description\": \"`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\\n\\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\\n\\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\\n\\nThe scheme must be \\\"https\\\"; the URL must begin with \\\"https://\\\".\\n\\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\\n\\nAttempting to use a user or basic auth e.g. \\\"user:password@\\\" is not allowed. Fragments (\\\"#...\\\") and query parameters (\\\"?...\\\") are not allowed, either.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation\": {\n      \"description\": \"AuditAnnotation describes how to produce an audit annotation for an API request.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\\n\\nThe key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \\\"{ValidatingAdmissionPolicy name}/{key}\\\".\\n\\nIf an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\\n\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"valueExpression\": {\n          \"description\": \"valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb.\\n\\nIf multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list.\\n\\nRequired.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"valueExpression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ExpressionWarning\": {\n      \"description\": \"ExpressionWarning is a warning information that targets a specific expression.\",\n      \"properties\": {\n        \"fieldRef\": {\n          \"description\": \"The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \\\"spec.validations[0].expression\\\"\",\n          \"type\": \"string\"\n        },\n        \"warning\": {\n          \"description\": \"The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"fieldRef\",\n        \"warning\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.MatchCondition\": {\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables:\\n\\n'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\\n'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\\n  request resource.\\nDocumentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/\\n\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\\n\\nRequired.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"expression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.MatchResources\": {\n      \"description\": \"MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\",\n      \"properties\": {\n        \"excludeResourceRules\": {\n          \"description\": \"ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"matchPolicy\": {\n          \"description\": \"matchPolicy defines how the \\\"MatchResources\\\" list is used to match incoming requests. Allowed values are \\\"Exact\\\" or \\\"Equivalent\\\".\\n\\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.\\n\\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.\\n\\nDefaults to \\\"Equivalent\\\"\",\n          \"type\": \"string\"\n        },\n        \"namespaceSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy.\\n\\nFor example, to run the webhook on any objects whose namespace is not associated with \\\"runlevel\\\" of \\\"0\\\" or \\\"1\\\";  you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"runlevel\\\",\\n      \\\"operator\\\": \\\"NotIn\\\",\\n      \\\"values\\\": [\\n        \\\"0\\\",\\n        \\\"1\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nIf instead you want to only run the policy on any objects whose namespace is associated with the \\\"environment\\\" of \\\"prod\\\" or \\\"staging\\\"; you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"environment\\\",\\n      \\\"operator\\\": \\\"In\\\",\\n      \\\"values\\\": [\\n        \\\"prod\\\",\\n        \\\"staging\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\\n\\nDefault to the empty LabelSelector, which matches everything.\"\n        },\n        \"objectSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\"\n        },\n        \"resourceRules\": {\n          \"description\": \"ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations\": {\n      \"description\": \"NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.\",\n      \"properties\": {\n        \"apiGroups\": {\n          \"description\": \"APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"apiVersions\": {\n          \"description\": \"APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"operations\": {\n          \"description\": \"Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceNames\": {\n          \"description\": \"ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resources\": {\n          \"description\": \"Resources is a list of resources this rule applies to.\\n\\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\\n\\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\\n\\nDepending on the enclosing object, subresources might not be allowed. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"scope\": {\n          \"description\": \"scope specifies the scope of this rule. Valid values are \\\"Cluster\\\", \\\"Namespaced\\\", and \\\"*\\\" \\\"Cluster\\\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \\\"Namespaced\\\" means that only namespaced resources will match this rule. \\\"*\\\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \\\"*\\\".\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ParamKind\": {\n      \"description\": \"ParamKind is a tuple of Group Kind and Version.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion is the API group version the resources belong to. In format of \\\"group/version\\\". Required.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is the API kind the resources belong to. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ParamRef\": {\n      \"description\": \"ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"`name` is the name of the resource being referenced.\\n\\n`name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.\\n\\nA per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.\\n\\n- If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.\\n\\n- If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.\",\n          \"type\": \"string\"\n        },\n        \"parameterNotFoundAction\": {\n          \"description\": \"`parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.\\n\\nAllowed values are `Allow` or `Deny` Default to `Deny`\",\n          \"type\": \"string\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.\\n\\nIf multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.\\n\\nOne of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.TypeChecking\": {\n      \"description\": \"TypeChecking contains results of type checking the expressions in the ValidatingAdmissionPolicy\",\n      \"properties\": {\n        \"expressionWarnings\": {\n          \"description\": \"The type checking warnings for each expression.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ExpressionWarning\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\": {\n      \"description\": \"ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicySpec\",\n          \"description\": \"Specification of the desired behavior of the ValidatingAdmissionPolicy.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyStatus\",\n          \"description\": \"The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy behaves in the expected way. Populated by the system. Read-only.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\": {\n      \"description\": \"ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.\\n\\nFor a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding.\\n\\nThe CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingSpec\",\n          \"description\": \"Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList\": {\n      \"description\": \"ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of PolicyBinding.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBindingList\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingSpec\": {\n      \"description\": \"ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.\",\n      \"properties\": {\n        \"matchResources\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.MatchResources\",\n          \"description\": \"MatchResources declares what resources match this binding and will be validated by it. Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.\"\n        },\n        \"paramRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ParamRef\",\n          \"description\": \"paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.\"\n        },\n        \"policyName\": {\n          \"description\": \"PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.\",\n          \"type\": \"string\"\n        },\n        \"validationActions\": {\n          \"description\": \"validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions.\\n\\nFailures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.\\n\\nvalidationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action.\\n\\nThe supported actions values are:\\n\\n\\\"Deny\\\" specifies that a validation failure results in a denied request.\\n\\n\\\"Warn\\\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses.\\n\\n\\\"Audit\\\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\\\"validation.policy.admission.k8s.io/validation_failure\\\": \\\"[{\\\"message\\\": \\\"Invalid value\\\", {\\\"policy\\\": \\\"policy.example.com\\\", {\\\"binding\\\": \\\"policybinding.example.com\\\", {\\\"expressionIndex\\\": \\\"1\\\", {\\\"validationActions\\\": [\\\"Audit\\\"]}]\\\"`\\n\\nClients should expect to handle additional values by ignoring any values not recognized.\\n\\n\\\"Deny\\\" and \\\"Warn\\\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers.\\n\\nRequired.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList\": {\n      \"description\": \"ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of ValidatingAdmissionPolicy.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyList\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicySpec\": {\n      \"description\": \"ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.\",\n      \"properties\": {\n        \"auditAnnotations\": {\n          \"description\": \"auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"failurePolicy\": {\n          \"description\": \"failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\\n\\nA policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource.\\n\\nfailurePolicy does not define how validations that evaluate to false are handled.\\n\\nWhen failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced.\\n\\nAllowed values are Ignore or Fail. Defaults to Fail.\",\n          \"type\": \"string\"\n        },\n        \"matchConditions\": {\n          \"description\": \"MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\\n\\nIf a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\\n\\nThe exact matching logic is (in order):\\n  1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\\n  2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\\n  3. If any matchCondition evaluates to an error (but none are FALSE):\\n     - If failurePolicy=Fail, reject the request\\n     - If failurePolicy=Ignore, the policy is skipped\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.MatchCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"matchConstraints\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.MatchResources\",\n          \"description\": \"MatchConstraints specifies what resources this policy is designed to validate. The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required.\"\n        },\n        \"paramKind\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ParamKind\",\n          \"description\": \"ParamKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.\"\n        },\n        \"validations\": {\n          \"description\": \"Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.Validation\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"variables\": {\n          \"description\": \"Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy.\\n\\nThe expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.Variable\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyStatus\": {\n      \"description\": \"ValidatingAdmissionPolicyStatus represents the status of a ValidatingAdmissionPolicy.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"The conditions represent the latest available observations of a policy's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"The generation observed by the controller.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"typeChecking\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.TypeChecking\",\n          \"description\": \"The results of type checking for each expression. Presence of this field indicates the completion of the type checking.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.Validation\": {\n      \"description\": \"Validation specifies the CEL expression which is used to apply the validation.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:\\n\\n- 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\\n  For example, a variable named 'foo' can be accessed as 'variables.foo'.\\n- 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\\n- 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\\n  request resource.\\n\\nThe `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\\n\\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\\n\\t  \\\"true\\\", \\\"false\\\", \\\"null\\\", \\\"in\\\", \\\"as\\\", \\\"break\\\", \\\"const\\\", \\\"continue\\\", \\\"else\\\", \\\"for\\\", \\\"function\\\", \\\"if\\\",\\n\\t  \\\"import\\\", \\\"let\\\", \\\"loop\\\", \\\"package\\\", \\\"namespace\\\", \\\"return\\\".\\nExamples:\\n  - Expression accessing a property named \\\"namespace\\\": {\\\"Expression\\\": \\\"object.__namespace__ > 0\\\"}\\n  - Expression accessing a property named \\\"x-prop\\\": {\\\"Expression\\\": \\\"object.x__dash__prop > 0\\\"}\\n  - Expression accessing a property named \\\"redact__d\\\": {\\\"Expression\\\": \\\"object.redact__underscores__d > 0\\\"}\\n\\nEquality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\\n  - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\\n    non-intersecting elements in `Y` are appended, retaining their partial order.\\n  - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\\n    are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\\n    non-intersecting keys are appended, retaining their partial order.\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"message\": {\n          \"description\": \"Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \\\"failed rule: {Rule}\\\". e.g. \\\"must be a URL with the host matching spec.host\\\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \\\"failed Expression: {Expression}\\\".\",\n          \"type\": \"string\"\n        },\n        \"messageExpression\": {\n          \"description\": \"messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \\\"object.x must be less than max (\\\"+string(params.max)+\\\")\\\"\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \\\"Unauthorized\\\", \\\"Forbidden\\\", \\\"Invalid\\\", \\\"RequestEntityTooLarge\\\". If not set, StatusReasonInvalid is used in the response to the client.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"expression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1alpha1.Variable\": {\n      \"description\": \"Variable is the definition of a variable that is used for composition.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \\\"foo\\\", the variable will be available as `variables.foo`\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"expression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.AuditAnnotation\": {\n      \"description\": \"AuditAnnotation describes how to produce an audit annotation for an API request.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\\n\\nThe key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \\\"{ValidatingAdmissionPolicy name}/{key}\\\".\\n\\nIf an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\\n\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"valueExpression\": {\n          \"description\": \"valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb.\\n\\nIf multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list.\\n\\nRequired.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"valueExpression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ExpressionWarning\": {\n      \"description\": \"ExpressionWarning is a warning information that targets a specific expression.\",\n      \"properties\": {\n        \"fieldRef\": {\n          \"description\": \"The path to the field that refers the expression. For example, the reference to the expression of the first item of validations is \\\"spec.validations[0].expression\\\"\",\n          \"type\": \"string\"\n        },\n        \"warning\": {\n          \"description\": \"The content of type checking information in a human-readable form. Each line of the warning contains the type that the expression is checked against, followed by the type check error from the compiler.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"fieldRef\",\n        \"warning\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.MatchCondition\": {\n      \"description\": \"MatchCondition represents a condition which must be fulfilled for a request to be sent to a webhook.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables:\\n\\n'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\\n'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\\n  request resource.\\nDocumentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/\\n\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\\n\\nRequired.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"expression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.MatchResources\": {\n      \"description\": \"MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\",\n      \"properties\": {\n        \"excludeResourceRules\": {\n          \"description\": \"ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded)\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"matchPolicy\": {\n          \"description\": \"matchPolicy defines how the \\\"MatchResources\\\" list is used to match incoming requests. Allowed values are \\\"Exact\\\" or \\\"Equivalent\\\".\\n\\n- Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy.\\n\\n- Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and \\\"rules\\\" only included `apiGroups:[\\\"apps\\\"], apiVersions:[\\\"v1\\\"], resources: [\\\"deployments\\\"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy.\\n\\nDefaults to \\\"Equivalent\\\"\",\n          \"type\": \"string\"\n        },\n        \"namespaceSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy.\\n\\nFor example, to run the webhook on any objects whose namespace is not associated with \\\"runlevel\\\" of \\\"0\\\" or \\\"1\\\";  you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"runlevel\\\",\\n      \\\"operator\\\": \\\"NotIn\\\",\\n      \\\"values\\\": [\\n        \\\"0\\\",\\n        \\\"1\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nIf instead you want to only run the policy on any objects whose namespace is associated with the \\\"environment\\\" of \\\"prod\\\" or \\\"staging\\\"; you will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n      \\\"key\\\": \\\"environment\\\",\\n      \\\"operator\\\": \\\"In\\\",\\n      \\\"values\\\": [\\n        \\\"prod\\\",\\n        \\\"staging\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\\n\\nDefault to the empty LabelSelector, which matches everything.\"\n        },\n        \"objectSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything.\"\n        },\n        \"resourceRules\": {\n          \"description\": \"ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations\": {\n      \"description\": \"NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.\",\n      \"properties\": {\n        \"apiGroups\": {\n          \"description\": \"APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"apiVersions\": {\n          \"description\": \"APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"operations\": {\n          \"description\": \"Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceNames\": {\n          \"description\": \"ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resources\": {\n          \"description\": \"Resources is a list of resources this rule applies to.\\n\\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\\n\\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\\n\\nDepending on the enclosing object, subresources might not be allowed. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"scope\": {\n          \"description\": \"scope specifies the scope of this rule. Valid values are \\\"Cluster\\\", \\\"Namespaced\\\", and \\\"*\\\" \\\"Cluster\\\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \\\"Namespaced\\\" means that only namespaced resources will match this rule. \\\"*\\\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \\\"*\\\".\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ParamKind\": {\n      \"description\": \"ParamKind is a tuple of Group Kind and Version.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion is the API group version the resources belong to. In format of \\\"group/version\\\". Required.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is the API kind the resources belong to. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ParamRef\": {\n      \"description\": \"ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the name of the resource being referenced.\\n\\nOne of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\\n\\nA single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields.\\n\\nA per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty.\\n\\n- If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error.\\n\\n- If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error.\",\n          \"type\": \"string\"\n        },\n        \"parameterNotFoundAction\": {\n          \"description\": \"`parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy.\\n\\nAllowed values are `Allow` or `Deny`\\n\\nRequired\",\n          \"type\": \"string\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind.\\n\\nIf multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together.\\n\\nOne of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.TypeChecking\": {\n      \"description\": \"TypeChecking contains results of type checking the expressions in the ValidatingAdmissionPolicy\",\n      \"properties\": {\n        \"expressionWarnings\": {\n          \"description\": \"The type checking warnings for each expression.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ExpressionWarning\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\": {\n      \"description\": \"ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec\",\n          \"description\": \"Specification of the desired behavior of the ValidatingAdmissionPolicy.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyStatus\",\n          \"description\": \"The status of the ValidatingAdmissionPolicy, including warnings that are useful to determine if the policy behaves in the expected way. Populated by the system. Read-only.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\": {\n      \"description\": \"ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters.\\n\\nFor a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding.\\n\\nThe CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec\",\n          \"description\": \"Specification of the desired behavior of the ValidatingAdmissionPolicyBinding.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList\": {\n      \"description\": \"ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of PolicyBinding.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBindingList\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec\": {\n      \"description\": \"ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding.\",\n      \"properties\": {\n        \"matchResources\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.MatchResources\",\n          \"description\": \"MatchResources declares what resources match this binding and will be validated by it. Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required.\"\n        },\n        \"paramRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ParamRef\",\n          \"description\": \"paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.\"\n        },\n        \"policyName\": {\n          \"description\": \"PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.\",\n          \"type\": \"string\"\n        },\n        \"validationActions\": {\n          \"description\": \"validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions.\\n\\nFailures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy.\\n\\nvalidationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action.\\n\\nThe supported actions values are:\\n\\n\\\"Deny\\\" specifies that a validation failure results in a denied request.\\n\\n\\\"Warn\\\" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses.\\n\\n\\\"Audit\\\" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `\\\"validation.policy.admission.k8s.io/validation_failure\\\": \\\"[{\\\"message\\\": \\\"Invalid value\\\", {\\\"policy\\\": \\\"policy.example.com\\\", {\\\"binding\\\": \\\"policybinding.example.com\\\", {\\\"expressionIndex\\\": \\\"1\\\", {\\\"validationActions\\\": [\\\"Audit\\\"]}]\\\"`\\n\\nClients should expect to handle additional values by ignoring any values not recognized.\\n\\n\\\"Deny\\\" and \\\"Warn\\\" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers.\\n\\nRequired.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList\": {\n      \"description\": \"ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of ValidatingAdmissionPolicy.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyList\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec\": {\n      \"description\": \"ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.\",\n      \"properties\": {\n        \"auditAnnotations\": {\n          \"description\": \"auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.AuditAnnotation\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"failurePolicy\": {\n          \"description\": \"failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\\n\\nA policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource.\\n\\nfailurePolicy does not define how validations that evaluate to false are handled.\\n\\nWhen failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced.\\n\\nAllowed values are Ignore or Fail. Defaults to Fail.\",\n          \"type\": \"string\"\n        },\n        \"matchConditions\": {\n          \"description\": \"MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\\n\\nIf a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\\n\\nThe exact matching logic is (in order):\\n  1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\\n  2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\\n  3. If any matchCondition evaluates to an error (but none are FALSE):\\n     - If failurePolicy=Fail, reject the request\\n     - If failurePolicy=Ignore, the policy is skipped\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.MatchCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"matchConstraints\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.MatchResources\",\n          \"description\": \"MatchConstraints specifies what resources this policy is designed to validate. The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required.\"\n        },\n        \"paramKind\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ParamKind\",\n          \"description\": \"ParamKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null.\"\n        },\n        \"validations\": {\n          \"description\": \"Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.Validation\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"variables\": {\n          \"description\": \"Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy.\\n\\nThe expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.Variable\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyStatus\": {\n      \"description\": \"ValidatingAdmissionPolicyStatus represents the status of an admission validation policy.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"The conditions represent the latest available observations of a policy's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"The generation observed by the controller.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"typeChecking\": {\n          \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.TypeChecking\",\n          \"description\": \"The results of type checking for each expression. Presence of this field indicates the completion of the type checking.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.Validation\": {\n      \"description\": \"Validation specifies the CEL expression which is used to apply the validation.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:\\n\\n- 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\\n  For example, a variable named 'foo' can be accessed as 'variables.foo'.\\n- 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\\n- 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\\n  request resource.\\n\\nThe `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\\n\\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\\n\\t  \\\"true\\\", \\\"false\\\", \\\"null\\\", \\\"in\\\", \\\"as\\\", \\\"break\\\", \\\"const\\\", \\\"continue\\\", \\\"else\\\", \\\"for\\\", \\\"function\\\", \\\"if\\\",\\n\\t  \\\"import\\\", \\\"let\\\", \\\"loop\\\", \\\"package\\\", \\\"namespace\\\", \\\"return\\\".\\nExamples:\\n  - Expression accessing a property named \\\"namespace\\\": {\\\"Expression\\\": \\\"object.__namespace__ > 0\\\"}\\n  - Expression accessing a property named \\\"x-prop\\\": {\\\"Expression\\\": \\\"object.x__dash__prop > 0\\\"}\\n  - Expression accessing a property named \\\"redact__d\\\": {\\\"Expression\\\": \\\"object.redact__underscores__d > 0\\\"}\\n\\nEquality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\\n  - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\\n    non-intersecting elements in `Y` are appended, retaining their partial order.\\n  - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\\n    are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\\n    non-intersecting keys are appended, retaining their partial order.\\nRequired.\",\n          \"type\": \"string\"\n        },\n        \"message\": {\n          \"description\": \"Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is \\\"failed rule: {Rule}\\\". e.g. \\\"must be a URL with the host matching spec.host\\\" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is \\\"failed Expression: {Expression}\\\".\",\n          \"type\": \"string\"\n        },\n        \"messageExpression\": {\n          \"description\": \"messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: \\\"object.x must be less than max (\\\"+string(params.max)+\\\")\\\"\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: \\\"Unauthorized\\\", \\\"Forbidden\\\", \\\"Invalid\\\", \\\"RequestEntityTooLarge\\\". If not set, StatusReasonInvalid is used in the response to the client.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"expression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.admissionregistration.v1beta1.Variable\": {\n      \"description\": \"Variable is the definition of a variable that is used for composition. A variable is defined as a named expression.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is \\\"foo\\\", the variable will be available as `variables.foo`\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"expression\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.apiserverinternal.v1alpha1.ServerStorageVersion\": {\n      \"description\": \"An API server instance reports the version it can decode and the version it encodes objects to when persisting objects in the backend.\",\n      \"properties\": {\n        \"apiServerID\": {\n          \"description\": \"The ID of the reporting API server.\",\n          \"type\": \"string\"\n        },\n        \"decodableVersions\": {\n          \"description\": \"The API server can decode objects encoded in these versions. The encodingVersion must be included in the decodableVersions.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"encodingVersion\": {\n          \"description\": \"The API server encodes the object to this version when persisting it in the backend (e.g., etcd).\",\n          \"type\": \"string\"\n        },\n        \"servedVersions\": {\n          \"description\": \"The API server can serve these versions. DecodableVersions must include all ServedVersions.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\": {\n      \"description\": \"Storage version of a specific resource.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"The name is <group>.<resource>.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersionSpec\",\n          \"description\": \"Spec is an empty spec. It is here to comply with Kubernetes API style.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersionStatus\",\n          \"description\": \"API server instances report the version they can decode and the version they encode objects to when persisting objects in the backend.\"\n        }\n      },\n      \"required\": [\n        \"spec\",\n        \"status\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition\": {\n      \"description\": \"Describes the state of the storageVersion at a certain point.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"A human readable message indicating details about the transition.\",\n          \"type\": \"string\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"If set, this represents the .metadata.generation that the condition was set based upon.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"reason\": {\n          \"description\": \"The reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of the condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\",\n        \"reason\",\n        \"message\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList\": {\n      \"description\": \"A list of StorageVersions.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items holds a list of StorageVersion\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersionList\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apiserverinternal.v1alpha1.StorageVersionSpec\": {\n      \"description\": \"StorageVersionSpec is an empty spec.\",\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apiserverinternal.v1alpha1.StorageVersionStatus\": {\n      \"description\": \"API server instances report the versions they can decode and the version they encode objects to when persisting objects in the backend.\",\n      \"properties\": {\n        \"commonEncodingVersion\": {\n          \"description\": \"If all API server instances agree on the same encoding storage version, then this field is set to that version. Otherwise this field is left empty. API servers should finish updating its storageVersionStatus entry before serving write operations, so that this field will be in sync with the reality.\",\n          \"type\": \"string\"\n        },\n        \"conditions\": {\n          \"description\": \"The latest available observations of the storageVersion's state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersionCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        },\n        \"storageVersions\": {\n          \"description\": \"The reported versions per API server instance.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.ServerStorageVersion\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"apiServerID\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.ControllerRevision\": {\n      \"description\": \"ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"data\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension\",\n          \"description\": \"Data is the serialized representation of the state.\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"revision\": {\n          \"description\": \"Revision indicates the revision of the state represented by Data.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"revision\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.ControllerRevisionList\": {\n      \"description\": \"ControllerRevisionList is a resource containing a list of ControllerRevision objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of ControllerRevisions\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevisionList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.DaemonSet\": {\n      \"description\": \"DaemonSet represents the configuration of a daemon set.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSetSpec\",\n          \"description\": \"The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSetStatus\",\n          \"description\": \"The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.DaemonSetCondition\": {\n      \"description\": \"DaemonSetCondition describes the state of a DaemonSet at a certain point.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"A human readable message indicating details about the transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"The reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of DaemonSet condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.DaemonSetList\": {\n      \"description\": \"DaemonSetList is a collection of daemon sets.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"A list of daemon sets.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSetList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.DaemonSetSpec\": {\n      \"description\": \"DaemonSetSpec is the specification of a daemon set.\",\n      \"properties\": {\n        \"minReadySeconds\": {\n          \"description\": \"The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"revisionHistoryLimit\": {\n          \"description\": \"The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"A label query over pods that are managed by the daemon set. Must match in order to be controlled. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\"\n        },\n        \"template\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateSpec\",\n          \"description\": \"An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). The only allowed template.spec.restartPolicy value is \\\"Always\\\". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\"\n        },\n        \"updateStrategy\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSetUpdateStrategy\",\n          \"description\": \"An update strategy to replace existing DaemonSet pods with new pods.\"\n        }\n      },\n      \"required\": [\n        \"selector\",\n        \"template\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.DaemonSetStatus\": {\n      \"description\": \"DaemonSetStatus represents the current status of a daemon set.\",\n      \"properties\": {\n        \"collisionCount\": {\n          \"description\": \"Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"conditions\": {\n          \"description\": \"Represents the latest available observations of a DaemonSet's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSetCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"currentNumberScheduled\": {\n          \"description\": \"The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"desiredNumberScheduled\": {\n          \"description\": \"The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"numberAvailable\": {\n          \"description\": \"The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"numberMisscheduled\": {\n          \"description\": \"The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"numberReady\": {\n          \"description\": \"numberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running with a Ready Condition.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"numberUnavailable\": {\n          \"description\": \"The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"The most recent generation observed by the daemon set controller.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"updatedNumberScheduled\": {\n          \"description\": \"The total number of nodes that are running updated daemon pod\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"currentNumberScheduled\",\n        \"numberMisscheduled\",\n        \"desiredNumberScheduled\",\n        \"numberReady\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.DaemonSetUpdateStrategy\": {\n      \"description\": \"DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.\",\n      \"properties\": {\n        \"rollingUpdate\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.RollingUpdateDaemonSet\",\n          \"description\": \"Rolling update config params. Present only if type = \\\"RollingUpdate\\\".\"\n        },\n        \"type\": {\n          \"description\": \"Type of daemon set update. Can be \\\"RollingUpdate\\\" or \\\"OnDelete\\\". Default is RollingUpdate.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.Deployment\": {\n      \"description\": \"Deployment enables declarative updates for Pods and ReplicaSets.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DeploymentSpec\",\n          \"description\": \"Specification of the desired behavior of the Deployment.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DeploymentStatus\",\n          \"description\": \"Most recently observed status of the Deployment.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.DeploymentCondition\": {\n      \"description\": \"DeploymentCondition describes the state of a deployment at a certain point.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition transitioned from one status to another.\"\n        },\n        \"lastUpdateTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"The last time this condition was updated.\"\n        },\n        \"message\": {\n          \"description\": \"A human readable message indicating details about the transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"The reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of deployment condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.DeploymentList\": {\n      \"description\": \"DeploymentList is a list of Deployments.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of Deployments.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"DeploymentList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.DeploymentSpec\": {\n      \"description\": \"DeploymentSpec is the specification of the desired behavior of the Deployment.\",\n      \"properties\": {\n        \"minReadySeconds\": {\n          \"description\": \"Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"paused\": {\n          \"description\": \"Indicates that the deployment is paused.\",\n          \"type\": \"boolean\"\n        },\n        \"progressDeadlineSeconds\": {\n          \"description\": \"The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"replicas\": {\n          \"description\": \"Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"revisionHistoryLimit\": {\n          \"description\": \"The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels.\"\n        },\n        \"strategy\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DeploymentStrategy\",\n          \"description\": \"The deployment strategy to use to replace existing pods with new ones.\",\n          \"x-kubernetes-patch-strategy\": \"retainKeys\"\n        },\n        \"template\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateSpec\",\n          \"description\": \"Template describes the pods that will be created. The only allowed template.spec.restartPolicy value is \\\"Always\\\".\"\n        }\n      },\n      \"required\": [\n        \"selector\",\n        \"template\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.DeploymentStatus\": {\n      \"description\": \"DeploymentStatus is the most recently observed status of the Deployment.\",\n      \"properties\": {\n        \"availableReplicas\": {\n          \"description\": \"Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"collisionCount\": {\n          \"description\": \"Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"conditions\": {\n          \"description\": \"Represents the latest available observations of a deployment's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DeploymentCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"The generation observed by the deployment controller.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"readyReplicas\": {\n          \"description\": \"readyReplicas is the number of pods targeted by this Deployment with a Ready Condition.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"replicas\": {\n          \"description\": \"Total number of non-terminated pods targeted by this deployment (their labels match the selector).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"unavailableReplicas\": {\n          \"description\": \"Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"updatedReplicas\": {\n          \"description\": \"Total number of non-terminated pods targeted by this deployment that have the desired template spec.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.DeploymentStrategy\": {\n      \"description\": \"DeploymentStrategy describes how to replace existing pods with new ones.\",\n      \"properties\": {\n        \"rollingUpdate\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.RollingUpdateDeployment\",\n          \"description\": \"Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.\"\n        },\n        \"type\": {\n          \"description\": \"Type of deployment. Can be \\\"Recreate\\\" or \\\"RollingUpdate\\\". Default is RollingUpdate.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.ReplicaSet\": {\n      \"description\": \"ReplicaSet ensures that a specified number of pod replicas are running at any given time.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSetSpec\",\n          \"description\": \"Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSetStatus\",\n          \"description\": \"Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.ReplicaSetCondition\": {\n      \"description\": \"ReplicaSetCondition describes the state of a replica set at a certain point.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"The last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"A human readable message indicating details about the transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"The reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of replica set condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.ReplicaSetList\": {\n      \"description\": \"ReplicaSetList is a collection of ReplicaSets.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSetList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.ReplicaSetSpec\": {\n      \"description\": \"ReplicaSetSpec is the specification of a ReplicaSet.\",\n      \"properties\": {\n        \"minReadySeconds\": {\n          \"description\": \"Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"replicas\": {\n          \"description\": \"Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"Selector is a label query over pods that should match the replica count. Label keys and values that must match in order to be controlled by this replica set. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\"\n        },\n        \"template\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateSpec\",\n          \"description\": \"Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\"\n        }\n      },\n      \"required\": [\n        \"selector\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.ReplicaSetStatus\": {\n      \"description\": \"ReplicaSetStatus represents the current status of a ReplicaSet.\",\n      \"properties\": {\n        \"availableReplicas\": {\n          \"description\": \"The number of available replicas (ready for at least minReadySeconds) for this replica set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"conditions\": {\n          \"description\": \"Represents the latest available observations of a replica set's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSetCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"fullyLabeledReplicas\": {\n          \"description\": \"The number of pods that have labels matching the labels of the pod template of the replicaset.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"ObservedGeneration reflects the generation of the most recently observed ReplicaSet.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"readyReplicas\": {\n          \"description\": \"readyReplicas is the number of pods targeted by this ReplicaSet with a Ready Condition.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"replicas\": {\n          \"description\": \"Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"replicas\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.RollingUpdateDaemonSet\": {\n      \"description\": \"Spec to control the desired behavior of daemon set rolling update.\",\n      \"properties\": {\n        \"maxSurge\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption.\"\n        },\n        \"maxUnavailable\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.RollingUpdateDeployment\": {\n      \"description\": \"Spec to control the desired behavior of rolling update.\",\n      \"properties\": {\n        \"maxSurge\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods.\"\n        },\n        \"maxUnavailable\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy\": {\n      \"description\": \"RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.\",\n      \"properties\": {\n        \"maxUnavailable\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0. Defaults to 1. This field is alpha-level and is only honored by servers that enable the MaxUnavailableStatefulSet feature. The field applies to all pods in the range 0 to Replicas-1. That means if there is any unavailable pod in the range 0 to Replicas-1, it will be counted towards MaxUnavailable.\"\n        },\n        \"partition\": {\n          \"description\": \"Partition indicates the ordinal at which the StatefulSet should be partitioned for updates. During a rolling update, all pods from ordinal Replicas-1 to Partition are updated. All pods from ordinal Partition-1 to 0 remain untouched. This is helpful in being able to do a canary based deployment. The default value is 0.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.StatefulSet\": {\n      \"description\": \"StatefulSet represents a set of pods with consistent identities. Identities are defined as:\\n  - Network: A single stable DNS and hostname.\\n  - Storage: As many VolumeClaims as requested.\\n\\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSetSpec\",\n          \"description\": \"Spec defines the desired identities of pods in this set.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSetStatus\",\n          \"description\": \"Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.StatefulSetCondition\": {\n      \"description\": \"StatefulSetCondition describes the state of a statefulset at a certain point.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"A human readable message indicating details about the transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"The reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of statefulset condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.StatefulSetList\": {\n      \"description\": \"StatefulSetList is a collection of StatefulSets.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of stateful sets.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSetList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.apps.v1.StatefulSetOrdinals\": {\n      \"description\": \"StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.\",\n      \"properties\": {\n        \"start\": {\n          \"description\": \"start is the number representing the first replica's index. It may be used to number replicas from an alternate index (eg: 1-indexed) over the default 0-indexed names, or to orchestrate progressive movement of replicas from one StatefulSet to another. If set, replica indices will be in the range:\\n  [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas).\\nIf unset, defaults to 0. Replica indices will be in the range:\\n  [0, .spec.replicas).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy\": {\n      \"description\": \"StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.\",\n      \"properties\": {\n        \"whenDeleted\": {\n          \"description\": \"WhenDeleted specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is deleted. The default policy of `Retain` causes PVCs to not be affected by StatefulSet deletion. The `Delete` policy causes those PVCs to be deleted.\",\n          \"type\": \"string\"\n        },\n        \"whenScaled\": {\n          \"description\": \"WhenScaled specifies what happens to PVCs created from StatefulSet VolumeClaimTemplates when the StatefulSet is scaled down. The default policy of `Retain` causes PVCs to not be affected by a scaledown. The `Delete` policy causes the associated PVCs for any excess pods above the replica count to be deleted.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.StatefulSetSpec\": {\n      \"description\": \"A StatefulSetSpec is the specification of a StatefulSet.\",\n      \"properties\": {\n        \"minReadySeconds\": {\n          \"description\": \"Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"ordinals\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSetOrdinals\",\n          \"description\": \"ordinals controls the numbering of replica indices in a StatefulSet. The default ordinals behavior assigns a \\\"0\\\" index to the first replica and increments the index by one for each additional replica requested.\"\n        },\n        \"persistentVolumeClaimRetentionPolicy\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy\",\n          \"description\": \"persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is beta.\"\n        },\n        \"podManagementPolicy\": {\n          \"description\": \"podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.\",\n          \"type\": \"string\"\n        },\n        \"replicas\": {\n          \"description\": \"replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"revisionHistoryLimit\": {\n          \"description\": \"revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"selector is a label query over pods that should match the replica count. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\"\n        },\n        \"serviceName\": {\n          \"description\": \"serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \\\"pod-specific-string\\\" is managed by the StatefulSet controller.\",\n          \"type\": \"string\"\n        },\n        \"template\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateSpec\",\n          \"description\": \"template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet. Each pod will be named with the format <statefulsetname>-<podindex>. For example, a pod in a StatefulSet named \\\"web\\\" with index number \\\"3\\\" would be named \\\"web-3\\\". The only allowed template.spec.restartPolicy value is \\\"Always\\\".\"\n        },\n        \"updateStrategy\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSetUpdateStrategy\",\n          \"description\": \"updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.\"\n        },\n        \"volumeClaimTemplates\": {\n          \"description\": \"volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"selector\",\n        \"template\",\n        \"serviceName\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.StatefulSetStatus\": {\n      \"description\": \"StatefulSetStatus represents the current state of a StatefulSet.\",\n      \"properties\": {\n        \"availableReplicas\": {\n          \"description\": \"Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"collisionCount\": {\n          \"description\": \"collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"conditions\": {\n          \"description\": \"Represents the latest available observations of a statefulset's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSetCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"currentReplicas\": {\n          \"description\": \"currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"currentRevision\": {\n          \"description\": \"currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).\",\n          \"type\": \"string\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"readyReplicas\": {\n          \"description\": \"readyReplicas is the number of pods created for this StatefulSet with a Ready Condition.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"replicas\": {\n          \"description\": \"replicas is the number of Pods created by the StatefulSet controller.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"updateRevision\": {\n          \"description\": \"updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)\",\n          \"type\": \"string\"\n        },\n        \"updatedReplicas\": {\n          \"description\": \"updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"replicas\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.apps.v1.StatefulSetUpdateStrategy\": {\n      \"description\": \"StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.\",\n      \"properties\": {\n        \"rollingUpdate\": {\n          \"$ref\": \"#/definitions/io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy\",\n          \"description\": \"RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.\"\n        },\n        \"type\": {\n          \"description\": \"Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1.BoundObjectReference\": {\n      \"description\": \"BoundObjectReference is a reference to an object that a token is bound to.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"API version of the referent.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind of the referent. Valid kinds are 'Pod' and 'Secret'.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the referent.\",\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"description\": \"UID of the referent.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1.SelfSubjectReview\": {\n      \"description\": \"SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated.  If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.SelfSubjectReviewStatus\",\n          \"description\": \"Status is filled in by the server with the user attributes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"SelfSubjectReview\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authentication.v1.SelfSubjectReviewStatus\": {\n      \"description\": \"SelfSubjectReviewStatus is filled by the kube-apiserver and sent back to a user.\",\n      \"properties\": {\n        \"userInfo\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.UserInfo\",\n          \"description\": \"User attributes of the user making this request.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1.TokenRequest\": {\n      \"description\": \"TokenRequest requests a token for a given service account.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenRequestSpec\",\n          \"description\": \"Spec holds information about the request being evaluated\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenRequestStatus\",\n          \"description\": \"Status is filled in by the server and indicates whether the token can be authenticated.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"TokenRequest\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authentication.v1.TokenRequestSpec\": {\n      \"description\": \"TokenRequestSpec contains client provided parameters of a token request.\",\n      \"properties\": {\n        \"audiences\": {\n          \"description\": \"Audiences are the intendend audiences of the token. A recipient of a token must identify themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"boundObjectRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.BoundObjectReference\",\n          \"description\": \"BoundObjectRef is a reference to an object that the token will be bound to. The token will only be valid for as long as the bound object exists. NOTE: The API server's TokenReview endpoint will validate the BoundObjectRef, but other audiences may not. Keep ExpirationSeconds small if you want prompt revocation.\"\n        },\n        \"expirationSeconds\": {\n          \"description\": \"ExpirationSeconds is the requested duration of validity of the request. The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"audiences\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1.TokenRequestStatus\": {\n      \"description\": \"TokenRequestStatus is the result of a token request.\",\n      \"properties\": {\n        \"expirationTimestamp\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"ExpirationTimestamp is the time of expiration of the returned token.\"\n        },\n        \"token\": {\n          \"description\": \"Token is the opaque bearer token.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"token\",\n        \"expirationTimestamp\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1.TokenReview\": {\n      \"description\": \"TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenReviewSpec\",\n          \"description\": \"Spec holds information about the request being evaluated\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenReviewStatus\",\n          \"description\": \"Status is filled in by the server and indicates whether the request can be authenticated.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"TokenReview\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authentication.v1.TokenReviewSpec\": {\n      \"description\": \"TokenReviewSpec is a description of the token authentication request.\",\n      \"properties\": {\n        \"audiences\": {\n          \"description\": \"Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"token\": {\n          \"description\": \"Token is the opaque bearer token.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1.TokenReviewStatus\": {\n      \"description\": \"TokenReviewStatus is the result of the token authentication request.\",\n      \"properties\": {\n        \"audiences\": {\n          \"description\": \"Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is \\\"true\\\", the token is valid against the audience of the Kubernetes API server.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"authenticated\": {\n          \"description\": \"Authenticated indicates that the token was associated with a known user.\",\n          \"type\": \"boolean\"\n        },\n        \"error\": {\n          \"description\": \"Error indicates that the token couldn't be checked\",\n          \"type\": \"string\"\n        },\n        \"user\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.UserInfo\",\n          \"description\": \"User is the UserInfo associated with the provided token.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1.UserInfo\": {\n      \"description\": \"UserInfo holds the information about the user needed to implement the user.Info interface.\",\n      \"properties\": {\n        \"extra\": {\n          \"additionalProperties\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"description\": \"Any additional information provided by the authenticator.\",\n          \"type\": \"object\"\n        },\n        \"groups\": {\n          \"description\": \"The names of groups this user is a part of.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"uid\": {\n          \"description\": \"A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.\",\n          \"type\": \"string\"\n        },\n        \"username\": {\n          \"description\": \"The name that uniquely identifies this user among all active users.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1alpha1.SelfSubjectReview\": {\n      \"description\": \"SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated.  If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1alpha1.SelfSubjectReviewStatus\",\n          \"description\": \"Status is filled in by the server with the user attributes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"SelfSubjectReview\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authentication.v1alpha1.SelfSubjectReviewStatus\": {\n      \"description\": \"SelfSubjectReviewStatus is filled by the kube-apiserver and sent back to a user.\",\n      \"properties\": {\n        \"userInfo\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.UserInfo\",\n          \"description\": \"User attributes of the user making this request.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authentication.v1beta1.SelfSubjectReview\": {\n      \"description\": \"SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated.  If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1beta1.SelfSubjectReviewStatus\",\n          \"description\": \"Status is filled in by the server with the user attributes.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"SelfSubjectReview\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authentication.v1beta1.SelfSubjectReviewStatus\": {\n      \"description\": \"SelfSubjectReviewStatus is filled by the kube-apiserver and sent back to a user.\",\n      \"properties\": {\n        \"userInfo\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.UserInfo\",\n          \"description\": \"User attributes of the user making this request.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.FieldSelectorAttributes\": {\n      \"description\": \"FieldSelectorAttributes indicates a field limited access. Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid.\",\n      \"properties\": {\n        \"rawSelector\": {\n          \"description\": \"rawSelector is the serialization of a field selector that would be included in a query parameter. Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.\",\n          \"type\": \"string\"\n        },\n        \"requirements\": {\n          \"description\": \"requirements is the parsed interpretation of a field selector. All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldSelectorRequirement\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.LabelSelectorAttributes\": {\n      \"description\": \"LabelSelectorAttributes indicates a label limited access. Webhook authors are encouraged to * ensure rawSelector and requirements are not both set * consider the requirements field if set * not try to parse or consider the rawSelector field if set. This is to avoid another CVE-2022-2880 (i.e. getting different systems to agree on how exactly to parse a query is not something we want), see https://www.oxeye.io/resources/golang-parameter-smuggling-attack for more details. For the *SubjectAccessReview endpoints of the kube-apiserver: * If rawSelector is empty and requirements are empty, the request is not limited. * If rawSelector is present and requirements are empty, the rawSelector will be parsed and limited if the parsing succeeds. * If rawSelector is empty and requirements are present, the requirements should be honored * If rawSelector is present and requirements are present, the request is invalid.\",\n      \"properties\": {\n        \"rawSelector\": {\n          \"description\": \"rawSelector is the serialization of a field selector that would be included in a query parameter. Webhook implementations are encouraged to ignore rawSelector. The kube-apiserver's *SubjectAccessReview will parse the rawSelector as long as the requirements are not present.\",\n          \"type\": \"string\"\n        },\n        \"requirements\": {\n          \"description\": \"requirements is the parsed interpretation of a label selector. All requirements must be met for a resource instance to match the selector. Webhook implementations should handle requirements, but how to handle them is up to the webhook. Since requirements can only limit the request, it is safe to authorize as unlimited request if the requirements are not understood.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.LocalSubjectAccessReview\": {\n      \"description\": \"LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec\",\n          \"description\": \"Spec holds information about the request being evaluated.  spec.namespace must be equal to the namespace you made the request against.  If empty, it is defaulted.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus\",\n          \"description\": \"Status is filled in by the server and indicates whether the request is allowed or not\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"LocalSubjectAccessReview\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authorization.v1.NonResourceAttributes\": {\n      \"description\": \"NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface\",\n      \"properties\": {\n        \"path\": {\n          \"description\": \"Path is the URL path of the request\",\n          \"type\": \"string\"\n        },\n        \"verb\": {\n          \"description\": \"Verb is the standard HTTP verb\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.NonResourceRule\": {\n      \"description\": \"NonResourceRule holds information that describes a rule for the non-resource\",\n      \"properties\": {\n        \"nonResourceURLs\": {\n          \"description\": \"NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path.  \\\"*\\\" means all.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"verbs\": {\n          \"description\": \"Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options.  \\\"*\\\" means all.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"verbs\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.ResourceAttributes\": {\n      \"description\": \"ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface\",\n      \"properties\": {\n        \"fieldSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.FieldSelectorAttributes\",\n          \"description\": \"fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.\\n\\nThis field  is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default).\"\n        },\n        \"group\": {\n          \"description\": \"Group is the API Group of the Resource.  \\\"*\\\" means all.\",\n          \"type\": \"string\"\n        },\n        \"labelSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.LabelSelectorAttributes\",\n          \"description\": \"labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.\\n\\nThis field  is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default).\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of the resource being requested for a \\\"get\\\" or deleted for a \\\"delete\\\". \\\"\\\" (empty) means all.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"Namespace is the namespace of the action being requested.  Currently, there is no distinction between no namespace and all namespaces \\\"\\\" (empty) is defaulted for LocalSubjectAccessReviews \\\"\\\" (empty) is empty for cluster-scoped resources \\\"\\\" (empty) means \\\"all\\\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview\",\n          \"type\": \"string\"\n        },\n        \"resource\": {\n          \"description\": \"Resource is one of the existing resource types.  \\\"*\\\" means all.\",\n          \"type\": \"string\"\n        },\n        \"subresource\": {\n          \"description\": \"Subresource is one of the existing resource types.  \\\"\\\" means none.\",\n          \"type\": \"string\"\n        },\n        \"verb\": {\n          \"description\": \"Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy.  \\\"*\\\" means all.\",\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"description\": \"Version is the API Version of the Resource.  \\\"*\\\" means all.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.ResourceRule\": {\n      \"description\": \"ResourceRule is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\",\n      \"properties\": {\n        \"apiGroups\": {\n          \"description\": \"APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.  \\\"*\\\" means all.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceNames\": {\n          \"description\": \"ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.  \\\"*\\\" means all.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resources\": {\n          \"description\": \"Resources is a list of resources this rule applies to.  \\\"*\\\" means all in the specified apiGroups.\\n \\\"*/foo\\\" represents the subresource 'foo' for all resources in the specified apiGroups.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"verbs\": {\n          \"description\": \"Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy.  \\\"*\\\" means all.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"verbs\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.SelfSubjectAccessReview\": {\n      \"description\": \"SelfSubjectAccessReview checks whether or the current user can perform an action.  Not filling in a spec.namespace means \\\"in all namespaces\\\".  Self is a special case, because users should always be able to check whether they can perform an action\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec\",\n          \"description\": \"Spec holds information about the request being evaluated.  user and groups must be empty\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus\",\n          \"description\": \"Status is filled in by the server and indicates whether the request is allowed or not\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"SelfSubjectAccessReview\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec\": {\n      \"description\": \"SelfSubjectAccessReviewSpec is a description of the access request.  Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set\",\n      \"properties\": {\n        \"nonResourceAttributes\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes\",\n          \"description\": \"NonResourceAttributes describes information for a non-resource access request\"\n        },\n        \"resourceAttributes\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.ResourceAttributes\",\n          \"description\": \"ResourceAuthorizationAttributes describes information for a resource access request\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.SelfSubjectRulesReview\": {\n      \"description\": \"SelfSubjectRulesReview enumerates the set of actions the current user can perform within a namespace. The returned list of actions may be incomplete depending on the server's authorization mode, and any errors experienced during the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions, or to quickly let an end user reason about their permissions. It should NOT Be used by external systems to drive authorization decisions as this raises confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview, and LocalAccessReview are the correct way to defer authorization decisions to the API server.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec\",\n          \"description\": \"Spec holds information about the request being evaluated.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectRulesReviewStatus\",\n          \"description\": \"Status is filled in by the server and indicates the set of actions a user can perform.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"SelfSubjectRulesReview\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec\": {\n      \"description\": \"SelfSubjectRulesReviewSpec defines the specification for SelfSubjectRulesReview.\",\n      \"properties\": {\n        \"namespace\": {\n          \"description\": \"Namespace to evaluate rules for. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.SubjectAccessReview\": {\n      \"description\": \"SubjectAccessReview checks whether or not a user or group can perform an action.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec\",\n          \"description\": \"Spec holds information about the request being evaluated\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus\",\n          \"description\": \"Status is filled in by the server and indicates whether the request is allowed or not\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"SubjectAccessReview\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.authorization.v1.SubjectAccessReviewSpec\": {\n      \"description\": \"SubjectAccessReviewSpec is a description of the access request.  Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set\",\n      \"properties\": {\n        \"extra\": {\n          \"additionalProperties\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"description\": \"Extra corresponds to the user.Info.GetExtra() method from the authenticator.  Since that is input to the authorizer it needs a reflection here.\",\n          \"type\": \"object\"\n        },\n        \"groups\": {\n          \"description\": \"Groups is the groups you're testing for.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"nonResourceAttributes\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes\",\n          \"description\": \"NonResourceAttributes describes information for a non-resource access request\"\n        },\n        \"resourceAttributes\": {\n          \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.ResourceAttributes\",\n          \"description\": \"ResourceAuthorizationAttributes describes information for a resource access request\"\n        },\n        \"uid\": {\n          \"description\": \"UID information about the requesting user.\",\n          \"type\": \"string\"\n        },\n        \"user\": {\n          \"description\": \"User is the user you're testing for. If you specify \\\"User\\\" but not \\\"Groups\\\", then is it interpreted as \\\"What if User were not a member of any groups\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.SubjectAccessReviewStatus\": {\n      \"description\": \"SubjectAccessReviewStatus\",\n      \"properties\": {\n        \"allowed\": {\n          \"description\": \"Allowed is required. True if the action would be allowed, false otherwise.\",\n          \"type\": \"boolean\"\n        },\n        \"denied\": {\n          \"description\": \"Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true.\",\n          \"type\": \"boolean\"\n        },\n        \"evaluationError\": {\n          \"description\": \"EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"Reason is optional.  It indicates why a request was allowed or denied.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"allowed\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.authorization.v1.SubjectRulesReviewStatus\": {\n      \"description\": \"SubjectRulesReviewStatus contains the result of a rules check. This check can be incomplete depending on the set of authorizers the server is configured with and any errors experienced during evaluation. Because authorization rules are additive, if a rule appears in a list it's safe to assume the subject has that permission, even if that list is incomplete.\",\n      \"properties\": {\n        \"evaluationError\": {\n          \"description\": \"EvaluationError can appear in combination with Rules. It indicates an error occurred during rule evaluation, such as an authorizer that doesn't support rule evaluation, and that ResourceRules and/or NonResourceRules may be incomplete.\",\n          \"type\": \"string\"\n        },\n        \"incomplete\": {\n          \"description\": \"Incomplete is true when the rules returned by this call are incomplete. This is most commonly encountered when an authorizer, such as an external authorizer, doesn't support rules evaluation.\",\n          \"type\": \"boolean\"\n        },\n        \"nonResourceRules\": {\n          \"description\": \"NonResourceRules is the list of actions the subject is allowed to perform on non-resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.NonResourceRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceRules\": {\n          \"description\": \"ResourceRules is the list of actions the subject is allowed to perform on resources. The list ordering isn't significant, may contain duplicates, and possibly be incomplete.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.ResourceRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"resourceRules\",\n        \"nonResourceRules\",\n        \"incomplete\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v1.CrossVersionObjectReference\": {\n      \"description\": \"CrossVersionObjectReference contains enough information to let you identify the referred resource.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"apiVersion is the API version of the referent\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"kind\",\n        \"name\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\": {\n      \"description\": \"configuration of a horizontal pod autoscaler.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec\",\n          \"description\": \"spec defines the behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus\",\n          \"description\": \"status is the current information about the autoscaler.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList\": {\n      \"description\": \"list of horizontal pod autoscaler objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of horizontal pod autoscaler objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscalerList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec\": {\n      \"description\": \"specification of a horizontal pod autoscaler.\",\n      \"properties\": {\n        \"maxReplicas\": {\n          \"description\": \"maxReplicas is the upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"minReplicas\": {\n          \"description\": \"minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down.  It defaults to 1 pod.  minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured.  Scaling is active as long as at least one metric value is available.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"scaleTargetRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.CrossVersionObjectReference\",\n          \"description\": \"reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption and will set the desired number of pods by using its Scale subresource.\"\n        },\n        \"targetCPUUtilizationPercentage\": {\n          \"description\": \"targetCPUUtilizationPercentage is the target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"scaleTargetRef\",\n        \"maxReplicas\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus\": {\n      \"description\": \"current status of a horizontal pod autoscaler\",\n      \"properties\": {\n        \"currentCPUUtilizationPercentage\": {\n          \"description\": \"currentCPUUtilizationPercentage is the current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"currentReplicas\": {\n          \"description\": \"currentReplicas is the current number of replicas of pods managed by this autoscaler.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"desiredReplicas\": {\n          \"description\": \"desiredReplicas is the  desired number of replicas of pods managed by this autoscaler.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"lastScaleTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed.\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"observedGeneration is the most recent generation observed by this autoscaler.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"currentReplicas\",\n        \"desiredReplicas\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v1.Scale\": {\n      \"description\": \"Scale represents a scaling request for a resource.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.ScaleSpec\",\n          \"description\": \"spec defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.ScaleStatus\",\n          \"description\": \"status is the current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.autoscaling.v1.ScaleSpec\": {\n      \"description\": \"ScaleSpec describes the attributes of a scale subresource.\",\n      \"properties\": {\n        \"replicas\": {\n          \"description\": \"replicas is the desired number of instances for the scaled object.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v1.ScaleStatus\": {\n      \"description\": \"ScaleStatus represents the current status of a scale subresource.\",\n      \"properties\": {\n        \"replicas\": {\n          \"description\": \"replicas is the actual number of observed instances of the scaled object.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"selector\": {\n          \"description\": \"selector is the label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"replicas\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.ContainerResourceMetricSource\": {\n      \"description\": \"ContainerResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory).  The values will be averaged together before being compared to the target.  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \\\"pods\\\" source.  Only one \\\"target\\\" type should be set.\",\n      \"properties\": {\n        \"container\": {\n          \"description\": \"container is the name of the container in the pods of the scaling target\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name is the name of the resource in question.\",\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricTarget\",\n          \"description\": \"target specifies the target value for the given metric\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"target\",\n        \"container\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.ContainerResourceMetricStatus\": {\n      \"description\": \"ContainerResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing a single container in each pod in the current scale target (e.g. CPU or memory).  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \\\"pods\\\" source.\",\n      \"properties\": {\n        \"container\": {\n          \"description\": \"container is the name of the container in the pods of the scaling target\",\n          \"type\": \"string\"\n        },\n        \"current\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus\",\n          \"description\": \"current contains the current value for the given metric\"\n        },\n        \"name\": {\n          \"description\": \"name is the name of the resource in question.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"current\",\n        \"container\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.CrossVersionObjectReference\": {\n      \"description\": \"CrossVersionObjectReference contains enough information to let you identify the referred resource.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"apiVersion is the API version of the referent\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"kind\",\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.ExternalMetricSource\": {\n      \"description\": \"ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).\",\n      \"properties\": {\n        \"metric\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier\",\n          \"description\": \"metric identifies the target metric by name and selector\"\n        },\n        \"target\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricTarget\",\n          \"description\": \"target specifies the target value for the given metric\"\n        }\n      },\n      \"required\": [\n        \"metric\",\n        \"target\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.ExternalMetricStatus\": {\n      \"description\": \"ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.\",\n      \"properties\": {\n        \"current\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus\",\n          \"description\": \"current contains the current value for the given metric\"\n        },\n        \"metric\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier\",\n          \"description\": \"metric identifies the target metric by name and selector\"\n        }\n      },\n      \"required\": [\n        \"metric\",\n        \"current\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.HPAScalingPolicy\": {\n      \"description\": \"HPAScalingPolicy is a single policy which must hold true for a specified past interval.\",\n      \"properties\": {\n        \"periodSeconds\": {\n          \"description\": \"periodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"description\": \"type is used to specify the scaling policy.\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"description\": \"value contains the amount of change which is permitted by the policy. It must be greater than zero\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"value\",\n        \"periodSeconds\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.HPAScalingRules\": {\n      \"description\": \"HPAScalingRules configures the scaling behavior for one direction. These Rules are applied after calculating DesiredReplicas from metrics for the HPA. They can limit the scaling velocity by specifying scaling policies. They can prevent flapping by specifying the stabilization window, so that the number of replicas is not set instantly, instead, the safest value from the stabilization window is chosen.\",\n      \"properties\": {\n        \"policies\": {\n          \"description\": \"policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HPAScalingPolicy\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"selectPolicy\": {\n          \"description\": \"selectPolicy is used to specify which policy should be used. If not set, the default value Max is used.\",\n          \"type\": \"string\"\n        },\n        \"stabilizationWindowSeconds\": {\n          \"description\": \"stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\": {\n      \"description\": \"HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"metadata is the standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerSpec\",\n          \"description\": \"spec is the specification for the behaviour of the autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerStatus\",\n          \"description\": \"status is the current information about the autoscaler.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      ]\n    },\n    \"io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerBehavior\": {\n      \"description\": \"HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively).\",\n      \"properties\": {\n        \"scaleDown\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HPAScalingRules\",\n          \"description\": \"scaleDown is scaling policy for scaling Down. If not set, the default value is to allow to scale down to minReplicas pods, with a 300 second stabilization window (i.e., the highest recommendation for the last 300sec is used).\"\n        },\n        \"scaleUp\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HPAScalingRules\",\n          \"description\": \"scaleUp is scaling policy for scaling Up. If not set, the default value is the higher of:\\n  * increase no more than 4 pods per 60 seconds\\n  * double the number of pods per 60 seconds\\nNo stabilization is used.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerCondition\": {\n      \"description\": \"HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastTransitionTime is the last time the condition transitioned from one status to another\"\n        },\n        \"message\": {\n          \"description\": \"message is a human-readable explanation containing details about the transition\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"reason is the reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"status is the status of the condition (True, False, Unknown)\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"type describes the current condition\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList\": {\n      \"description\": \"HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of horizontal pod autoscaler objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"metadata is the standard list metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscalerList\",\n          \"version\": \"v2\"\n        }\n      ]\n    },\n    \"io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerSpec\": {\n      \"description\": \"HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.\",\n      \"properties\": {\n        \"behavior\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerBehavior\",\n          \"description\": \"behavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). If not set, the default HPAScalingRules for scale up and scale down are used.\"\n        },\n        \"maxReplicas\": {\n          \"description\": \"maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"metrics\": {\n          \"description\": \"metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used).  The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods.  Ergo, metrics used must decrease as the pod count is increased, and vice-versa.  See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricSpec\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"minReplicas\": {\n          \"description\": \"minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down.  It defaults to 1 pod.  minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured.  Scaling is active as long as at least one metric value is available.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"scaleTargetRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.CrossVersionObjectReference\",\n          \"description\": \"scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics should be collected, as well as to actually change the replica count.\"\n        }\n      },\n      \"required\": [\n        \"scaleTargetRef\",\n        \"maxReplicas\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerStatus\": {\n      \"description\": \"HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"currentMetrics\": {\n          \"description\": \"currentMetrics is the last read state of the metrics used by this autoscaler.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"currentReplicas\": {\n          \"description\": \"currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"desiredReplicas\": {\n          \"description\": \"desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"lastScaleTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, used by the autoscaler to control how often the number of pods is changed.\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"observedGeneration is the most recent generation observed by this autoscaler.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"desiredReplicas\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.MetricIdentifier\": {\n      \"description\": \"MetricIdentifier defines the name and optionally selector for a metric\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the name of the given metric\",\n          \"type\": \"string\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.MetricSpec\": {\n      \"description\": \"MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).\",\n      \"properties\": {\n        \"containerResource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.ContainerResourceMetricSource\",\n          \"description\": \"containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \\\"pods\\\" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.\"\n        },\n        \"external\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.ExternalMetricSource\",\n          \"description\": \"external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).\"\n        },\n        \"object\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.ObjectMetricSource\",\n          \"description\": \"object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).\"\n        },\n        \"pods\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.PodsMetricSource\",\n          \"description\": \"pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.\"\n        },\n        \"resource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.ResourceMetricSource\",\n          \"description\": \"resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \\\"pods\\\" source.\"\n        },\n        \"type\": {\n          \"description\": \"type is the type of metric source.  It should be one of \\\"ContainerResource\\\", \\\"External\\\", \\\"Object\\\", \\\"Pods\\\" or \\\"Resource\\\", each mapping to a matching field in the object. Note: \\\"ContainerResource\\\" type is available on when the feature-gate HPAContainerMetrics is enabled\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.MetricStatus\": {\n      \"description\": \"MetricStatus describes the last-read state of a single metric.\",\n      \"properties\": {\n        \"containerResource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.ContainerResourceMetricStatus\",\n          \"description\": \"container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \\\"pods\\\" source.\"\n        },\n        \"external\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.ExternalMetricStatus\",\n          \"description\": \"external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).\"\n        },\n        \"object\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.ObjectMetricStatus\",\n          \"description\": \"object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).\"\n        },\n        \"pods\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.PodsMetricStatus\",\n          \"description\": \"pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second).  The values will be averaged together before being compared to the target value.\"\n        },\n        \"resource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.ResourceMetricStatus\",\n          \"description\": \"resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \\\"pods\\\" source.\"\n        },\n        \"type\": {\n          \"description\": \"type is the type of metric source.  It will be one of \\\"ContainerResource\\\", \\\"External\\\", \\\"Object\\\", \\\"Pods\\\" or \\\"Resource\\\", each corresponds to a matching field in the object. Note: \\\"ContainerResource\\\" type is available on when the feature-gate HPAContainerMetrics is enabled\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.MetricTarget\": {\n      \"description\": \"MetricTarget defines the target value, average value, or average utilization of a specific metric\",\n      \"properties\": {\n        \"averageUtilization\": {\n          \"description\": \"averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"averageValue\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\",\n          \"description\": \"averageValue is the target value of the average of the metric across all relevant pods (as a quantity)\"\n        },\n        \"type\": {\n          \"description\": \"type represents whether the metric type is Utilization, Value, or AverageValue\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\",\n          \"description\": \"value is the target value of the metric (as a quantity).\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.MetricValueStatus\": {\n      \"description\": \"MetricValueStatus holds the current value for a metric\",\n      \"properties\": {\n        \"averageUtilization\": {\n          \"description\": \"currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"averageValue\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\",\n          \"description\": \"averageValue is the current value of the average of the metric across all relevant pods (as a quantity)\"\n        },\n        \"value\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\",\n          \"description\": \"value is the current value of the metric (as a quantity).\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.ObjectMetricSource\": {\n      \"description\": \"ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).\",\n      \"properties\": {\n        \"describedObject\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.CrossVersionObjectReference\",\n          \"description\": \"describedObject specifies the descriptions of a object,such as kind,name apiVersion\"\n        },\n        \"metric\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier\",\n          \"description\": \"metric identifies the target metric by name and selector\"\n        },\n        \"target\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricTarget\",\n          \"description\": \"target specifies the target value for the given metric\"\n        }\n      },\n      \"required\": [\n        \"describedObject\",\n        \"target\",\n        \"metric\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.ObjectMetricStatus\": {\n      \"description\": \"ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).\",\n      \"properties\": {\n        \"current\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus\",\n          \"description\": \"current contains the current value for the given metric\"\n        },\n        \"describedObject\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.CrossVersionObjectReference\",\n          \"description\": \"DescribedObject specifies the descriptions of a object,such as kind,name apiVersion\"\n        },\n        \"metric\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier\",\n          \"description\": \"metric identifies the target metric by name and selector\"\n        }\n      },\n      \"required\": [\n        \"metric\",\n        \"current\",\n        \"describedObject\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.PodsMetricSource\": {\n      \"description\": \"PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.\",\n      \"properties\": {\n        \"metric\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier\",\n          \"description\": \"metric identifies the target metric by name and selector\"\n        },\n        \"target\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricTarget\",\n          \"description\": \"target specifies the target value for the given metric\"\n        }\n      },\n      \"required\": [\n        \"metric\",\n        \"target\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.PodsMetricStatus\": {\n      \"description\": \"PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).\",\n      \"properties\": {\n        \"current\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus\",\n          \"description\": \"current contains the current value for the given metric\"\n        },\n        \"metric\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier\",\n          \"description\": \"metric identifies the target metric by name and selector\"\n        }\n      },\n      \"required\": [\n        \"metric\",\n        \"current\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.ResourceMetricSource\": {\n      \"description\": \"ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory).  The values will be averaged together before being compared to the target.  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \\\"pods\\\" source.  Only one \\\"target\\\" type should be set.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the name of the resource in question.\",\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricTarget\",\n          \"description\": \"target specifies the target value for the given metric\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"target\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.autoscaling.v2.ResourceMetricStatus\": {\n      \"description\": \"ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory).  Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \\\"pods\\\" source.\",\n      \"properties\": {\n        \"current\": {\n          \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus\",\n          \"description\": \"current contains the current value for the given metric\"\n        },\n        \"name\": {\n          \"description\": \"name is the name of the resource in question.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"current\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.CronJob\": {\n      \"description\": \"CronJob represents the configuration of a single cron job.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJobSpec\",\n          \"description\": \"Specification of the desired behavior of a cron job, including the schedule. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJobStatus\",\n          \"description\": \"Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.batch.v1.CronJobList\": {\n      \"description\": \"CronJobList is a collection of cron jobs.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of CronJobs.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"batch\",\n          \"kind\": \"CronJobList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.batch.v1.CronJobSpec\": {\n      \"description\": \"CronJobSpec describes how the job execution will look like and when it will actually run.\",\n      \"properties\": {\n        \"concurrencyPolicy\": {\n          \"description\": \"Specifies how to treat concurrent executions of a Job. Valid values are:\\n\\n- \\\"Allow\\\" (default): allows CronJobs to run concurrently; - \\\"Forbid\\\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \\\"Replace\\\": cancels currently running job and replaces it with a new one\",\n          \"type\": \"string\"\n        },\n        \"failedJobsHistoryLimit\": {\n          \"description\": \"The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"jobTemplate\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.JobTemplateSpec\",\n          \"description\": \"Specifies the job that will be created when executing a CronJob.\"\n        },\n        \"schedule\": {\n          \"description\": \"The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.\",\n          \"type\": \"string\"\n        },\n        \"startingDeadlineSeconds\": {\n          \"description\": \"Optional deadline in seconds for starting the job if it misses scheduled time for any reason.  Missed jobs executions will be counted as failed ones.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"successfulJobsHistoryLimit\": {\n          \"description\": \"The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"suspend\": {\n          \"description\": \"This flag tells the controller to suspend subsequent executions, it does not apply to already started executions.  Defaults to false.\",\n          \"type\": \"boolean\"\n        },\n        \"timeZone\": {\n          \"description\": \"The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"schedule\",\n        \"jobTemplate\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.CronJobStatus\": {\n      \"description\": \"CronJobStatus represents the current state of a cron job.\",\n      \"properties\": {\n        \"active\": {\n          \"description\": \"A list of pointers to currently running jobs.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"lastScheduleTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Information when was the last time the job was successfully scheduled.\"\n        },\n        \"lastSuccessfulTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Information when was the last time the job successfully completed.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.Job\": {\n      \"description\": \"Job represents the configuration of a single job.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.JobSpec\",\n          \"description\": \"Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.JobStatus\",\n          \"description\": \"Current status of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.batch.v1.JobCondition\": {\n      \"description\": \"JobCondition describes current state of a job.\",\n      \"properties\": {\n        \"lastProbeTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition was checked.\"\n        },\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition transit from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"Human readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"(brief) reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of job condition, Complete or Failed.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.JobList\": {\n      \"description\": \"JobList is a collection of jobs.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of Jobs.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"batch\",\n          \"kind\": \"JobList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.batch.v1.JobSpec\": {\n      \"description\": \"JobSpec describes how the job execution will look like.\",\n      \"properties\": {\n        \"activeDeadlineSeconds\": {\n          \"description\": \"Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"backoffLimit\": {\n          \"description\": \"Specifies the number of retries before marking this job failed. Defaults to 6\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"backoffLimitPerIndex\": {\n          \"description\": \"Specifies the limit for the number of retries within an index before marking this index as failed. When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"completionMode\": {\n          \"description\": \"completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\\n\\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\\n\\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5. In addition, The Pod name takes the form `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form `$(job-name)-$(index)`.\\n\\nMore completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, which is possible during upgrades due to version skew, the controller skips updates for the Job.\",\n          \"type\": \"string\"\n        },\n        \"completions\": {\n          \"description\": \"Specifies the desired number of successfully finished pods the job should be run with.  Setting to null means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value.  Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"managedBy\": {\n          \"description\": \"ManagedBy field indicates the controller that manages a Job. The k8s Job controller reconciles jobs which don't have this field at all or the field value is the reserved string `kubernetes.io/job-controller`, but skips reconciling Jobs with a custom value for this field. The value must be a valid domain-prefixed path (e.g. acme.io/foo) - all characters before the first \\\"/\\\" must be a valid subdomain as defined by RFC 1123. All characters trailing the first \\\"/\\\" must be valid HTTP Path characters as defined by RFC 3986. The value cannot exceed 63 characters. This field is immutable.\\n\\nThis field is alpha-level. The job controller accepts setting the field when the feature gate JobManagedBy is enabled (disabled by default).\",\n          \"type\": \"string\"\n        },\n        \"manualSelector\": {\n          \"description\": \"manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template.  When true, the user is responsible for picking unique labels and specifying the selector.  Failure to pick a unique label may cause this and other jobs to not function correctly.  However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector\",\n          \"type\": \"boolean\"\n        },\n        \"maxFailedIndexes\": {\n          \"description\": \"Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"parallelism\": {\n          \"description\": \"Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"podFailurePolicy\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.PodFailurePolicy\",\n          \"description\": \"Specifies the policy of handling failed pods. In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure.\"\n        },\n        \"podReplacementPolicy\": {\n          \"description\": \"podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods\\n  when they are terminating (has a metadata.deletionTimestamp) or failed.\\n- Failed means to wait until a previously created Pod is fully terminated (has phase\\n  Failed or Succeeded) before creating a replacement Pod.\\n\\nWhen using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default.\",\n          \"type\": \"string\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"A label query over pods that should match the pod count. Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\"\n        },\n        \"successPolicy\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.SuccessPolicy\",\n          \"description\": \"successPolicy specifies the policy when the Job can be declared as succeeded. If empty, the default behavior applies - the Job is declared as succeeded only when the number of succeeded pods equals to the completions. When the field is specified, it must be immutable and works only for the Indexed Jobs. Once the Job meets the SuccessPolicy, the lingering pods are terminated.\\n\\nThis field is beta-level. To use this field, you must enable the `JobSuccessPolicy` feature gate (enabled by default).\"\n        },\n        \"suspend\": {\n          \"description\": \"suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. Defaults to false.\",\n          \"type\": \"boolean\"\n        },\n        \"template\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateSpec\",\n          \"description\": \"Describes the pod that will be created when executing a job. The only allowed template.spec.restartPolicy values are \\\"Never\\\" or \\\"OnFailure\\\". More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\"\n        },\n        \"ttlSecondsAfterFinished\": {\n          \"description\": \"ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"template\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.JobStatus\": {\n      \"description\": \"JobStatus represents the current state of a Job.\",\n      \"properties\": {\n        \"active\": {\n          \"description\": \"The number of pending and running pods which are not terminating (without a deletionTimestamp). The value is zero for finished jobs.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"completedIndexes\": {\n          \"description\": \"completedIndexes holds the completed indexes when .spec.completionMode = \\\"Indexed\\\" in a text format. The indexes are represented as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as \\\"1,3-5,7\\\".\",\n          \"type\": \"string\"\n        },\n        \"completionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. The completion time is set when the job finishes successfully, and only then. The value cannot be updated or removed. The value indicates the same or later point in time as the startTime field.\"\n        },\n        \"conditions\": {\n          \"description\": \"The latest available observations of an object's current state. When a Job fails, one of the conditions will have type \\\"Failed\\\" and status true. When a Job is suspended, one of the conditions will have type \\\"Suspended\\\" and status true; when the Job is resumed, the status of this condition will become false. When a Job is completed, one of the conditions will have type \\\"Complete\\\" and status true.\\n\\nA job is considered finished when it is in a terminal condition, either \\\"Complete\\\" or \\\"Failed\\\". A Job cannot have both the \\\"Complete\\\" and \\\"Failed\\\" conditions. Additionally, it cannot be in the \\\"Complete\\\" and \\\"FailureTarget\\\" conditions. The \\\"Complete\\\", \\\"Failed\\\" and \\\"FailureTarget\\\" conditions cannot be disabled.\\n\\nMore info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.batch.v1.JobCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"failed\": {\n          \"description\": \"The number of pods which reached phase Failed. The value increases monotonically.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"failedIndexes\": {\n          \"description\": \"FailedIndexes holds the failed indexes when spec.backoffLimitPerIndex is set. The indexes are represented in the text format analogous as for the `completedIndexes` field, ie. they are kept as decimal integers separated by commas. The numbers are listed in increasing order. Three or more consecutive numbers are compressed and represented by the first and last element of the series, separated by a hyphen. For example, if the failed indexes are 1, 3, 4, 5 and 7, they are represented as \\\"1,3-5,7\\\". The set of failed indexes cannot overlap with the set of completed indexes.\\n\\nThis field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\",\n          \"type\": \"string\"\n        },\n        \"ready\": {\n          \"description\": \"The number of active pods which have a Ready condition and are not terminating (without a deletionTimestamp).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"startTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Represents time when the job controller started processing a job. When a Job is created in the suspended state, this field is not set until the first time it is resumed. This field is reset every time a Job is resumed from suspension. It is represented in RFC3339 form and is in UTC.\\n\\nOnce set, the field can only be removed when the job is suspended. The field cannot be modified while the job is unsuspended or finished.\"\n        },\n        \"succeeded\": {\n          \"description\": \"The number of pods which reached phase Succeeded. The value increases monotonically for a given spec. However, it may decrease in reaction to scale down of elastic indexed jobs.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"terminating\": {\n          \"description\": \"The number of pods which are terminating (in phase Pending or Running and have a deletionTimestamp).\\n\\nThis field is beta-level. The job controller populates the field when the feature gate JobPodReplacementPolicy is enabled (enabled by default).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"uncountedTerminatedPods\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.UncountedTerminatedPods\",\n          \"description\": \"uncountedTerminatedPods holds the UIDs of Pods that have terminated but the job controller hasn't yet accounted for in the status counters.\\n\\nThe job controller creates pods with a finalizer. When a pod terminates (succeeded or failed), the controller does three steps to account for it in the job status:\\n\\n1. Add the pod UID to the arrays in this field. 2. Remove the pod finalizer. 3. Remove the pod UID from the arrays while increasing the corresponding\\n    counter.\\n\\nOld jobs might not be tracked using this field, in which case the field remains null. The structure is empty for finished jobs.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.JobTemplateSpec\": {\n      \"description\": \"JobTemplateSpec describes the data a Job should have when created from a template\",\n      \"properties\": {\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata of the jobs created from this template. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.JobSpec\",\n          \"description\": \"Specification of the desired behavior of the job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.PodFailurePolicy\": {\n      \"description\": \"PodFailurePolicy describes how failed pods influence the backoffLimit.\",\n      \"properties\": {\n        \"rules\": {\n          \"description\": \"A list of pod failure policy rules. The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.batch.v1.PodFailurePolicyRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"rules\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement\": {\n      \"description\": \"PodFailurePolicyOnExitCodesRequirement describes the requirement for handling a failed pod based on its container exit codes. In particular, it lookups the .state.terminated.exitCode for each app container and init container status, represented by the .status.containerStatuses and .status.initContainerStatuses fields in the Pod status, respectively. Containers completed with success (exit code 0) are excluded from the requirement check.\",\n      \"properties\": {\n        \"containerName\": {\n          \"description\": \"Restricts the check for exit codes to the container with the specified name. When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template.\",\n          \"type\": \"string\"\n        },\n        \"operator\": {\n          \"description\": \"Represents the relationship between the container exit code(s) and the specified values. Containers completed with success (exit code 0) are excluded from the requirement check. Possible values are:\\n\\n- In: the requirement is satisfied if at least one container exit code\\n  (might be multiple if there are multiple containers not restricted\\n  by the 'containerName' field) is in the set of specified values.\\n- NotIn: the requirement is satisfied if at least one container exit code\\n  (might be multiple if there are multiple containers not restricted\\n  by the 'containerName' field) is not in the set of specified values.\\nAdditional values are considered to be added in the future. Clients should react to an unknown operator by assuming the requirement is not satisfied.\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"description\": \"Specifies the set of values. Each returned container exit code (might be multiple in case of multiple containers) is checked against this set of values with respect to the operator. The list of values must be ordered and must not contain duplicates. Value '0' cannot be used for the In operator. At least one element is required. At most 255 elements are allowed.\",\n          \"items\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"required\": [\n        \"operator\",\n        \"values\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern\": {\n      \"description\": \"PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an actual pod condition type.\",\n      \"properties\": {\n        \"status\": {\n          \"description\": \"Specifies the required Pod condition status. To match a pod condition it is required that the specified status equals the pod condition status. Defaults to True.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Specifies the required Pod condition type. To match a pod condition it is required that specified type equals the pod condition type.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.PodFailurePolicyRule\": {\n      \"description\": \"PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. One of onExitCodes and onPodConditions, but not both, can be used in each rule.\",\n      \"properties\": {\n        \"action\": {\n          \"description\": \"Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are:\\n\\n- FailJob: indicates that the pod's job is marked as Failed and all\\n  running pods are terminated.\\n- FailIndex: indicates that the pod's index is marked as Failed and will\\n  not be restarted.\\n  This value is beta-level. It can be used when the\\n  `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\\n- Ignore: indicates that the counter towards the .backoffLimit is not\\n  incremented and a replacement pod is created.\\n- Count: indicates that the pod is handled in the default way - the\\n  counter towards the .backoffLimit is incremented.\\nAdditional values are considered to be added in the future. Clients should react to an unknown action by skipping the rule.\",\n          \"type\": \"string\"\n        },\n        \"onExitCodes\": {\n          \"$ref\": \"#/definitions/io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement\",\n          \"description\": \"Represents the requirement on the container exit codes.\"\n        },\n        \"onPodConditions\": {\n          \"description\": \"Represents the requirement on the pod conditions. The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"action\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.SuccessPolicy\": {\n      \"description\": \"SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes.\",\n      \"properties\": {\n        \"rules\": {\n          \"description\": \"rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, the \\\"SucceededCriteriaMet\\\" condition is added, and the lingering pods are removed. The terminal state for such a Job has the \\\"Complete\\\" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are allowed.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.batch.v1.SuccessPolicyRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"rules\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.SuccessPolicyRule\": {\n      \"description\": \"SuccessPolicyRule describes rule for declaring a Job as succeeded. Each rule must have at least one of the \\\"succeededIndexes\\\" or \\\"succeededCount\\\" specified.\",\n      \"properties\": {\n        \"succeededCount\": {\n          \"description\": \"succeededCount specifies the minimal required size of the actual set of the succeeded indexes for the Job. When succeededCount is used along with succeededIndexes, the check is constrained only to the set of indexes specified by succeededIndexes. For example, given that succeededIndexes is \\\"1-4\\\", succeededCount is \\\"3\\\", and completed indexes are \\\"1\\\", \\\"3\\\", and \\\"5\\\", the Job isn't declared as succeeded because only \\\"1\\\" and \\\"3\\\" indexes are considered in that rules. When this field is null, this doesn't default to any value and is never evaluated at any time. When specified it needs to be a positive integer.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"succeededIndexes\": {\n          \"description\": \"succeededIndexes specifies the set of indexes which need to be contained in the actual set of the succeeded indexes for the Job. The list of indexes must be within 0 to \\\".spec.completions-1\\\" and must not contain duplicates. At least one element is required. The indexes are represented as intervals separated by commas. The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen. The number are listed in represented by the first and last element of the series, separated by a hyphen. For example, if the completed indexes are 1, 3, 4, 5 and 7, they are represented as \\\"1,3-5,7\\\". When this field is null, this field doesn't default to any value and is never evaluated at any time.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.batch.v1.UncountedTerminatedPods\": {\n      \"description\": \"UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.\",\n      \"properties\": {\n        \"failed\": {\n          \"description\": \"failed holds UIDs of failed Pods.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"succeeded\": {\n          \"description\": \"succeeded holds UIDs of succeeded Pods.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.certificates.v1.CertificateSigningRequest\": {\n      \"description\": \"CertificateSigningRequest objects provide a mechanism to obtain x509 certificates by submitting a certificate signing request, and having it asynchronously approved and issued.\\n\\nKubelets use this API to obtain:\\n 1. client certificates to authenticate to kube-apiserver (with the \\\"kubernetes.io/kube-apiserver-client-kubelet\\\" signerName).\\n 2. serving certificates for TLS endpoints kube-apiserver can connect to securely (with the \\\"kubernetes.io/kubelet-serving\\\" signerName).\\n\\nThis API can be used to request client certificates to authenticate to kube-apiserver (with the \\\"kubernetes.io/kube-apiserver-client\\\" signerName), or to obtain certificates from custom non-Kubernetes signers.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequestSpec\",\n          \"description\": \"spec contains the certificate request, and is immutable after creation. Only the request, signerName, expirationSeconds, and usages fields can be set on creation. Other fields are derived by Kubernetes and cannot be modified by users.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequestStatus\",\n          \"description\": \"status contains information about whether the request is approved or denied, and the certificate issued by the signer, or the failure condition indicating signer failure.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.certificates.v1.CertificateSigningRequestCondition\": {\n      \"description\": \"CertificateSigningRequestCondition describes a condition of a CertificateSigningRequest object\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastTransitionTime is the time the condition last transitioned from one status to another. If unset, when a new condition type is added or an existing condition's status is changed, the server defaults this to the current time.\"\n        },\n        \"lastUpdateTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastUpdateTime is the time of the last update to this condition\"\n        },\n        \"message\": {\n          \"description\": \"message contains a human readable message with details about the request state\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"reason indicates a brief reason for the request state\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"status of the condition, one of True, False, Unknown. Approved, Denied, and Failed conditions may not be \\\"False\\\" or \\\"Unknown\\\".\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"type of the condition. Known conditions are \\\"Approved\\\", \\\"Denied\\\", and \\\"Failed\\\".\\n\\nAn \\\"Approved\\\" condition is added via the /approval subresource, indicating the request was approved and should be issued by the signer.\\n\\nA \\\"Denied\\\" condition is added via the /approval subresource, indicating the request was denied and should not be issued by the signer.\\n\\nA \\\"Failed\\\" condition is added via the /status subresource, indicating the signer failed to issue the certificate.\\n\\nApproved and Denied conditions are mutually exclusive. Approved, Denied, and Failed conditions cannot be removed once added.\\n\\nOnly one condition of a given type is allowed.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.certificates.v1.CertificateSigningRequestList\": {\n      \"description\": \"CertificateSigningRequestList is a collection of CertificateSigningRequest objects\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a collection of CertificateSigningRequest objects\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequestList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.certificates.v1.CertificateSigningRequestSpec\": {\n      \"description\": \"CertificateSigningRequestSpec contains the certificate request.\",\n      \"properties\": {\n        \"expirationSeconds\": {\n          \"description\": \"expirationSeconds is the requested duration of validity of the issued certificate. The certificate signer may issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration.\\n\\nThe v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager.\\n\\nCertificate signers may not honor this field for various reasons:\\n\\n  1. Old signer that is unaware of the field (such as the in-tree\\n     implementations prior to v1.22)\\n  2. Signer whose configured maximum is shorter than the requested duration\\n  3. Signer whose configured minimum is longer than the requested duration\\n\\nThe minimum valid value for expirationSeconds is 600, i.e. 10 minutes.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"extra\": {\n          \"additionalProperties\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"description\": \"extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\",\n          \"type\": \"object\"\n        },\n        \"groups\": {\n          \"description\": \"groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"request\": {\n          \"description\": \"request contains an x509 certificate signing request encoded in a \\\"CERTIFICATE REQUEST\\\" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded.\",\n          \"format\": \"byte\",\n          \"type\": \"string\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"signerName\": {\n          \"description\": \"signerName indicates the requested signer, and is a qualified name.\\n\\nList/watch requests for CertificateSigningRequests can filter on this field using a \\\"spec.signerName=NAME\\\" fieldSelector.\\n\\nWell-known Kubernetes signers are:\\n 1. \\\"kubernetes.io/kube-apiserver-client\\\": issues client certificates that can be used to authenticate to kube-apiserver.\\n  Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the \\\"csrsigning\\\" controller in kube-controller-manager.\\n 2. \\\"kubernetes.io/kube-apiserver-client-kubelet\\\": issues client certificates that kubelets use to authenticate to kube-apiserver.\\n  Requests for this signer can be auto-approved by the \\\"csrapproving\\\" controller in kube-controller-manager, and can be issued by the \\\"csrsigning\\\" controller in kube-controller-manager.\\n 3. \\\"kubernetes.io/kubelet-serving\\\" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely.\\n  Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the \\\"csrsigning\\\" controller in kube-controller-manager.\\n\\nMore details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers\\n\\nCustom signerNames can also be specified. The signer defines:\\n 1. Trust distribution: how trust (CA bundles) are distributed.\\n 2. Permitted subjects: and behavior when a disallowed subject is requested.\\n 3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested.\\n 4. Required, permitted, or forbidden key usages / extended key usages.\\n 5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin.\\n 6. Whether or not requests for CA certificates are allowed.\",\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"description\": \"uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\",\n          \"type\": \"string\"\n        },\n        \"usages\": {\n          \"description\": \"usages specifies a set of key usages requested in the issued certificate.\\n\\nRequests for TLS client certificates typically request: \\\"digital signature\\\", \\\"key encipherment\\\", \\\"client auth\\\".\\n\\nRequests for TLS serving certificates typically request: \\\"key encipherment\\\", \\\"digital signature\\\", \\\"server auth\\\".\\n\\nValid values are:\\n \\\"signing\\\", \\\"digital signature\\\", \\\"content commitment\\\",\\n \\\"key encipherment\\\", \\\"key agreement\\\", \\\"data encipherment\\\",\\n \\\"cert sign\\\", \\\"crl sign\\\", \\\"encipher only\\\", \\\"decipher only\\\", \\\"any\\\",\\n \\\"server auth\\\", \\\"client auth\\\",\\n \\\"code signing\\\", \\\"email protection\\\", \\\"s/mime\\\",\\n \\\"ipsec end system\\\", \\\"ipsec tunnel\\\", \\\"ipsec user\\\",\\n \\\"timestamping\\\", \\\"ocsp signing\\\", \\\"microsoft sgc\\\", \\\"netscape sgc\\\"\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"username\": {\n          \"description\": \"username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"request\",\n        \"signerName\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.certificates.v1.CertificateSigningRequestStatus\": {\n      \"description\": \"CertificateSigningRequestStatus contains conditions used to indicate approved/denied/failed status of the request, and the issued certificate.\",\n      \"properties\": {\n        \"certificate\": {\n          \"description\": \"certificate is populated with an issued certificate by the signer after an Approved condition is present. This field is set via the /status subresource. Once populated, this field is immutable.\\n\\nIf the certificate signing request is denied, a condition of type \\\"Denied\\\" is added and this field remains empty. If the signer cannot issue the certificate, a condition of type \\\"Failed\\\" is added and this field remains empty.\\n\\nValidation requirements:\\n 1. certificate must contain one or more PEM blocks.\\n 2. All PEM blocks must have the \\\"CERTIFICATE\\\" label, contain no headers, and the encoded data\\n  must be a BER-encoded ASN.1 Certificate structure as described in section 4 of RFC5280.\\n 3. Non-PEM content may appear before or after the \\\"CERTIFICATE\\\" PEM blocks and is unvalidated,\\n  to allow for explanatory text as described in section 5.2 of RFC7468.\\n\\nIf more than one PEM block is present, and the definition of the requested spec.signerName does not indicate otherwise, the first block is the issued certificate, and subsequent blocks should be treated as intermediate certificates and presented in TLS handshakes.\\n\\nThe certificate is encoded in PEM format.\\n\\nWhen serialized as JSON or YAML, the data is additionally base64-encoded, so it consists of:\\n\\n    base64(\\n    -----BEGIN CERTIFICATE-----\\n    ...\\n    -----END CERTIFICATE-----\\n    )\",\n          \"format\": \"byte\",\n          \"type\": \"string\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"conditions\": {\n          \"description\": \"conditions applied to the request. Known conditions are \\\"Approved\\\", \\\"Denied\\\", and \\\"Failed\\\".\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequestCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\": {\n      \"description\": \"ClusterTrustBundle is a cluster-scoped container for X.509 trust anchors (root certificates).\\n\\nClusterTrustBundle objects are considered to be readable by any authenticated user in the cluster, because they can be mounted by pods using the `clusterTrustBundle` projection.  All service accounts have read access to ClusterTrustBundles by default.  Users who only have namespace-level access to a cluster can read ClusterTrustBundles by impersonating a serviceaccount that they have access to.\\n\\nIt can be optionally associated with a particular assigner, in which case it contains one valid set of trust anchors for that signer. Signers may have multiple associated ClusterTrustBundles; each is an independent set of trust anchors for that signer. Admission control is used to enforce that only users with permissions on the signer can create or modify the corresponding bundle.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"metadata contains the object metadata.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundleSpec\",\n          \"description\": \"spec contains the signer (if any) and trust anchors.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList\": {\n      \"description\": \"ClusterTrustBundleList is a collection of ClusterTrustBundle objects\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a collection of ClusterTrustBundle objects\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"metadata contains the list metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundleList\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.certificates.v1alpha1.ClusterTrustBundleSpec\": {\n      \"description\": \"ClusterTrustBundleSpec contains the signer and trust anchors.\",\n      \"properties\": {\n        \"signerName\": {\n          \"description\": \"signerName indicates the associated signer, if any.\\n\\nIn order to create or update a ClusterTrustBundle that sets signerName, you must have the following cluster-scoped permission: group=certificates.k8s.io resource=signers resourceName=<the signer name> verb=attest.\\n\\nIf signerName is not empty, then the ClusterTrustBundle object must be named with the signer name as a prefix (translating slashes to colons). For example, for the signer name `example.com/foo`, valid ClusterTrustBundle object names include `example.com:foo:abc` and `example.com:foo:v1`.\\n\\nIf signerName is empty, then the ClusterTrustBundle object's name must not have such a prefix.\\n\\nList/watch requests for ClusterTrustBundles can filter on this field using a `spec.signerName=NAME` field selector.\",\n          \"type\": \"string\"\n        },\n        \"trustBundle\": {\n          \"description\": \"trustBundle contains the individual X.509 trust anchors for this bundle, as PEM bundle of PEM-wrapped, DER-formatted X.509 certificates.\\n\\nThe data must consist only of PEM certificate blocks that parse as valid X.509 certificates.  Each certificate must include a basic constraints extension with the CA bit set.  The API server will reject objects that contain duplicate certificates, or that use PEM block headers.\\n\\nUsers of ClusterTrustBundles, including Kubelet, are free to reorder and deduplicate certificate blocks in this file according to their own logic, as well as to drop PEM block headers and inter-block data.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"trustBundle\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.coordination.v1.Lease\": {\n      \"description\": \"Lease defines a lease concept.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.LeaseSpec\",\n          \"description\": \"spec contains the specification of the Lease. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.coordination.v1.LeaseList\": {\n      \"description\": \"LeaseList is a list of Lease objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a list of schema objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.coordination.v1.LeaseSpec\": {\n      \"description\": \"LeaseSpec is a specification of a Lease.\",\n      \"properties\": {\n        \"acquireTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n          \"description\": \"acquireTime is a time when the current lease was acquired.\"\n        },\n        \"holderIdentity\": {\n          \"description\": \"holderIdentity contains the identity of the holder of a current lease. If Coordinated Leader Election is used, the holder identity must be equal to the elected LeaseCandidate.metadata.name field.\",\n          \"type\": \"string\"\n        },\n        \"leaseDurationSeconds\": {\n          \"description\": \"leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measured against the time of last observed renewTime.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"leaseTransitions\": {\n          \"description\": \"leaseTransitions is the number of transitions of a lease between holders.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"preferredHolder\": {\n          \"description\": \"PreferredHolder signals to a lease holder that the lease has a more optimal holder and should be given up. This field can only be set if Strategy is also set.\",\n          \"type\": \"string\"\n        },\n        \"renewTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n          \"description\": \"renewTime is a time when the current holder of a lease has last updated the lease.\"\n        },\n        \"strategy\": {\n          \"description\": \"Strategy indicates the strategy for picking the leader for coordinated leader election. If the field is not specified, there is no active coordination for this lease. (Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.coordination.v1alpha1.LeaseCandidate\": {\n      \"description\": \"LeaseCandidate defines a candidate for a Lease object. Candidates are created such that coordinated leader election will pick the best leader from the list of candidates.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidateSpec\",\n          \"description\": \"spec contains the specification of the Lease. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.coordination.v1alpha1.LeaseCandidateList\": {\n      \"description\": \"LeaseCandidateList is a list of Lease objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a list of schema objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidateList\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.coordination.v1alpha1.LeaseCandidateSpec\": {\n      \"description\": \"LeaseCandidateSpec is a specification of a Lease.\",\n      \"properties\": {\n        \"binaryVersion\": {\n          \"description\": \"BinaryVersion is the binary version. It must be in a semver format without leading `v`. This field is required when strategy is \\\"OldestEmulationVersion\\\"\",\n          \"type\": \"string\"\n        },\n        \"emulationVersion\": {\n          \"description\": \"EmulationVersion is the emulation version. It must be in a semver format without leading `v`. EmulationVersion must be less than or equal to BinaryVersion. This field is required when strategy is \\\"OldestEmulationVersion\\\"\",\n          \"type\": \"string\"\n        },\n        \"leaseName\": {\n          \"description\": \"LeaseName is the name of the lease for which this candidate is contending. This field is immutable.\",\n          \"type\": \"string\"\n        },\n        \"pingTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n          \"description\": \"PingTime is the last time that the server has requested the LeaseCandidate to renew. It is only done during leader election to check if any LeaseCandidates have become ineligible. When PingTime is updated, the LeaseCandidate will respond by updating RenewTime.\"\n        },\n        \"preferredStrategies\": {\n          \"description\": \"PreferredStrategies indicates the list of strategies for picking the leader for coordinated leader election. The list is ordered, and the first strategy supersedes all other strategies. The list is used by coordinated leader election to make a decision about the final election strategy. This follows as - If all clients have strategy X as the first element in this list, strategy X will be used. - If a candidate has strategy [X] and another candidate has strategy [Y, X], Y supersedes X and strategy Y\\n  will be used.\\n- If a candidate has strategy [X, Y] and another candidate has strategy [Y, X], this is a user error and leader\\n  election will not operate the Lease until resolved.\\n(Alpha) Using this field requires the CoordinatedLeaderElection feature gate to be enabled.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"renewTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n          \"description\": \"RenewTime is the time that the LeaseCandidate was last updated. Any time a Lease needs to do leader election, the PingTime field is updated to signal to the LeaseCandidate that they should update the RenewTime. Old LeaseCandidate objects are also garbage collected if it has been hours since the last renew. The PingTime field is updated regularly to prevent garbage collection for still active LeaseCandidates.\"\n        }\n      },\n      \"required\": [\n        \"leaseName\",\n        \"preferredStrategies\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource\": {\n      \"description\": \"Represents a Persistent Disk resource in AWS.\\n\\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n          \"type\": \"string\"\n        },\n        \"partition\": {\n          \"description\": \"partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \\\"1\\\". Similarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n          \"type\": \"boolean\"\n        },\n        \"volumeID\": {\n          \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"volumeID\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Affinity\": {\n      \"description\": \"Affinity is a group of affinity scheduling rules.\",\n      \"properties\": {\n        \"nodeAffinity\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeAffinity\",\n          \"description\": \"Describes node affinity scheduling rules for the pod.\"\n        },\n        \"podAffinity\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodAffinity\",\n          \"description\": \"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).\"\n        },\n        \"podAntiAffinity\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodAntiAffinity\",\n          \"description\": \"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.AppArmorProfile\": {\n      \"description\": \"AppArmorProfile defines a pod or container's AppArmor settings.\",\n      \"properties\": {\n        \"localhostProfile\": {\n          \"description\": \"localhostProfile indicates a profile loaded on the node that should be used. The profile must be preconfigured on the node to work. Must match the loaded name of the profile. Must be set if and only if type is \\\"Localhost\\\".\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"type indicates which kind of AppArmor profile will be applied. Valid options are:\\n  Localhost - a profile pre-loaded on the node.\\n  RuntimeDefault - the container runtime's default profile.\\n  Unconfined - no AppArmor enforcement.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-unions\": [\n        {\n          \"discriminator\": \"type\",\n          \"fields-to-discriminateBy\": {\n            \"localhostProfile\": \"LocalhostProfile\"\n          }\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.AttachedVolume\": {\n      \"description\": \"AttachedVolume describes a volume attached to a node\",\n      \"properties\": {\n        \"devicePath\": {\n          \"description\": \"DevicePath represents the device path where the volume should be available\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the attached volume\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"devicePath\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.AzureDiskVolumeSource\": {\n      \"description\": \"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\",\n      \"properties\": {\n        \"cachingMode\": {\n          \"description\": \"cachingMode is the Host Caching mode: None, Read Only, Read Write.\",\n          \"type\": \"string\"\n        },\n        \"diskName\": {\n          \"description\": \"diskName is the Name of the data disk in the blob storage\",\n          \"type\": \"string\"\n        },\n        \"diskURI\": {\n          \"description\": \"diskURI is the URI of data disk in the blob storage\",\n          \"type\": \"string\"\n        },\n        \"fsType\": {\n          \"description\": \"fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"kind expected values are Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"diskName\",\n        \"diskURI\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.AzureFilePersistentVolumeSource\": {\n      \"description\": \"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n      \"properties\": {\n        \"readOnly\": {\n          \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"secretName\": {\n          \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n          \"type\": \"string\"\n        },\n        \"secretNamespace\": {\n          \"description\": \"secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod\",\n          \"type\": \"string\"\n        },\n        \"shareName\": {\n          \"description\": \"shareName is the azure Share Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"secretName\",\n        \"shareName\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.AzureFileVolumeSource\": {\n      \"description\": \"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n      \"properties\": {\n        \"readOnly\": {\n          \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"secretName\": {\n          \"description\": \"secretName is the  name of secret that contains Azure Storage Account Name and Key\",\n          \"type\": \"string\"\n        },\n        \"shareName\": {\n          \"description\": \"shareName is the azure share Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"secretName\",\n        \"shareName\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Binding\": {\n      \"description\": \"Binding ties one object to another; for example, a pod is bound to a node by a scheduler. Deprecated in 1.7, please use the bindings subresource of pods instead.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"target\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"The target object that you want to bind to the standard object.\"\n        }\n      },\n      \"required\": [\n        \"target\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Binding\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.CSIPersistentVolumeSource\": {\n      \"description\": \"Represents storage that is managed by an external CSI volume driver (Beta feature)\",\n      \"properties\": {\n        \"controllerExpandSecretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"controllerExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerExpandVolume call. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.\"\n        },\n        \"controllerPublishSecretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"controllerPublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI ControllerPublishVolume and ControllerUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.\"\n        },\n        \"driver\": {\n          \"description\": \"driver is the name of the driver to use for this volume. Required.\",\n          \"type\": \"string\"\n        },\n        \"fsType\": {\n          \"description\": \"fsType to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\",\n          \"type\": \"string\"\n        },\n        \"nodeExpandSecretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"nodeExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeExpandVolume call. This field is optional, may be omitted if no secret is required. If the secret object contains more than one secret, all secrets are passed.\"\n        },\n        \"nodePublishSecretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.\"\n        },\n        \"nodeStageSecretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"nodeStageSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeStageVolume and NodeStageVolume and NodeUnstageVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secrets are passed.\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).\",\n          \"type\": \"boolean\"\n        },\n        \"volumeAttributes\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"volumeAttributes of the volume to publish.\",\n          \"type\": \"object\"\n        },\n        \"volumeHandle\": {\n          \"description\": \"volumeHandle is the unique volume name returned by the CSI volume plugin’s CreateVolume to refer to the volume on all subsequent calls. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"driver\",\n        \"volumeHandle\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.CSIVolumeSource\": {\n      \"description\": \"Represents a source location of a volume to mount, managed by an external CSI driver\",\n      \"properties\": {\n        \"driver\": {\n          \"description\": \"driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.\",\n          \"type\": \"string\"\n        },\n        \"fsType\": {\n          \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.\",\n          \"type\": \"string\"\n        },\n        \"nodePublishSecretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\",\n          \"description\": \"nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and  may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).\",\n          \"type\": \"boolean\"\n        },\n        \"volumeAttributes\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"driver\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Capabilities\": {\n      \"description\": \"Adds and removes POSIX capabilities from running containers.\",\n      \"properties\": {\n        \"add\": {\n          \"description\": \"Added capabilities\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"drop\": {\n          \"description\": \"Removed capabilities\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.CephFSPersistentVolumeSource\": {\n      \"description\": \"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.\",\n      \"properties\": {\n        \"monitors\": {\n          \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"path\": {\n          \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n          \"type\": \"boolean\"\n        },\n        \"secretFile\": {\n          \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\"\n        },\n        \"user\": {\n          \"description\": \"user is Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"monitors\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.CephFSVolumeSource\": {\n      \"description\": \"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.\",\n      \"properties\": {\n        \"monitors\": {\n          \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"path\": {\n          \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n          \"type\": \"boolean\"\n        },\n        \"secretFile\": {\n          \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\",\n          \"description\": \"secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\"\n        },\n        \"user\": {\n          \"description\": \"user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"monitors\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.CinderPersistentVolumeSource\": {\n      \"description\": \"Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack.\"\n        },\n        \"volumeID\": {\n          \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"volumeID\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.CinderVolumeSource\": {\n      \"description\": \"Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\",\n          \"description\": \"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.\"\n        },\n        \"volumeID\": {\n          \"description\": \"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"volumeID\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ClientIPConfig\": {\n      \"description\": \"ClientIPConfig represents the configurations of Client IP based session affinity.\",\n      \"properties\": {\n        \"timeoutSeconds\": {\n          \"description\": \"timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == \\\"ClientIP\\\". Default value is 10800(for 3 hours).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ClusterTrustBundleProjection\": {\n      \"description\": \"ClusterTrustBundleProjection describes how to select a set of ClusterTrustBundle objects and project their contents into the pod filesystem.\",\n      \"properties\": {\n        \"labelSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"Select all ClusterTrustBundles that match this label selector.  Only has effect if signerName is set.  Mutually-exclusive with name.  If unset, interpreted as \\\"match nothing\\\".  If set but empty, interpreted as \\\"match everything\\\".\"\n        },\n        \"name\": {\n          \"description\": \"Select a single ClusterTrustBundle by object name.  Mutually-exclusive with signerName and labelSelector.\",\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"description\": \"If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available.  If using name, then the named ClusterTrustBundle is allowed not to exist.  If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles.\",\n          \"type\": \"boolean\"\n        },\n        \"path\": {\n          \"description\": \"Relative path from the volume root to write the bundle.\",\n          \"type\": \"string\"\n        },\n        \"signerName\": {\n          \"description\": \"Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name.  The contents of all selected ClusterTrustBundles will be unified and deduplicated.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ComponentCondition\": {\n      \"description\": \"Information about the condition of a component.\",\n      \"properties\": {\n        \"error\": {\n          \"description\": \"Condition error code for a component. For example, a health check error code.\",\n          \"type\": \"string\"\n        },\n        \"message\": {\n          \"description\": \"Message about the condition for a component. For example, information about a health check.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition for a component. Valid values for \\\"Healthy\\\": \\\"True\\\", \\\"False\\\", or \\\"Unknown\\\".\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of condition for a component. Valid value: \\\"Healthy\\\"\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ComponentStatus\": {\n      \"description\": \"ComponentStatus (and ComponentStatusList) holds the cluster validation info. Deprecated: This API is deprecated in v1.19+\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"conditions\": {\n          \"description\": \"List of component conditions observed\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ComponentCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ComponentStatus\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ComponentStatusList\": {\n      \"description\": \"Status of all the conditions for the component as a list of ComponentStatus objects. Deprecated: This API is deprecated in v1.19+\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of ComponentStatus objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ComponentStatus\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ComponentStatusList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ConfigMap\": {\n      \"description\": \"ConfigMap holds configuration data for pods to consume.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"binaryData\": {\n          \"additionalProperties\": {\n            \"format\": \"byte\",\n            \"type\": \"string\"\n          },\n          \"description\": \"BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet.\",\n          \"type\": \"object\"\n        },\n        \"data\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process.\",\n          \"type\": \"object\"\n        },\n        \"immutable\": {\n          \"description\": \"Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.\",\n          \"type\": \"boolean\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ConfigMapEnvSource\": {\n      \"description\": \"ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\\n\\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"description\": \"Specify whether the ConfigMap must be defined\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ConfigMapKeySelector\": {\n      \"description\": \"Selects a key from a ConfigMap.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"The key to select.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"description\": \"Specify whether the ConfigMap or its key must be defined\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"key\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.ConfigMapList\": {\n      \"description\": \"ConfigMapList is a resource containing a list of ConfigMap objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of ConfigMaps.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ConfigMapList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ConfigMapNodeConfigSource\": {\n      \"description\": \"ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node. This API is deprecated since 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration\",\n      \"properties\": {\n        \"kubeletConfigKey\": {\n          \"description\": \"KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.\",\n          \"type\": \"string\"\n        },\n        \"resourceVersion\": {\n          \"description\": \"ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.\",\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"description\": \"UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"namespace\",\n        \"name\",\n        \"kubeletConfigKey\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ConfigMapProjection\": {\n      \"description\": \"Adapts a ConfigMap into a projected volume.\\n\\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.\",\n      \"properties\": {\n        \"items\": {\n          \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.KeyToPath\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"name\": {\n          \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ConfigMapVolumeSource\": {\n      \"description\": \"Adapts a ConfigMap into a volume.\\n\\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"defaultMode\": {\n          \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"items\": {\n          \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.KeyToPath\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"name\": {\n          \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"description\": \"optional specify whether the ConfigMap or its keys must be defined\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Container\": {\n      \"description\": \"A single application container that you want to run within a pod.\",\n      \"properties\": {\n        \"args\": {\n          \"description\": \"Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"command\": {\n          \"description\": \"Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"env\": {\n          \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EnvVar\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"envFrom\": {\n          \"description\": \"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EnvFromSource\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"image\": {\n          \"description\": \"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.\",\n          \"type\": \"string\"\n        },\n        \"imagePullPolicy\": {\n          \"description\": \"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n          \"type\": \"string\"\n        },\n        \"lifecycle\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Lifecycle\",\n          \"description\": \"Actions that the management system should take in response to container lifecycle events. Cannot be updated.\"\n        },\n        \"livenessProbe\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Probe\",\n          \"description\": \"Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\"\n        },\n        \"name\": {\n          \"description\": \"Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.\",\n          \"type\": \"string\"\n        },\n        \"ports\": {\n          \"description\": \"List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \\\"0.0.0.0\\\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerPort\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"containerPort\",\n            \"protocol\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"containerPort\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"readinessProbe\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Probe\",\n          \"description\": \"Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\"\n        },\n        \"resizePolicy\": {\n          \"description\": \"Resources resize policy for the container.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerResizePolicy\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resources\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceRequirements\",\n          \"description\": \"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\"\n        },\n        \"restartPolicy\": {\n          \"description\": \"RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \\\"Always\\\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \\\"Always\\\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \\\"Always\\\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \\\"sidecar\\\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.\",\n          \"type\": \"string\"\n        },\n        \"securityContext\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecurityContext\",\n          \"description\": \"SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/\"\n        },\n        \"startupProbe\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Probe\",\n          \"description\": \"StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\"\n        },\n        \"stdin\": {\n          \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\",\n          \"type\": \"boolean\"\n        },\n        \"stdinOnce\": {\n          \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\",\n          \"type\": \"boolean\"\n        },\n        \"terminationMessagePath\": {\n          \"description\": \"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\",\n          \"type\": \"string\"\n        },\n        \"terminationMessagePolicy\": {\n          \"description\": \"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\",\n          \"type\": \"string\"\n        },\n        \"tty\": {\n          \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n          \"type\": \"boolean\"\n        },\n        \"volumeDevices\": {\n          \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.VolumeDevice\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"devicePath\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"devicePath\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"volumeMounts\": {\n          \"description\": \"Pod volumes to mount into the container's filesystem. Cannot be updated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.VolumeMount\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"mountPath\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"mountPath\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"workingDir\": {\n          \"description\": \"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerImage\": {\n      \"description\": \"Describe a container image\",\n      \"properties\": {\n        \"names\": {\n          \"description\": \"Names by which this image is known. e.g. [\\\"kubernetes.example/hyperkube:v1.0.7\\\", \\\"cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7\\\"]\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"sizeBytes\": {\n          \"description\": \"The size of the image in bytes.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerPort\": {\n      \"description\": \"ContainerPort represents a network port in a single container.\",\n      \"properties\": {\n        \"containerPort\": {\n          \"description\": \"Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"hostIP\": {\n          \"description\": \"What host IP to bind the external port to.\",\n          \"type\": \"string\"\n        },\n        \"hostPort\": {\n          \"description\": \"Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"name\": {\n          \"description\": \"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.\",\n          \"type\": \"string\"\n        },\n        \"protocol\": {\n          \"description\": \"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \\\"TCP\\\".\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"containerPort\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerResizePolicy\": {\n      \"description\": \"ContainerResizePolicy represents resource resize policy for the container.\",\n      \"properties\": {\n        \"resourceName\": {\n          \"description\": \"Name of the resource to which this resource resize policy applies. Supported values: cpu, memory.\",\n          \"type\": \"string\"\n        },\n        \"restartPolicy\": {\n          \"description\": \"Restart policy to apply when specified resource is resized. If not specified, it defaults to NotRequired.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"resourceName\",\n        \"restartPolicy\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerState\": {\n      \"description\": \"ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.\",\n      \"properties\": {\n        \"running\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerStateRunning\",\n          \"description\": \"Details about a running container\"\n        },\n        \"terminated\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerStateTerminated\",\n          \"description\": \"Details about a terminated container\"\n        },\n        \"waiting\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerStateWaiting\",\n          \"description\": \"Details about a waiting container\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerStateRunning\": {\n      \"description\": \"ContainerStateRunning is a running state of a container.\",\n      \"properties\": {\n        \"startedAt\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Time at which the container was last (re-)started\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerStateTerminated\": {\n      \"description\": \"ContainerStateTerminated is a terminated state of a container.\",\n      \"properties\": {\n        \"containerID\": {\n          \"description\": \"Container's ID in the format '<type>://<container_id>'\",\n          \"type\": \"string\"\n        },\n        \"exitCode\": {\n          \"description\": \"Exit status from the last termination of the container\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"finishedAt\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Time at which the container last terminated\"\n        },\n        \"message\": {\n          \"description\": \"Message regarding the last termination of the container\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"(brief) reason from the last termination of the container\",\n          \"type\": \"string\"\n        },\n        \"signal\": {\n          \"description\": \"Signal from the last termination of the container\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"startedAt\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Time at which previous execution of the container started\"\n        }\n      },\n      \"required\": [\n        \"exitCode\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerStateWaiting\": {\n      \"description\": \"ContainerStateWaiting is a waiting state of a container.\",\n      \"properties\": {\n        \"message\": {\n          \"description\": \"Message regarding why the container is not yet running.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"(brief) reason the container is not yet running.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerStatus\": {\n      \"description\": \"ContainerStatus contains details for the current status of this container.\",\n      \"properties\": {\n        \"allocatedResources\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"AllocatedResources represents the compute resources allocated for this container by the node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission and after successfully admitting desired pod resize.\",\n          \"type\": \"object\"\n        },\n        \"allocatedResourcesStatus\": {\n          \"description\": \"AllocatedResourcesStatus represents the status of various resources allocated for this Pod.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"containerID\": {\n          \"description\": \"ContainerID is the ID of the container in the format '<type>://<container_id>'. Where type is a container runtime identifier, returned from Version call of CRI API (for example \\\"containerd\\\").\",\n          \"type\": \"string\"\n        },\n        \"image\": {\n          \"description\": \"Image is the name of container image that the container is running. The container image may not match the image used in the PodSpec, as it may have been resolved by the runtime. More info: https://kubernetes.io/docs/concepts/containers/images.\",\n          \"type\": \"string\"\n        },\n        \"imageID\": {\n          \"description\": \"ImageID is the image ID of the container's image. The image ID may not match the image ID of the image used in the PodSpec, as it may have been resolved by the runtime.\",\n          \"type\": \"string\"\n        },\n        \"lastState\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerState\",\n          \"description\": \"LastTerminationState holds the last termination state of the container to help debug container crashes and restarts. This field is not populated if the container is still running and RestartCount is 0.\"\n        },\n        \"name\": {\n          \"description\": \"Name is a DNS_LABEL representing the unique name of the container. Each container in a pod must have a unique name across all container types. Cannot be updated.\",\n          \"type\": \"string\"\n        },\n        \"ready\": {\n          \"description\": \"Ready specifies whether the container is currently passing its readiness check. The value will change as readiness probes keep executing. If no readiness probes are specified, this field defaults to true once the container is fully started (see Started field).\\n\\nThe value is typically used to determine whether a container is ready to accept traffic.\",\n          \"type\": \"boolean\"\n        },\n        \"resources\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceRequirements\",\n          \"description\": \"Resources represents the compute resource requests and limits that have been successfully enacted on the running container after it has been started or has been successfully resized.\"\n        },\n        \"restartCount\": {\n          \"description\": \"RestartCount holds the number of times the container has been restarted. Kubelet makes an effort to always increment the value, but there are cases when the state may be lost due to node restarts and then the value may be reset to 0. The value is never negative.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"started\": {\n          \"description\": \"Started indicates whether the container has finished its postStart lifecycle hook and passed its startup probe. Initialized as false, becomes true after startupProbe is considered successful. Resets to false when the container is restarted, or if kubelet loses state temporarily. In both cases, startup probes will run again. Is always true when no startupProbe is defined and container is running and has passed the postStart lifecycle hook. The null value must be treated the same as false.\",\n          \"type\": \"boolean\"\n        },\n        \"state\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerState\",\n          \"description\": \"State holds details about the container's current condition.\"\n        },\n        \"user\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerUser\",\n          \"description\": \"User represents user identity information initially attached to the first process of the container\"\n        },\n        \"volumeMounts\": {\n          \"description\": \"Status of volume mounts.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.VolumeMountStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"mountPath\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"mountPath\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"ready\",\n        \"restartCount\",\n        \"image\",\n        \"imageID\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ContainerUser\": {\n      \"description\": \"ContainerUser represents user identity information\",\n      \"properties\": {\n        \"linux\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LinuxContainerUser\",\n          \"description\": \"Linux holds user identity information initially attached to the first process of the containers in Linux. Note that the actual running identity can be changed if the process has enough privilege to do so.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.DaemonEndpoint\": {\n      \"description\": \"DaemonEndpoint contains information about a single Daemon endpoint.\",\n      \"properties\": {\n        \"Port\": {\n          \"description\": \"Port number of the given endpoint.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"Port\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.DownwardAPIProjection\": {\n      \"description\": \"Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.\",\n      \"properties\": {\n        \"items\": {\n          \"description\": \"Items is a list of DownwardAPIVolume file\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.DownwardAPIVolumeFile\": {\n      \"description\": \"DownwardAPIVolumeFile represents information to create the file containing the pod field\",\n      \"properties\": {\n        \"fieldRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectFieldSelector\",\n          \"description\": \"Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported.\"\n        },\n        \"mode\": {\n          \"description\": \"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"path\": {\n          \"description\": \"Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'\",\n          \"type\": \"string\"\n        },\n        \"resourceFieldRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceFieldSelector\",\n          \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.DownwardAPIVolumeSource\": {\n      \"description\": \"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"defaultMode\": {\n          \"description\": \"Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of downward API volume file\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.EmptyDirVolumeSource\": {\n      \"description\": \"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"medium\": {\n          \"description\": \"medium represents what type of storage medium should back this directory. The default is \\\"\\\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\",\n          \"type\": \"string\"\n        },\n        \"sizeLimit\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\",\n          \"description\": \"sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.EndpointAddress\": {\n      \"description\": \"EndpointAddress is a tuple that describes single IP address.\",\n      \"properties\": {\n        \"hostname\": {\n          \"description\": \"The Hostname of this endpoint\",\n          \"type\": \"string\"\n        },\n        \"ip\": {\n          \"description\": \"The IP of this endpoint. May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10), or link-local multicast (224.0.0.0/24 or ff02::/16).\",\n          \"type\": \"string\"\n        },\n        \"nodeName\": {\n          \"description\": \"Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.\",\n          \"type\": \"string\"\n        },\n        \"targetRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"Reference to object providing the endpoint.\"\n        }\n      },\n      \"required\": [\n        \"ip\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.EndpointPort\": {\n      \"description\": \"EndpointPort is a tuple that describes a single port.\",\n      \"properties\": {\n        \"appProtocol\": {\n          \"description\": \"The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either:\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n* Kubernetes-defined prefixed names:\\n  * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n  * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n  * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n* Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"The name of this port.  This must match the 'name' field in the corresponding ServicePort. Must be a DNS_LABEL. Optional only if one port is defined.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"description\": \"The port number of the endpoint.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"protocol\": {\n          \"description\": \"The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"port\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.EndpointSubset\": {\n      \"description\": \"EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\\n\\n\\t{\\n\\t  Addresses: [{\\\"ip\\\": \\\"10.10.1.1\\\"}, {\\\"ip\\\": \\\"10.10.2.2\\\"}],\\n\\t  Ports:     [{\\\"name\\\": \\\"a\\\", \\\"port\\\": 8675}, {\\\"name\\\": \\\"b\\\", \\\"port\\\": 309}]\\n\\t}\\n\\nThe resulting set of endpoints can be viewed as:\\n\\n\\ta: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\\n\\tb: [ 10.10.1.1:309, 10.10.2.2:309 ]\",\n      \"properties\": {\n        \"addresses\": {\n          \"description\": \"IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EndpointAddress\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"notReadyAddresses\": {\n          \"description\": \"IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EndpointAddress\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"ports\": {\n          \"description\": \"Port numbers available on the related IP addresses.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EndpointPort\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Endpoints\": {\n      \"description\": \"Endpoints is a collection of endpoints that implement the actual service. Example:\\n\\n\\t Name: \\\"mysvc\\\",\\n\\t Subsets: [\\n\\t   {\\n\\t     Addresses: [{\\\"ip\\\": \\\"10.10.1.1\\\"}, {\\\"ip\\\": \\\"10.10.2.2\\\"}],\\n\\t     Ports: [{\\\"name\\\": \\\"a\\\", \\\"port\\\": 8675}, {\\\"name\\\": \\\"b\\\", \\\"port\\\": 309}]\\n\\t   },\\n\\t   {\\n\\t     Addresses: [{\\\"ip\\\": \\\"10.10.3.3\\\"}],\\n\\t     Ports: [{\\\"name\\\": \\\"a\\\", \\\"port\\\": 93}, {\\\"name\\\": \\\"b\\\", \\\"port\\\": 76}]\\n\\t   },\\n\\t]\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"subsets\": {\n          \"description\": \"The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EndpointSubset\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.EndpointsList\": {\n      \"description\": \"EndpointsList is a list of endpoints.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of endpoints.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"EndpointsList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.EnvFromSource\": {\n      \"description\": \"EnvFromSource represents the source of a set of ConfigMaps\",\n      \"properties\": {\n        \"configMapRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource\",\n          \"description\": \"The ConfigMap to select from\"\n        },\n        \"prefix\": {\n          \"description\": \"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.\",\n          \"type\": \"string\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretEnvSource\",\n          \"description\": \"The Secret to select from\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.EnvVar\": {\n      \"description\": \"EnvVar represents an environment variable present in a Container.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name of the environment variable. Must be a C_IDENTIFIER.\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"description\": \"Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \\\"\\\".\",\n          \"type\": \"string\"\n        },\n        \"valueFrom\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.EnvVarSource\",\n          \"description\": \"Source for the environment variable's value. Cannot be used if value is not empty.\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.EnvVarSource\": {\n      \"description\": \"EnvVarSource represents a source for the value of an EnvVar.\",\n      \"properties\": {\n        \"configMapKeyRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector\",\n          \"description\": \"Selects a key of a ConfigMap.\"\n        },\n        \"fieldRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectFieldSelector\",\n          \"description\": \"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.\"\n        },\n        \"resourceFieldRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceFieldSelector\",\n          \"description\": \"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.\"\n        },\n        \"secretKeyRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretKeySelector\",\n          \"description\": \"Selects a key of a secret in the pod's namespace\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.EphemeralContainer\": {\n      \"description\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation.\\n\\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted.\",\n      \"properties\": {\n        \"args\": {\n          \"description\": \"Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"command\": {\n          \"description\": \"Entrypoint array. Not executed within a shell. The image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will produce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"env\": {\n          \"description\": \"List of environment variables to set in the container. Cannot be updated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EnvVar\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"envFrom\": {\n          \"description\": \"List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EnvFromSource\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"image\": {\n          \"description\": \"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images\",\n          \"type\": \"string\"\n        },\n        \"imagePullPolicy\": {\n          \"description\": \"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\",\n          \"type\": \"string\"\n        },\n        \"lifecycle\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Lifecycle\",\n          \"description\": \"Lifecycle is not allowed for ephemeral containers.\"\n        },\n        \"livenessProbe\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Probe\",\n          \"description\": \"Probes are not allowed for ephemeral containers.\"\n        },\n        \"name\": {\n          \"description\": \"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.\",\n          \"type\": \"string\"\n        },\n        \"ports\": {\n          \"description\": \"Ports are not allowed for ephemeral containers.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerPort\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"containerPort\",\n            \"protocol\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"containerPort\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"readinessProbe\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Probe\",\n          \"description\": \"Probes are not allowed for ephemeral containers.\"\n        },\n        \"resizePolicy\": {\n          \"description\": \"Resources resize policy for the container.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerResizePolicy\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resources\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceRequirements\",\n          \"description\": \"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.\"\n        },\n        \"restartPolicy\": {\n          \"description\": \"Restart policy for the container to manage the restart behavior of each container within a pod. This may only be set for init containers. You cannot set this field on ephemeral containers.\",\n          \"type\": \"string\"\n        },\n        \"securityContext\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecurityContext\",\n          \"description\": \"Optional: SecurityContext defines the security options the ephemeral container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\"\n        },\n        \"startupProbe\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Probe\",\n          \"description\": \"Probes are not allowed for ephemeral containers.\"\n        },\n        \"stdin\": {\n          \"description\": \"Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.\",\n          \"type\": \"boolean\"\n        },\n        \"stdinOnce\": {\n          \"description\": \"Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false\",\n          \"type\": \"boolean\"\n        },\n        \"targetContainerName\": {\n          \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\nThe container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined.\",\n          \"type\": \"string\"\n        },\n        \"terminationMessagePath\": {\n          \"description\": \"Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.\",\n          \"type\": \"string\"\n        },\n        \"terminationMessagePolicy\": {\n          \"description\": \"Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\",\n          \"type\": \"string\"\n        },\n        \"tty\": {\n          \"description\": \"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.\",\n          \"type\": \"boolean\"\n        },\n        \"volumeDevices\": {\n          \"description\": \"volumeDevices is the list of block devices to be used by the container.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.VolumeDevice\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"devicePath\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"devicePath\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"volumeMounts\": {\n          \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.VolumeMount\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"mountPath\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"mountPath\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"workingDir\": {\n          \"description\": \"Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.EphemeralVolumeSource\": {\n      \"description\": \"Represents an ephemeral volume that is handled by a normal storage driver.\",\n      \"properties\": {\n        \"volumeClaimTemplate\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimTemplate\",\n          \"description\": \"Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).\\n\\nAn existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster.\\n\\nThis field is read-only and no changes will be made by Kubernetes to the PVC after it has been created.\\n\\nRequired, must not be nil.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Event\": {\n      \"description\": \"Event is a report of an event somewhere in the cluster.  Events have a limited retention time and triggers and messages may evolve with time.  Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason.  Events should be treated as informative, best-effort, supplemental data.\",\n      \"properties\": {\n        \"action\": {\n          \"description\": \"What action was taken/failed regarding to the Regarding object.\",\n          \"type\": \"string\"\n        },\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"count\": {\n          \"description\": \"The number of times this event has occurred.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"eventTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n          \"description\": \"Time when this Event was first observed.\"\n        },\n        \"firstTimestamp\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)\"\n        },\n        \"involvedObject\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"The object that this event is about.\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"lastTimestamp\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"The time at which the most recent occurrence of this event was recorded.\"\n        },\n        \"message\": {\n          \"description\": \"A human-readable description of the status of this operation.\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"reason\": {\n          \"description\": \"This should be a short, machine understandable string that gives the reason for the transition into the object's current status.\",\n          \"type\": \"string\"\n        },\n        \"related\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"Optional secondary object for more complex actions.\"\n        },\n        \"reportingComponent\": {\n          \"description\": \"Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.\",\n          \"type\": \"string\"\n        },\n        \"reportingInstance\": {\n          \"description\": \"ID of the controller instance, e.g. `kubelet-xyzf`.\",\n          \"type\": \"string\"\n        },\n        \"series\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.EventSeries\",\n          \"description\": \"Data about the Event series this event represents or nil if it's a singleton Event.\"\n        },\n        \"source\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.EventSource\",\n          \"description\": \"The component reporting this event. Should be a short machine understandable string.\"\n        },\n        \"type\": {\n          \"description\": \"Type of this event (Normal, Warning), new types could be added in the future\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"metadata\",\n        \"involvedObject\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.EventList\": {\n      \"description\": \"EventList is a list of events.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of events\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"EventList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.EventSeries\": {\n      \"description\": \"EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.\",\n      \"properties\": {\n        \"count\": {\n          \"description\": \"Number of occurrences in this series up to the last heartbeat time\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"lastObservedTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n          \"description\": \"Time of the last occurrence observed\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.EventSource\": {\n      \"description\": \"EventSource contains information for an event.\",\n      \"properties\": {\n        \"component\": {\n          \"description\": \"Component from which the event is generated.\",\n          \"type\": \"string\"\n        },\n        \"host\": {\n          \"description\": \"Node name on which the event is generated.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ExecAction\": {\n      \"description\": \"ExecAction describes a \\\"run in container\\\" action.\",\n      \"properties\": {\n        \"command\": {\n          \"description\": \"Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.FCVolumeSource\": {\n      \"description\": \"Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n          \"type\": \"string\"\n        },\n        \"lun\": {\n          \"description\": \"lun is Optional: FC target lun number\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"targetWWNs\": {\n          \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"wwids\": {\n          \"description\": \"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.FlexPersistentVolumeSource\": {\n      \"description\": \"FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.\",\n      \"properties\": {\n        \"driver\": {\n          \"description\": \"driver is the name of the driver to use for this volume.\",\n          \"type\": \"string\"\n        },\n        \"fsType\": {\n          \"description\": \"fsType is the Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"options is Optional: this field holds extra command options if any.\",\n          \"type\": \"object\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"secretRef is Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.\"\n        }\n      },\n      \"required\": [\n        \"driver\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.FlexVolumeSource\": {\n      \"description\": \"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\",\n      \"properties\": {\n        \"driver\": {\n          \"description\": \"driver is the name of the driver to use for this volume.\",\n          \"type\": \"string\"\n        },\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\",\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"options is Optional: this field holds extra command options if any.\",\n          \"type\": \"object\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\",\n          \"description\": \"secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.\"\n        }\n      },\n      \"required\": [\n        \"driver\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.FlockerVolumeSource\": {\n      \"description\": \"Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.\",\n      \"properties\": {\n        \"datasetName\": {\n          \"description\": \"datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated\",\n          \"type\": \"string\"\n        },\n        \"datasetUUID\": {\n          \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource\": {\n      \"description\": \"Represents a Persistent Disk resource in Google Compute Engine.\\n\\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n          \"type\": \"string\"\n        },\n        \"partition\": {\n          \"description\": \"partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \\\"1\\\". Similarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"pdName\": {\n          \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"pdName\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.GRPCAction\": {\n      \"properties\": {\n        \"port\": {\n          \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"service\": {\n          \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\nIf this is not specified, the default behavior is defined by gRPC.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"port\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.GitRepoVolumeSource\": {\n      \"description\": \"Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.\\n\\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.\",\n      \"properties\": {\n        \"directory\": {\n          \"description\": \"directory is the target directory name. Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the git repository.  Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.\",\n          \"type\": \"string\"\n        },\n        \"repository\": {\n          \"description\": \"repository is the URL\",\n          \"type\": \"string\"\n        },\n        \"revision\": {\n          \"description\": \"revision is the commit hash for the specified revision.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"repository\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.GlusterfsPersistentVolumeSource\": {\n      \"description\": \"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.\",\n      \"properties\": {\n        \"endpoints\": {\n          \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n          \"type\": \"string\"\n        },\n        \"endpointsNamespace\": {\n          \"description\": \"endpointsNamespace is the namespace that contains Glusterfs endpoint. If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"endpoints\",\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.GlusterfsVolumeSource\": {\n      \"description\": \"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.\",\n      \"properties\": {\n        \"endpoints\": {\n          \"description\": \"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"description\": \"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"endpoints\",\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.HTTPGetAction\": {\n      \"description\": \"HTTPGetAction describes an action based on HTTP Get requests.\",\n      \"properties\": {\n        \"host\": {\n          \"description\": \"Host name to connect to, defaults to the pod IP. You probably want to set \\\"Host\\\" in httpHeaders instead.\",\n          \"type\": \"string\"\n        },\n        \"httpHeaders\": {\n          \"description\": \"Custom headers to set in the request. HTTP allows repeated headers.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.HTTPHeader\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"path\": {\n          \"description\": \"Path to access on the HTTP server.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\"\n        },\n        \"scheme\": {\n          \"description\": \"Scheme to use for connecting to the host. Defaults to HTTP.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"port\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.HTTPHeader\": {\n      \"description\": \"HTTPHeader describes a custom header to be used in HTTP probes\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"description\": \"The header field value\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"value\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.HostAlias\": {\n      \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.\",\n      \"properties\": {\n        \"hostnames\": {\n          \"description\": \"Hostnames for the above IP address.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"ip\": {\n          \"description\": \"IP address of the host file entry.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"ip\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.HostIP\": {\n      \"description\": \"HostIP represents a single IP address allocated to the host.\",\n      \"properties\": {\n        \"ip\": {\n          \"description\": \"IP is the IP address assigned to the host\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"ip\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.HostPathVolumeSource\": {\n      \"description\": \"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.\",\n      \"properties\": {\n        \"path\": {\n          \"description\": \"path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"type for HostPath Volume Defaults to \\\"\\\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ISCSIPersistentVolumeSource\": {\n      \"description\": \"ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"chapAuthDiscovery\": {\n          \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n          \"type\": \"boolean\"\n        },\n        \"chapAuthSession\": {\n          \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n          \"type\": \"boolean\"\n        },\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\",\n          \"type\": \"string\"\n        },\n        \"initiatorName\": {\n          \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.\",\n          \"type\": \"string\"\n        },\n        \"iqn\": {\n          \"description\": \"iqn is Target iSCSI Qualified Name.\",\n          \"type\": \"string\"\n        },\n        \"iscsiInterface\": {\n          \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n          \"type\": \"string\"\n        },\n        \"lun\": {\n          \"description\": \"lun is iSCSI Target Lun number.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"portals\": {\n          \"description\": \"portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\"\n        },\n        \"targetPortal\": {\n          \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"targetPortal\",\n        \"iqn\",\n        \"lun\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ISCSIVolumeSource\": {\n      \"description\": \"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"chapAuthDiscovery\": {\n          \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\",\n          \"type\": \"boolean\"\n        },\n        \"chapAuthSession\": {\n          \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\",\n          \"type\": \"boolean\"\n        },\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\",\n          \"type\": \"string\"\n        },\n        \"initiatorName\": {\n          \"description\": \"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection.\",\n          \"type\": \"string\"\n        },\n        \"iqn\": {\n          \"description\": \"iqn is the target iSCSI Qualified Name.\",\n          \"type\": \"string\"\n        },\n        \"iscsiInterface\": {\n          \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).\",\n          \"type\": \"string\"\n        },\n        \"lun\": {\n          \"description\": \"lun represents iSCSI Target Lun number.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"portals\": {\n          \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\",\n          \"description\": \"secretRef is the CHAP Secret for iSCSI target and initiator authentication\"\n        },\n        \"targetPortal\": {\n          \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"targetPortal\",\n        \"iqn\",\n        \"lun\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ImageVolumeSource\": {\n      \"description\": \"ImageVolumeSource represents a image volume resource.\",\n      \"properties\": {\n        \"pullPolicy\": {\n          \"description\": \"Policy for pulling OCI objects. Possible values are: Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.\",\n          \"type\": \"string\"\n        },\n        \"reference\": {\n          \"description\": \"Required: Image or artifact reference to be used. Behaves in the same way as pod.spec.containers[*].image. Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.KeyToPath\": {\n      \"description\": \"Maps a string key to a path within a volume.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"key is the key to project.\",\n          \"type\": \"string\"\n        },\n        \"mode\": {\n          \"description\": \"mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"path\": {\n          \"description\": \"path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Lifecycle\": {\n      \"description\": \"Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.\",\n      \"properties\": {\n        \"postStart\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LifecycleHandler\",\n          \"description\": \"PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\"\n        },\n        \"preStop\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LifecycleHandler\",\n          \"description\": \"PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.LifecycleHandler\": {\n      \"description\": \"LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.\",\n      \"properties\": {\n        \"exec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ExecAction\",\n          \"description\": \"Exec specifies the action to take.\"\n        },\n        \"httpGet\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.HTTPGetAction\",\n          \"description\": \"HTTPGet specifies the http request to perform.\"\n        },\n        \"sleep\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SleepAction\",\n          \"description\": \"Sleep represents the duration that the container should sleep before being terminated.\"\n        },\n        \"tcpSocket\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.TCPSocketAction\",\n          \"description\": \"Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.LimitRange\": {\n      \"description\": \"LimitRange sets resource usage limits for each kind of resource in a Namespace.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRangeSpec\",\n          \"description\": \"Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.LimitRangeItem\": {\n      \"description\": \"LimitRangeItem defines a min/max usage limit for any resource that matches on kind.\",\n      \"properties\": {\n        \"default\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Default resource requirement limit value by resource name if resource limit is omitted.\",\n          \"type\": \"object\"\n        },\n        \"defaultRequest\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.\",\n          \"type\": \"object\"\n        },\n        \"max\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Max usage constraints on this kind by resource name.\",\n          \"type\": \"object\"\n        },\n        \"maxLimitRequestRatio\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.\",\n          \"type\": \"object\"\n        },\n        \"min\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Min usage constraints on this kind by resource name.\",\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"description\": \"Type of resource that this limit applies to.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.LimitRangeList\": {\n      \"description\": \"LimitRangeList is a list of LimitRange items.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"LimitRangeList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.LimitRangeSpec\": {\n      \"description\": \"LimitRangeSpec defines a min/max usage limit for resources that match on kind.\",\n      \"properties\": {\n        \"limits\": {\n          \"description\": \"Limits is the list of LimitRangeItem objects that are enforced.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRangeItem\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"limits\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.LinuxContainerUser\": {\n      \"description\": \"LinuxContainerUser represents user identity information in Linux containers\",\n      \"properties\": {\n        \"gid\": {\n          \"description\": \"GID is the primary gid initially attached to the first process in the container\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"supplementalGroups\": {\n          \"description\": \"SupplementalGroups are the supplemental groups initially attached to the first process in the container\",\n          \"items\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"uid\": {\n          \"description\": \"UID is the primary uid initially attached to the first process in the container\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"uid\",\n        \"gid\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.LoadBalancerIngress\": {\n      \"description\": \"LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.\",\n      \"properties\": {\n        \"hostname\": {\n          \"description\": \"Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)\",\n          \"type\": \"string\"\n        },\n        \"ip\": {\n          \"description\": \"IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)\",\n          \"type\": \"string\"\n        },\n        \"ipMode\": {\n          \"description\": \"IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified. Setting this to \\\"VIP\\\" indicates that traffic is delivered to the node with the destination set to the load-balancer's IP and port. Setting this to \\\"Proxy\\\" indicates that traffic is delivered to the node or pod with the destination set to the node's IP and node port or the pod's IP and port. Service implementations may use this information to adjust traffic routing.\",\n          \"type\": \"string\"\n        },\n        \"ports\": {\n          \"description\": \"Ports is a list of records of service ports If used, every port defined in the service should have an entry in it\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PortStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.LoadBalancerStatus\": {\n      \"description\": \"LoadBalancerStatus represents the status of a load-balancer.\",\n      \"properties\": {\n        \"ingress\": {\n          \"description\": \"Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.LoadBalancerIngress\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.LocalObjectReference\": {\n      \"description\": \"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.LocalVolumeSource\": {\n      \"description\": \"Local represents directly-attached storage with node affinity (Beta feature)\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. It applies only when the Path is a block device. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default value is to auto-select a filesystem if unspecified.\",\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"description\": \"path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ModifyVolumeStatus\": {\n      \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation\",\n      \"properties\": {\n        \"status\": {\n          \"description\": \"status is the status of the ControllerModifyVolume operation. It can be in any of following states:\\n - Pending\\n   Pending indicates that the PersistentVolumeClaim cannot be modified due to unmet requirements, such as\\n   the specified VolumeAttributesClass not existing.\\n - InProgress\\n   InProgress indicates that the volume is being modified.\\n - Infeasible\\n  Infeasible indicates that the request has been rejected as invalid by the CSI driver. To\\n\\t  resolve the error, a valid VolumeAttributesClass needs to be specified.\\nNote: New statuses can be added in the future. Consumers should check for unknown statuses and fail appropriately.\",\n          \"type\": \"string\"\n        },\n        \"targetVolumeAttributesClassName\": {\n          \"description\": \"targetVolumeAttributesClassName is the name of the VolumeAttributesClass the PVC currently being reconciled\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NFSVolumeSource\": {\n      \"description\": \"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.\",\n      \"properties\": {\n        \"path\": {\n          \"description\": \"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n          \"type\": \"boolean\"\n        },\n        \"server\": {\n          \"description\": \"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"server\",\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Namespace\": {\n      \"description\": \"Namespace provides a scope for Names. Use of multiple namespaces is optional.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NamespaceSpec\",\n          \"description\": \"Spec defines the behavior of the Namespace. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NamespaceStatus\",\n          \"description\": \"Status describes the current status of a Namespace. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.NamespaceCondition\": {\n      \"description\": \"NamespaceCondition contains details about state of namespace.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\"\n        },\n        \"message\": {\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of namespace controller condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NamespaceList\": {\n      \"description\": \"NamespaceList is a list of Namespaces.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"NamespaceList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.NamespaceSpec\": {\n      \"description\": \"NamespaceSpec describes the attributes on a Namespace.\",\n      \"properties\": {\n        \"finalizers\": {\n          \"description\": \"Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NamespaceStatus\": {\n      \"description\": \"NamespaceStatus is information about the current status of a Namespace.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"Represents the latest available observations of a namespace's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.NamespaceCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"phase\": {\n          \"description\": \"Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Node\": {\n      \"description\": \"Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSpec\",\n          \"description\": \"Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeStatus\",\n          \"description\": \"Most recently observed status of the node. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.NodeAddress\": {\n      \"description\": \"NodeAddress contains information for the node's address.\",\n      \"properties\": {\n        \"address\": {\n          \"description\": \"The node address.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Node address type, one of Hostname, ExternalIP or InternalIP.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"address\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeAffinity\": {\n      \"description\": \"Node affinity is a group of node affinity scheduling rules.\",\n      \"properties\": {\n        \"preferredDuringSchedulingIgnoredDuringExecution\": {\n          \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"requiredDuringSchedulingIgnoredDuringExecution\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelector\",\n          \"description\": \"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeCondition\": {\n      \"description\": \"NodeCondition contains condition information for a node.\",\n      \"properties\": {\n        \"lastHeartbeatTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time we got an update on a given condition.\"\n        },\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition transit from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"Human readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"(brief) reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of node condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeConfigSource\": {\n      \"description\": \"NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22\",\n      \"properties\": {\n        \"configMap\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMapNodeConfigSource\",\n          \"description\": \"ConfigMap is a reference to a Node's ConfigMap\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeConfigStatus\": {\n      \"description\": \"NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.\",\n      \"properties\": {\n        \"active\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeConfigSource\",\n          \"description\": \"Active reports the checkpointed config the node is actively using. Active will represent either the current version of the Assigned config, or the current LastKnownGood config, depending on whether attempting to use the Assigned config results in an error.\"\n        },\n        \"assigned\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeConfigSource\",\n          \"description\": \"Assigned reports the checkpointed config the node will try to use. When Node.Spec.ConfigSource is updated, the node checkpoints the associated config payload to local disk, along with a record indicating intended config. The node refers to this record to choose its config checkpoint, and reports this record in Assigned. Assigned only updates in the status after the record has been checkpointed to disk. When the Kubelet is restarted, it tries to make the Assigned config the Active config by loading and validating the checkpointed payload identified by Assigned.\"\n        },\n        \"error\": {\n          \"description\": \"Error describes any problems reconciling the Spec.ConfigSource to the Active config. Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting to load or validate the Assigned config, etc. Errors may occur at different points while syncing config. Earlier errors (e.g. download or checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error by fixing the config assigned in Spec.ConfigSource. You can find additional information for debugging by searching the error message in the Kubelet log. Error is a human-readable description of the error state; machines can check whether or not Error is empty, but should not rely on the stability of the Error text across Kubelet versions.\",\n          \"type\": \"string\"\n        },\n        \"lastKnownGood\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeConfigSource\",\n          \"description\": \"LastKnownGood reports the checkpointed config the node will fall back to when it encounters an error attempting to use the Assigned config. The Assigned config becomes the LastKnownGood config when the node determines that the Assigned config is stable and correct. This is currently implemented as a 10-minute soak period starting when the local record of Assigned config is updated. If the Assigned config is Active at the end of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil, because the local default config is always assumed good. You should not make assumptions about the node's method of determining config stability and correctness, as this may change or become configurable in the future.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeDaemonEndpoints\": {\n      \"description\": \"NodeDaemonEndpoints lists ports opened by daemons running on the Node.\",\n      \"properties\": {\n        \"kubeletEndpoint\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.DaemonEndpoint\",\n          \"description\": \"Endpoint on which Kubelet is listening.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeFeatures\": {\n      \"description\": \"NodeFeatures describes the set of features implemented by the CRI implementation. The features contained in the NodeFeatures should depend only on the cri implementation independent of runtime handlers.\",\n      \"properties\": {\n        \"supplementalGroupsPolicy\": {\n          \"description\": \"SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeList\": {\n      \"description\": \"NodeList is the whole list of all Nodes which have been registered with master.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of nodes\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"NodeList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.NodeRuntimeHandler\": {\n      \"description\": \"NodeRuntimeHandler is a set of runtime handler information.\",\n      \"properties\": {\n        \"features\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeRuntimeHandlerFeatures\",\n          \"description\": \"Supported features.\"\n        },\n        \"name\": {\n          \"description\": \"Runtime handler name. Empty for the default runtime handler.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeRuntimeHandlerFeatures\": {\n      \"description\": \"NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.\",\n      \"properties\": {\n        \"recursiveReadOnlyMounts\": {\n          \"description\": \"RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"userNamespaces\": {\n          \"description\": \"UserNamespaces is set to true if the runtime handler supports UserNamespaces, including for volumes.\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeSelector\": {\n      \"description\": \"A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.\",\n      \"properties\": {\n        \"nodeSelectorTerms\": {\n          \"description\": \"Required. A list of node selector terms. The terms are ORed.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelectorTerm\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"nodeSelectorTerms\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.NodeSelectorRequirement\": {\n      \"description\": \"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"The label key that the selector applies to.\",\n          \"type\": \"string\"\n        },\n        \"operator\": {\n          \"description\": \"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"operator\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeSelectorTerm\": {\n      \"description\": \"A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.\",\n      \"properties\": {\n        \"matchExpressions\": {\n          \"description\": \"A list of node selector requirements by node's labels.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"matchFields\": {\n          \"description\": \"A list of node selector requirements by node's fields.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.NodeSpec\": {\n      \"description\": \"NodeSpec describes the attributes that a node is created with.\",\n      \"properties\": {\n        \"configSource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeConfigSource\",\n          \"description\": \"Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.\"\n        },\n        \"externalID\": {\n          \"description\": \"Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966\",\n          \"type\": \"string\"\n        },\n        \"podCIDR\": {\n          \"description\": \"PodCIDR represents the pod IP range assigned to the node.\",\n          \"type\": \"string\"\n        },\n        \"podCIDRs\": {\n          \"description\": \"podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for each of IPv4 and IPv6.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"providerID\": {\n          \"description\": \"ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID>\",\n          \"type\": \"string\"\n        },\n        \"taints\": {\n          \"description\": \"If specified, the node's taints.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Taint\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"unschedulable\": {\n          \"description\": \"Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeStatus\": {\n      \"description\": \"NodeStatus is information about the current status of a node.\",\n      \"properties\": {\n        \"addresses\": {\n          \"description\": \"List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses Note: This field is declared as mergeable, but the merge key is not sufficiently unique, which can cause data corruption when it is merged. Callers should instead use a full-replacement patch. See https://pr.k8s.io/79391 for an example. Consumers should assume that addresses can change during the lifetime of a Node. However, there are some exceptions where this may not be possible, such as Pods that inherit a Node's address in its own status or consumers of the downward API (status.hostIP).\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeAddress\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"allocatable\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.\",\n          \"type\": \"object\"\n        },\n        \"capacity\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/reference/node/node-status/#capacity\",\n          \"type\": \"object\"\n        },\n        \"conditions\": {\n          \"description\": \"Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"config\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeConfigStatus\",\n          \"description\": \"Status of the config assigned to the node via the dynamic Kubelet config feature.\"\n        },\n        \"daemonEndpoints\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints\",\n          \"description\": \"Endpoints of daemons running on the Node.\"\n        },\n        \"features\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeFeatures\",\n          \"description\": \"Features describes the set of features implemented by the CRI implementation.\"\n        },\n        \"images\": {\n          \"description\": \"List of container images on this node\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerImage\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"nodeInfo\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSystemInfo\",\n          \"description\": \"Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info\"\n        },\n        \"phase\": {\n          \"description\": \"NodePhase is the recently observed lifecycle phase of the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field is never populated, and now is deprecated.\",\n          \"type\": \"string\"\n        },\n        \"runtimeHandlers\": {\n          \"description\": \"The available runtime handlers.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeRuntimeHandler\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"volumesAttached\": {\n          \"description\": \"List of volumes that are attached to the node.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.AttachedVolume\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"volumesInUse\": {\n          \"description\": \"List of attachable volumes in use (mounted) by the node.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.NodeSystemInfo\": {\n      \"description\": \"NodeSystemInfo is a set of ids/uuids to uniquely identify the node.\",\n      \"properties\": {\n        \"architecture\": {\n          \"description\": \"The Architecture reported by the node\",\n          \"type\": \"string\"\n        },\n        \"bootID\": {\n          \"description\": \"Boot ID reported by the node.\",\n          \"type\": \"string\"\n        },\n        \"containerRuntimeVersion\": {\n          \"description\": \"ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).\",\n          \"type\": \"string\"\n        },\n        \"kernelVersion\": {\n          \"description\": \"Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).\",\n          \"type\": \"string\"\n        },\n        \"kubeProxyVersion\": {\n          \"description\": \"Deprecated: KubeProxy Version reported by the node.\",\n          \"type\": \"string\"\n        },\n        \"kubeletVersion\": {\n          \"description\": \"Kubelet Version reported by the node.\",\n          \"type\": \"string\"\n        },\n        \"machineID\": {\n          \"description\": \"MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html\",\n          \"type\": \"string\"\n        },\n        \"operatingSystem\": {\n          \"description\": \"The Operating System reported by the node\",\n          \"type\": \"string\"\n        },\n        \"osImage\": {\n          \"description\": \"OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).\",\n          \"type\": \"string\"\n        },\n        \"systemUUID\": {\n          \"description\": \"SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"machineID\",\n        \"systemUUID\",\n        \"bootID\",\n        \"kernelVersion\",\n        \"osImage\",\n        \"containerRuntimeVersion\",\n        \"kubeletVersion\",\n        \"kubeProxyVersion\",\n        \"operatingSystem\",\n        \"architecture\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ObjectFieldSelector\": {\n      \"description\": \"ObjectFieldSelector selects an APIVersioned field of an object.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"Version of the schema the FieldPath is written in terms of, defaults to \\\"v1\\\".\",\n          \"type\": \"string\"\n        },\n        \"fieldPath\": {\n          \"description\": \"Path of the field to select in the specified API version.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"fieldPath\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.ObjectReference\": {\n      \"description\": \"ObjectReference contains enough information to let you inspect or modify the referred object.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"API version of the referent.\",\n          \"type\": \"string\"\n        },\n        \"fieldPath\": {\n          \"description\": \"If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \\\"spec.containers{name}\\\" (where \\\"name\\\" refers to the name of the container that triggered the event) or if no container name is specified \\\"spec.containers[2]\\\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/\",\n          \"type\": \"string\"\n        },\n        \"resourceVersion\": {\n          \"description\": \"Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"description\": \"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.PersistentVolume\": {\n      \"description\": \"PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec\",\n          \"description\": \"spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeStatus\",\n          \"description\": \"status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeClaim\": {\n      \"description\": \"PersistentVolumeClaim is a user's request for and claim to a persistent volume\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec\",\n          \"description\": \"spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimStatus\",\n          \"description\": \"status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeClaimCondition\": {\n      \"description\": \"PersistentVolumeClaimCondition contains details about state of pvc\",\n      \"properties\": {\n        \"lastProbeTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastProbeTime is the time we probed the condition.\"\n        },\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastTransitionTime is the time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"message is the human-readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"reason is a unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \\\"Resizing\\\" that means the underlying persistent volume is being resized.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeClaimList\": {\n      \"description\": \"PersistentVolumeClaimList is a list of PersistentVolumeClaim items.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaimList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeClaimSpec\": {\n      \"description\": \"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes\",\n      \"properties\": {\n        \"accessModes\": {\n          \"description\": \"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"dataSource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.TypedLocalObjectReference\",\n          \"description\": \"dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.\"\n        },\n        \"dataSourceRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.TypedObjectReference\",\n          \"description\": \"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef\\n  allows any non-core object, as well as PersistentVolumeClaim objects.\\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\\n  preserves all values, and generates an error if a disallowed value is\\n  specified.\\n* While dataSource only allows local objects, dataSourceRef allows objects\\n  in any namespaces.\\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\"\n        },\n        \"resources\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.VolumeResourceRequirements\",\n          \"description\": \"resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"selector is a label query over volumes to consider for binding.\"\n        },\n        \"storageClassName\": {\n          \"description\": \"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\",\n          \"type\": \"string\"\n        },\n        \"volumeAttributesClassName\": {\n          \"description\": \"volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).\",\n          \"type\": \"string\"\n        },\n        \"volumeMode\": {\n          \"description\": \"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.\",\n          \"type\": \"string\"\n        },\n        \"volumeName\": {\n          \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeClaimStatus\": {\n      \"description\": \"PersistentVolumeClaimStatus is the current status of a persistent volume claim.\",\n      \"properties\": {\n        \"accessModes\": {\n          \"description\": \"accessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"allocatedResourceStatuses\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used.\\n\\nClaimResourceStatus can be in any of following states:\\n\\t- ControllerResizeInProgress:\\n\\t\\tState set when resize controller starts resizing the volume in control-plane.\\n\\t- ControllerResizeFailed:\\n\\t\\tState set when resize has failed in resize controller with a terminal error.\\n\\t- NodeResizePending:\\n\\t\\tState set when resize controller has finished resizing the volume but further resizing of\\n\\t\\tvolume is needed on the node.\\n\\t- NodeResizeInProgress:\\n\\t\\tState set when kubelet starts resizing the volume.\\n\\t- NodeResizeFailed:\\n\\t\\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\\n\\t\\tNodeResizeFailed.\\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\\n\\t- pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"ControllerResizeFailed\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizePending\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeInProgress\\\"\\n     - pvc.status.allocatedResourceStatus['storage'] = \\\"NodeResizeFailed\\\"\\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\\n\\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC.\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n          \"type\": \"object\",\n          \"x-kubernetes-map-type\": \"granular\"\n        },\n        \"allocatedResources\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either:\\n\\t* Un-prefixed keys:\\n\\t\\t- storage - the capacity of the volume.\\n\\t* Custom resources must use implementation-defined prefixed names such as \\\"example.com/my-custom-resource\\\"\\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used.\\n\\nCapacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity.\\n\\nA controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC.\\n\\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.\",\n          \"type\": \"object\"\n        },\n        \"capacity\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"capacity represents the actual resources of the underlying volume.\",\n          \"type\": \"object\"\n        },\n        \"conditions\": {\n          \"description\": \"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'Resizing'.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"currentVolumeAttributesClassName\": {\n          \"description\": \"currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim This is a beta field and requires enabling VolumeAttributesClass feature (off by default).\",\n          \"type\": \"string\"\n        },\n        \"modifyVolumeStatus\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ModifyVolumeStatus\",\n          \"description\": \"ModifyVolumeStatus represents the status object of ControllerModifyVolume operation. When this is unset, there is no ModifyVolume operation being attempted. This is a beta field and requires enabling VolumeAttributesClass feature (off by default).\"\n        },\n        \"phase\": {\n          \"description\": \"phase represents the current phase of PersistentVolumeClaim.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeClaimTemplate\": {\n      \"description\": \"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.\",\n      \"properties\": {\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec\",\n          \"description\": \"The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource\": {\n      \"description\": \"PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).\",\n      \"properties\": {\n        \"claimName\": {\n          \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"claimName\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeList\": {\n      \"description\": \"PersistentVolumeList is a list of PersistentVolume items.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a list of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeSpec\": {\n      \"description\": \"PersistentVolumeSpec is the specification of a persistent volume.\",\n      \"properties\": {\n        \"accessModes\": {\n          \"description\": \"accessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"awsElasticBlockStore\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource\",\n          \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\"\n        },\n        \"azureDisk\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource\",\n          \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\"\n        },\n        \"azureFile\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.AzureFilePersistentVolumeSource\",\n          \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\"\n        },\n        \"capacity\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"capacity is the description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity\",\n          \"type\": \"object\"\n        },\n        \"cephfs\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.CephFSPersistentVolumeSource\",\n          \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\"\n        },\n        \"cinder\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.CinderPersistentVolumeSource\",\n          \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\"\n        },\n        \"claimRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding\",\n          \"x-kubernetes-map-type\": \"granular\"\n        },\n        \"csi\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.CSIPersistentVolumeSource\",\n          \"description\": \"csi represents storage that is handled by an external CSI driver (Beta feature).\"\n        },\n        \"fc\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.FCVolumeSource\",\n          \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\"\n        },\n        \"flexVolume\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.FlexPersistentVolumeSource\",\n          \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\"\n        },\n        \"flocker\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.FlockerVolumeSource\",\n          \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running\"\n        },\n        \"gcePersistentDisk\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource\",\n          \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\"\n        },\n        \"glusterfs\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.GlusterfsPersistentVolumeSource\",\n          \"description\": \"glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: https://examples.k8s.io/volumes/glusterfs/README.md\"\n        },\n        \"hostPath\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.HostPathVolumeSource\",\n          \"description\": \"hostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\"\n        },\n        \"iscsi\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ISCSIPersistentVolumeSource\",\n          \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin.\"\n        },\n        \"local\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalVolumeSource\",\n          \"description\": \"local represents directly-attached storage with node affinity\"\n        },\n        \"mountOptions\": {\n          \"description\": \"mountOptions is the list of mount options, e.g. [\\\"ro\\\", \\\"soft\\\"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"nfs\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NFSVolumeSource\",\n          \"description\": \"nfs represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\"\n        },\n        \"nodeAffinity\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.VolumeNodeAffinity\",\n          \"description\": \"nodeAffinity defines constraints that limit what nodes this volume can be accessed from. This field influences the scheduling of pods that use this volume.\"\n        },\n        \"persistentVolumeReclaimPolicy\": {\n          \"description\": \"persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming\",\n          \"type\": \"string\"\n        },\n        \"photonPersistentDisk\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource\",\n          \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\"\n        },\n        \"portworxVolume\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PortworxVolumeSource\",\n          \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\"\n        },\n        \"quobyte\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource\",\n          \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\"\n        },\n        \"rbd\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.RBDPersistentVolumeSource\",\n          \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md\"\n        },\n        \"scaleIO\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ScaleIOPersistentVolumeSource\",\n          \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\"\n        },\n        \"storageClassName\": {\n          \"description\": \"storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.\",\n          \"type\": \"string\"\n        },\n        \"storageos\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.StorageOSPersistentVolumeSource\",\n          \"description\": \"storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://examples.k8s.io/volumes/storageos/README.md\"\n        },\n        \"volumeAttributesClassName\": {\n          \"description\": \"Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is a beta field and requires enabling VolumeAttributesClass feature (off by default).\",\n          \"type\": \"string\"\n        },\n        \"volumeMode\": {\n          \"description\": \"volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.\",\n          \"type\": \"string\"\n        },\n        \"vsphereVolume\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource\",\n          \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PersistentVolumeStatus\": {\n      \"description\": \"PersistentVolumeStatus is the current status of a persistent volume.\",\n      \"properties\": {\n        \"lastPhaseTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastPhaseTransitionTime is the time the phase transitioned from one to another and automatically resets to current time everytime a volume phase transitions.\"\n        },\n        \"message\": {\n          \"description\": \"message is a human-readable message indicating details about why the volume is in this state.\",\n          \"type\": \"string\"\n        },\n        \"phase\": {\n          \"description\": \"phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource\": {\n      \"description\": \"Represents a Photon Controller persistent disk resource.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n          \"type\": \"string\"\n        },\n        \"pdID\": {\n          \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"pdID\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Pod\": {\n      \"description\": \"Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodSpec\",\n          \"description\": \"Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodStatus\",\n          \"description\": \"Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.PodAffinity\": {\n      \"description\": \"Pod affinity is a group of inter pod affinity scheduling rules.\",\n      \"properties\": {\n        \"preferredDuringSchedulingIgnoredDuringExecution\": {\n          \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"requiredDuringSchedulingIgnoredDuringExecution\": {\n          \"description\": \"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodAffinityTerm\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodAffinityTerm\": {\n      \"description\": \"Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running\",\n      \"properties\": {\n        \"labelSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.\"\n        },\n        \"matchLabelKeys\": {\n          \"description\": \"MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"mismatchLabelKeys\": {\n          \"description\": \"MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"namespaceSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \\\"this pod's namespace\\\". An empty selector ({}) matches all namespaces.\"\n        },\n        \"namespaces\": {\n          \"description\": \"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"topologyKey\": {\n          \"description\": \"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"topologyKey\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodAntiAffinity\": {\n      \"description\": \"Pod anti affinity is a group of inter pod anti affinity scheduling rules.\",\n      \"properties\": {\n        \"preferredDuringSchedulingIgnoredDuringExecution\": {\n          \"description\": \"The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \\\"weight\\\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"requiredDuringSchedulingIgnoredDuringExecution\": {\n          \"description\": \"If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodAffinityTerm\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodCondition\": {\n      \"description\": \"PodCondition contains details for the current condition of this pod.\",\n      \"properties\": {\n        \"lastProbeTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time we probed the condition.\"\n        },\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"Human-readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"Unique, one-word, CamelCase reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status is the status of the condition. Can be True, False, Unknown. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodDNSConfig\": {\n      \"description\": \"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.\",\n      \"properties\": {\n        \"nameservers\": {\n          \"description\": \"A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"options\": {\n          \"description\": \"A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodDNSConfigOption\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"searches\": {\n          \"description\": \"A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodDNSConfigOption\": {\n      \"description\": \"PodDNSConfigOption defines DNS resolver options of a pod.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Required.\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodIP\": {\n      \"description\": \"PodIP represents a single IP address allocated to the pod.\",\n      \"properties\": {\n        \"ip\": {\n          \"description\": \"IP is the IP address assigned to the pod\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"ip\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodList\": {\n      \"description\": \"PodList is a list of Pods.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"PodList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.PodOS\": {\n      \"description\": \"PodOS defines the OS parameters of a pod.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name is the name of the operating system. The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodReadinessGate\": {\n      \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n      \"properties\": {\n        \"conditionType\": {\n          \"description\": \"ConditionType refers to a condition in the pod's condition list with matching type.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"conditionType\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodResourceClaim\": {\n      \"description\": \"PodResourceClaim references exactly one ResourceClaim, either directly or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim for the pod.\\n\\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod. Containers that need access to the ResourceClaim reference it with this name.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name uniquely identifies this resource claim inside the pod. This must be a DNS_LABEL.\",\n          \"type\": \"string\"\n        },\n        \"resourceClaimName\": {\n          \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod.\\n\\nExactly one of ResourceClaimName and ResourceClaimTemplateName must be set.\",\n          \"type\": \"string\"\n        },\n        \"resourceClaimTemplateName\": {\n          \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod.\\n\\nThe template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\\n\\nThis field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim.\\n\\nExactly one of ResourceClaimName and ResourceClaimTemplateName must be set.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodResourceClaimStatus\": {\n      \"description\": \"PodResourceClaimStatus is stored in the PodStatus for each PodResourceClaim which references a ResourceClaimTemplate. It stores the generated name for the corresponding ResourceClaim.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name uniquely identifies this resource claim inside the pod. This must match the name of an entry in pod.spec.resourceClaims, which implies that the string must be a DNS_LABEL.\",\n          \"type\": \"string\"\n        },\n        \"resourceClaimName\": {\n          \"description\": \"ResourceClaimName is the name of the ResourceClaim that was generated for the Pod in the namespace of the Pod. If this is unset, then generating a ResourceClaim was not necessary. The pod.spec.resourceClaims entry can be ignored in this case.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodSchedulingGate\": {\n      \"description\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name of the scheduling gate. Each scheduling gate must have a unique name field.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodSecurityContext\": {\n      \"description\": \"PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext.  Field values of container.securityContext take precedence over field values of PodSecurityContext.\",\n      \"properties\": {\n        \"appArmorProfile\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.AppArmorProfile\",\n          \"description\": \"appArmorProfile is the AppArmor options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\"\n        },\n        \"fsGroup\": {\n          \"description\": \"A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\\n\\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"fsGroupChangePolicy\": {\n          \"description\": \"fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \\\"OnRootMismatch\\\" and \\\"Always\\\". If not specified, \\\"Always\\\" is used. Note that this field cannot be set when spec.os.name is windows.\",\n          \"type\": \"string\"\n        },\n        \"runAsGroup\": {\n          \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"runAsNonRoot\": {\n          \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n          \"type\": \"boolean\"\n        },\n        \"runAsUser\": {\n          \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"seLinuxOptions\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SELinuxOptions\",\n          \"description\": \"The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.\"\n        },\n        \"seccompProfile\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SeccompProfile\",\n          \"description\": \"The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.\"\n        },\n        \"supplementalGroups\": {\n          \"description\": \"A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified).  If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.\",\n          \"items\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"supplementalGroupsPolicy\": {\n          \"description\": \"Defines how supplemental groups of the first container processes are calculated. Valid values are \\\"Merge\\\" and \\\"Strict\\\". If not specified, \\\"Merge\\\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.\",\n          \"type\": \"string\"\n        },\n        \"sysctls\": {\n          \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Sysctl\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"windowsOptions\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions\",\n          \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodSpec\": {\n      \"description\": \"PodSpec is a description of a pod.\",\n      \"properties\": {\n        \"activeDeadlineSeconds\": {\n          \"description\": \"Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"affinity\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Affinity\",\n          \"description\": \"If specified, the pod's scheduling constraints\"\n        },\n        \"automountServiceAccountToken\": {\n          \"description\": \"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.\",\n          \"type\": \"boolean\"\n        },\n        \"containers\": {\n          \"description\": \"List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Container\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"dnsConfig\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodDNSConfig\",\n          \"description\": \"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.\"\n        },\n        \"dnsPolicy\": {\n          \"description\": \"Set DNS policy for the pod. Defaults to \\\"ClusterFirst\\\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.\",\n          \"type\": \"string\"\n        },\n        \"enableServiceLinks\": {\n          \"description\": \"EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.\",\n          \"type\": \"boolean\"\n        },\n        \"ephemeralContainers\": {\n          \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.EphemeralContainer\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"hostAliases\": {\n          \"description\": \"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.HostAlias\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"ip\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"ip\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"hostIPC\": {\n          \"description\": \"Use the host's ipc namespace. Optional: Default to false.\",\n          \"type\": \"boolean\"\n        },\n        \"hostNetwork\": {\n          \"description\": \"Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.\",\n          \"type\": \"boolean\"\n        },\n        \"hostPID\": {\n          \"description\": \"Use the host's pid namespace. Optional: Default to false.\",\n          \"type\": \"boolean\"\n        },\n        \"hostUsers\": {\n          \"description\": \"Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\",\n          \"type\": \"boolean\"\n        },\n        \"hostname\": {\n          \"description\": \"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.\",\n          \"type\": \"string\"\n        },\n        \"imagePullSecrets\": {\n          \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"initContainers\": {\n          \"description\": \"List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Container\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"nodeName\": {\n          \"description\": \"NodeName indicates in which node this pod is scheduled. If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName. Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod. This field should not be used to express a desire for the pod to be scheduled on a specific node. https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename\",\n          \"type\": \"string\"\n        },\n        \"nodeSelector\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/\",\n          \"type\": \"object\",\n          \"x-kubernetes-map-type\": \"atomic\"\n        },\n        \"os\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodOS\",\n          \"description\": \"Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\\n\\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\\n\\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup\"\n        },\n        \"overhead\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md\",\n          \"type\": \"object\"\n        },\n        \"preemptionPolicy\": {\n          \"description\": \"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.\",\n          \"type\": \"string\"\n        },\n        \"priority\": {\n          \"description\": \"The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"priorityClassName\": {\n          \"description\": \"If specified, indicates the pod's priority. \\\"system-node-critical\\\" and \\\"system-cluster-critical\\\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.\",\n          \"type\": \"string\"\n        },\n        \"readinessGates\": {\n          \"description\": \"If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \\\"True\\\" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodReadinessGate\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceClaims\": {\n          \"description\": \"ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. The resources will be made available to those containers which consume them by name.\\n\\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\\n\\nThis field is immutable.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodResourceClaim\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge,retainKeys\"\n        },\n        \"restartPolicy\": {\n          \"description\": \"Restart policy for all containers within the pod. One of Always, OnFailure, Never. In some contexts, only a subset of those values may be permitted. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\",\n          \"type\": \"string\"\n        },\n        \"runtimeClassName\": {\n          \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod.  If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\",\n          \"type\": \"string\"\n        },\n        \"schedulerName\": {\n          \"description\": \"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.\",\n          \"type\": \"string\"\n        },\n        \"schedulingGates\": {\n          \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod. If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod.\\n\\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodSchedulingGate\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"securityContext\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodSecurityContext\",\n          \"description\": \"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty.  See type description for default values of each field.\"\n        },\n        \"serviceAccount\": {\n          \"description\": \"DeprecatedServiceAccount is a deprecated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.\",\n          \"type\": \"string\"\n        },\n        \"serviceAccountName\": {\n          \"description\": \"ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n          \"type\": \"string\"\n        },\n        \"setHostnameAsFQDN\": {\n          \"description\": \"If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\\\SYSTEM\\\\CurrentControlSet\\\\Services\\\\Tcpip\\\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.\",\n          \"type\": \"boolean\"\n        },\n        \"shareProcessNamespace\": {\n          \"description\": \"Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.\",\n          \"type\": \"boolean\"\n        },\n        \"subdomain\": {\n          \"description\": \"If specified, the fully qualified Pod hostname will be \\\"<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>\\\". If not specified, the pod will not have a domainname at all.\",\n          \"type\": \"string\"\n        },\n        \"terminationGracePeriodSeconds\": {\n          \"description\": \"Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"tolerations\": {\n          \"description\": \"If specified, the pod's tolerations.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Toleration\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"topologySpreadConstraints\": {\n          \"description\": \"TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.TopologySpreadConstraint\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"topologyKey\",\n            \"whenUnsatisfiable\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"topologyKey\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"volumes\": {\n          \"description\": \"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Volume\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge,retainKeys\"\n        }\n      },\n      \"required\": [\n        \"containers\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodStatus\": {\n      \"description\": \"PodStatus represents information about the status of a pod. Status may trail the actual state of a system, especially if the node that hosts the pod cannot contact the control plane.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"containerStatuses\": {\n          \"description\": \"The list has one entry per container in the manifest. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"ephemeralContainerStatuses\": {\n          \"description\": \"Status for any ephemeral containers that have run in this pod.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"hostIP\": {\n          \"description\": \"hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will not be updated even if there is a node is assigned to pod\",\n          \"type\": \"string\"\n        },\n        \"hostIPs\": {\n          \"description\": \"hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must match the hostIP field. This list is empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will not be updated even if there is a node is assigned to this pod.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.HostIP\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\",\n          \"x-kubernetes-patch-merge-key\": \"ip\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"initContainerStatuses\": {\n          \"description\": \"The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ContainerStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"message\": {\n          \"description\": \"A human readable message indicating details about why the pod is in this condition.\",\n          \"type\": \"string\"\n        },\n        \"nominatedNodeName\": {\n          \"description\": \"nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be scheduled right away as preemption victims receive their graceful termination periods. This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to give the resources on this node to a higher priority pod that is created after preemption. As a result, this field may be different than PodSpec.nodeName when the pod is scheduled.\",\n          \"type\": \"string\"\n        },\n        \"phase\": {\n          \"description\": \"The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod's status. There are five possible phase values:\\n\\nPending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\\n\\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase\",\n          \"type\": \"string\"\n        },\n        \"podIP\": {\n          \"description\": \"podIP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.\",\n          \"type\": \"string\"\n        },\n        \"podIPs\": {\n          \"description\": \"podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodIP\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"ip\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"ip\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"qosClass\": {\n          \"description\": \"The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'\",\n          \"type\": \"string\"\n        },\n        \"resize\": {\n          \"description\": \"Status of resources resize desired for pod's containers. It is empty if no resources resize is pending. Any changes to container resources will automatically set this to \\\"Proposed\\\"\",\n          \"type\": \"string\"\n        },\n        \"resourceClaimStatuses\": {\n          \"description\": \"Status of resource claims.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodResourceClaimStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge,retainKeys\"\n        },\n        \"startTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PodTemplate\": {\n      \"description\": \"PodTemplate describes a template for creating copies of a predefined pod.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"template\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateSpec\",\n          \"description\": \"Template defines the pods that will be created from this pod template. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.PodTemplateList\": {\n      \"description\": \"PodTemplateList is a list of PodTemplates.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of pod templates\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"PodTemplateList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.PodTemplateSpec\": {\n      \"description\": \"PodTemplateSpec describes the data a pod should have when created from a template\",\n      \"properties\": {\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodSpec\",\n          \"description\": \"Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PortStatus\": {\n      \"properties\": {\n        \"error\": {\n          \"description\": \"Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use\\n  CamelCase names\\n- cloud provider specific error values must have names that comply with the\\n  format foo.example.com/CamelCase.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"description\": \"Port is the port number of the service port of which status is recorded here\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"protocol\": {\n          \"description\": \"Protocol is the protocol of the service port of which status is recorded here The supported values are: \\\"TCP\\\", \\\"UDP\\\", \\\"SCTP\\\"\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"port\",\n        \"protocol\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PortworxVolumeSource\": {\n      \"description\": \"PortworxVolumeSource represents a Portworx volume resource.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"volumeID\": {\n          \"description\": \"volumeID uniquely identifies a Portworx volume\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"volumeID\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.PreferredSchedulingTerm\": {\n      \"description\": \"An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).\",\n      \"properties\": {\n        \"preference\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelectorTerm\",\n          \"description\": \"A node selector term, associated with the corresponding weight.\"\n        },\n        \"weight\": {\n          \"description\": \"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"weight\",\n        \"preference\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Probe\": {\n      \"description\": \"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.\",\n      \"properties\": {\n        \"exec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ExecAction\",\n          \"description\": \"Exec specifies the action to take.\"\n        },\n        \"failureThreshold\": {\n          \"description\": \"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"grpc\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.GRPCAction\",\n          \"description\": \"GRPC specifies an action involving a GRPC port.\"\n        },\n        \"httpGet\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.HTTPGetAction\",\n          \"description\": \"HTTPGet specifies the http request to perform.\"\n        },\n        \"initialDelaySeconds\": {\n          \"description\": \"Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"periodSeconds\": {\n          \"description\": \"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"successThreshold\": {\n          \"description\": \"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"tcpSocket\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.TCPSocketAction\",\n          \"description\": \"TCPSocket specifies an action involving a TCP port.\"\n        },\n        \"terminationGracePeriodSeconds\": {\n          \"description\": \"Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"timeoutSeconds\": {\n          \"description\": \"Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ProjectedVolumeSource\": {\n      \"description\": \"Represents a projected volume source\",\n      \"properties\": {\n        \"defaultMode\": {\n          \"description\": \"defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"sources\": {\n          \"description\": \"sources is the list of volume projections. Each entry in this list handles one source.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.VolumeProjection\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.QuobyteVolumeSource\": {\n      \"description\": \"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.\",\n      \"properties\": {\n        \"group\": {\n          \"description\": \"group to map volume access to Default is no group\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.\",\n          \"type\": \"boolean\"\n        },\n        \"registry\": {\n          \"description\": \"registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes\",\n          \"type\": \"string\"\n        },\n        \"tenant\": {\n          \"description\": \"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin\",\n          \"type\": \"string\"\n        },\n        \"user\": {\n          \"description\": \"user to map volume access to Defaults to serivceaccount user\",\n          \"type\": \"string\"\n        },\n        \"volume\": {\n          \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"registry\",\n        \"volume\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.RBDPersistentVolumeSource\": {\n      \"description\": \"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\",\n          \"type\": \"string\"\n        },\n        \"image\": {\n          \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        },\n        \"keyring\": {\n          \"description\": \"keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        },\n        \"monitors\": {\n          \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"pool\": {\n          \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\"\n        },\n        \"user\": {\n          \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"monitors\",\n        \"image\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.RBDVolumeSource\": {\n      \"description\": \"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\",\n          \"type\": \"string\"\n        },\n        \"image\": {\n          \"description\": \"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        },\n        \"keyring\": {\n          \"description\": \"keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        },\n        \"monitors\": {\n          \"description\": \"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"pool\": {\n          \"description\": \"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\",\n          \"description\": \"secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\"\n        },\n        \"user\": {\n          \"description\": \"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"monitors\",\n        \"image\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ReplicationController\": {\n      \"description\": \"ReplicationController represents the configuration of a replication controller.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationControllerSpec\",\n          \"description\": \"Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationControllerStatus\",\n          \"description\": \"Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ReplicationControllerCondition\": {\n      \"description\": \"ReplicationControllerCondition describes the state of a replication controller at a certain point.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"The last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"A human readable message indicating details about the transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"The reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of replication controller condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ReplicationControllerList\": {\n      \"description\": \"ReplicationControllerList is a collection of replication controllers.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ReplicationControllerList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ReplicationControllerSpec\": {\n      \"description\": \"ReplicationControllerSpec is the specification of a replication controller.\",\n      \"properties\": {\n        \"minReadySeconds\": {\n          \"description\": \"Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"replicas\": {\n          \"description\": \"Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"selector\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors\",\n          \"type\": \"object\",\n          \"x-kubernetes-map-type\": \"atomic\"\n        },\n        \"template\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateSpec\",\n          \"description\": \"Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. The only allowed template.spec.restartPolicy value is \\\"Always\\\". More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ReplicationControllerStatus\": {\n      \"description\": \"ReplicationControllerStatus represents the current status of a replication controller.\",\n      \"properties\": {\n        \"availableReplicas\": {\n          \"description\": \"The number of available replicas (ready for at least minReadySeconds) for this replication controller.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"conditions\": {\n          \"description\": \"Represents the latest available observations of a replication controller's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationControllerCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"fullyLabeledReplicas\": {\n          \"description\": \"The number of pods that have labels matching the labels of the pod template of the replication controller.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"ObservedGeneration reflects the generation of the most recently observed replication controller.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"readyReplicas\": {\n          \"description\": \"The number of ready replicas for this replication controller.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"replicas\": {\n          \"description\": \"Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"replicas\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ResourceClaim\": {\n      \"description\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.\",\n          \"type\": \"string\"\n        },\n        \"request\": {\n          \"description\": \"Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ResourceFieldSelector\": {\n      \"description\": \"ResourceFieldSelector represents container resources (cpu, memory) and their output format\",\n      \"properties\": {\n        \"containerName\": {\n          \"description\": \"Container name: required for volumes, optional for env vars\",\n          \"type\": \"string\"\n        },\n        \"divisor\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\",\n          \"description\": \"Specifies the output format of the exposed resources, defaults to \\\"1\\\"\"\n        },\n        \"resource\": {\n          \"description\": \"Required: resource to select\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"resource\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.ResourceHealth\": {\n      \"description\": \"ResourceHealth represents the health of a resource. It has the latest device health information. This is a part of KEP https://kep.k8s.io/4680 and historical health changes are planned to be added in future iterations of a KEP.\",\n      \"properties\": {\n        \"health\": {\n          \"description\": \"Health of the resource. can be one of:\\n - Healthy: operates as normal\\n - Unhealthy: reported unhealthy. We consider this a temporary health issue\\n              since we do not have a mechanism today to distinguish\\n              temporary and permanent issues.\\n - Unknown: The status cannot be determined.\\n            For example, Device Plugin got unregistered and hasn't been re-registered since.\\n\\nIn future we may want to introduce the PermanentlyUnhealthy Status.\",\n          \"type\": \"string\"\n        },\n        \"resourceID\": {\n          \"description\": \"ResourceID is the unique identifier of the resource. See the ResourceID type for more information.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"resourceID\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ResourceQuota\": {\n      \"description\": \"ResourceQuota sets aggregate quota restrictions enforced per namespace\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuotaSpec\",\n          \"description\": \"Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuotaStatus\",\n          \"description\": \"Status defines the actual enforced quota and its current usage. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ResourceQuotaList\": {\n      \"description\": \"ResourceQuotaList is a list of ResourceQuota items.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuotaList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ResourceQuotaSpec\": {\n      \"description\": \"ResourceQuotaSpec defines the desired hard limits to enforce for Quota.\",\n      \"properties\": {\n        \"hard\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\",\n          \"type\": \"object\"\n        },\n        \"scopeSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ScopeSelector\",\n          \"description\": \"scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota but expressed using ScopeSelectorOperator in combination with possible values. For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.\"\n        },\n        \"scopes\": {\n          \"description\": \"A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ResourceQuotaStatus\": {\n      \"description\": \"ResourceQuotaStatus defines the enforced hard limits and observed use.\",\n      \"properties\": {\n        \"hard\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/\",\n          \"type\": \"object\"\n        },\n        \"used\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Used is the current observed total usage of the resource in the namespace.\",\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ResourceRequirements\": {\n      \"description\": \"ResourceRequirements describes the compute resource requirements.\",\n      \"properties\": {\n        \"claims\": {\n          \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.\\n\\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\\n\\nThis field is immutable. It can only be set for containers.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceClaim\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        },\n        \"limits\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n          \"type\": \"object\"\n        },\n        \"requests\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ResourceStatus\": {\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name of the resource. Must be unique within the pod and match one of the resources from the pod spec.\",\n          \"type\": \"string\"\n        },\n        \"resources\": {\n          \"description\": \"List of unique Resources health. Each element in the list contains an unique resource ID and resource health. At a minimum, ResourceID must uniquely identify the Resource allocated to the Pod on the Node for the lifetime of a Pod. See ResourceID type for it's definition.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceHealth\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"resourceID\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.SELinuxOptions\": {\n      \"description\": \"SELinuxOptions are the labels to be applied to the container\",\n      \"properties\": {\n        \"level\": {\n          \"description\": \"Level is SELinux level label that applies to the container.\",\n          \"type\": \"string\"\n        },\n        \"role\": {\n          \"description\": \"Role is a SELinux role label that applies to the container.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type is a SELinux type label that applies to the container.\",\n          \"type\": \"string\"\n        },\n        \"user\": {\n          \"description\": \"User is a SELinux user label that applies to the container.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ScaleIOPersistentVolumeSource\": {\n      \"description\": \"ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Default is \\\"xfs\\\"\",\n          \"type\": \"string\"\n        },\n        \"gateway\": {\n          \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n          \"type\": \"string\"\n        },\n        \"protectionDomain\": {\n          \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretReference\",\n          \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\"\n        },\n        \"sslEnabled\": {\n          \"description\": \"sslEnabled is the flag to enable/disable SSL communication with Gateway, default false\",\n          \"type\": \"boolean\"\n        },\n        \"storageMode\": {\n          \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n          \"type\": \"string\"\n        },\n        \"storagePool\": {\n          \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n          \"type\": \"string\"\n        },\n        \"volumeName\": {\n          \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"gateway\",\n        \"system\",\n        \"secretRef\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ScaleIOVolumeSource\": {\n      \"description\": \"ScaleIOVolumeSource represents a persistent ScaleIO volume\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Default is \\\"xfs\\\".\",\n          \"type\": \"string\"\n        },\n        \"gateway\": {\n          \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n          \"type\": \"string\"\n        },\n        \"protectionDomain\": {\n          \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\",\n          \"description\": \"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.\"\n        },\n        \"sslEnabled\": {\n          \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\",\n          \"type\": \"boolean\"\n        },\n        \"storageMode\": {\n          \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.\",\n          \"type\": \"string\"\n        },\n        \"storagePool\": {\n          \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n          \"type\": \"string\"\n        },\n        \"volumeName\": {\n          \"description\": \"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"gateway\",\n        \"system\",\n        \"secretRef\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ScopeSelector\": {\n      \"description\": \"A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.\",\n      \"properties\": {\n        \"matchExpressions\": {\n          \"description\": \"A list of scope selector requirements by scope of the resources.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ScopedResourceSelectorRequirement\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.ScopedResourceSelectorRequirement\": {\n      \"description\": \"A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values.\",\n      \"properties\": {\n        \"operator\": {\n          \"description\": \"Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.\",\n          \"type\": \"string\"\n        },\n        \"scopeName\": {\n          \"description\": \"The name of the scope that the selector applies to.\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"description\": \"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"scopeName\",\n        \"operator\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.SeccompProfile\": {\n      \"description\": \"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.\",\n      \"properties\": {\n        \"localhostProfile\": {\n          \"description\": \"localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is \\\"Localhost\\\". Must NOT be set for any other type.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"type indicates which kind of seccomp profile will be applied. Valid options are:\\n\\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-unions\": [\n        {\n          \"discriminator\": \"type\",\n          \"fields-to-discriminateBy\": {\n            \"localhostProfile\": \"LocalhostProfile\"\n          }\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.Secret\": {\n      \"description\": \"Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"data\": {\n          \"additionalProperties\": {\n            \"format\": \"byte\",\n            \"type\": \"string\"\n          },\n          \"description\": \"Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4\",\n          \"type\": \"object\"\n        },\n        \"immutable\": {\n          \"description\": \"Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.\",\n          \"type\": \"boolean\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"stringData\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"stringData allows specifying non-binary secret data in string form. It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API.\",\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"description\": \"Used to facilitate programmatic handling of secret data. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.SecretEnvSource\": {\n      \"description\": \"SecretEnvSource selects a Secret to populate the environment variables with.\\n\\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"description\": \"Specify whether the Secret must be defined\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.SecretKeySelector\": {\n      \"description\": \"SecretKeySelector selects a key of a Secret.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"The key of the secret to select from.  Must be a valid secret key.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"description\": \"Specify whether the Secret or its key must be defined\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"key\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.SecretList\": {\n      \"description\": \"SecretList is a list of Secret.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"SecretList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.SecretProjection\": {\n      \"description\": \"Adapts a secret into a projected volume.\\n\\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.\",\n      \"properties\": {\n        \"items\": {\n          \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.KeyToPath\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"name\": {\n          \"description\": \"Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"optional\": {\n          \"description\": \"optional field specify whether the Secret or its key must be defined\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.SecretReference\": {\n      \"description\": \"SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is unique within a namespace to reference a secret resource.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"namespace defines the space within which the secret name must be unique.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.SecretVolumeSource\": {\n      \"description\": \"Adapts a Secret into a volume.\\n\\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.\",\n      \"properties\": {\n        \"defaultMode\": {\n          \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"items\": {\n          \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.KeyToPath\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"optional\": {\n          \"description\": \"optional field specify whether the Secret or its keys must be defined\",\n          \"type\": \"boolean\"\n        },\n        \"secretName\": {\n          \"description\": \"secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.SecurityContext\": {\n      \"description\": \"SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext.  When both are set, the values in SecurityContext take precedence.\",\n      \"properties\": {\n        \"allowPrivilegeEscalation\": {\n          \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.\",\n          \"type\": \"boolean\"\n        },\n        \"appArmorProfile\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.AppArmorProfile\",\n          \"description\": \"appArmorProfile is the AppArmor options to use by this container. If set, this profile overrides the pod's appArmorProfile. Note that this field cannot be set when spec.os.name is windows.\"\n        },\n        \"capabilities\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.Capabilities\",\n          \"description\": \"The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.\"\n        },\n        \"privileged\": {\n          \"description\": \"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.\",\n          \"type\": \"boolean\"\n        },\n        \"procMount\": {\n          \"description\": \"procMount denotes the type of proc mount to use for the containers. The default value is Default which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.\",\n          \"type\": \"string\"\n        },\n        \"readOnlyRootFilesystem\": {\n          \"description\": \"Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.\",\n          \"type\": \"boolean\"\n        },\n        \"runAsGroup\": {\n          \"description\": \"The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"runAsNonRoot\": {\n          \"description\": \"Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n          \"type\": \"boolean\"\n        },\n        \"runAsUser\": {\n          \"description\": \"The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"seLinuxOptions\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SELinuxOptions\",\n          \"description\": \"The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.\"\n        },\n        \"seccompProfile\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SeccompProfile\",\n          \"description\": \"The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.\"\n        },\n        \"windowsOptions\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions\",\n          \"description\": \"The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Service\": {\n      \"description\": \"Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceSpec\",\n          \"description\": \"Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceStatus\",\n          \"description\": \"Most recently observed status of the service. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ServiceAccount\": {\n      \"description\": \"ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"automountServiceAccountToken\": {\n          \"description\": \"AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.\",\n          \"type\": \"boolean\"\n        },\n        \"imagePullSecrets\": {\n          \"description\": \"ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"secrets\": {\n          \"description\": \"Secrets is a list of the secrets in the same namespace that pods running using this ServiceAccount are allowed to use. Pods are only limited to this list if this service account has a \\\"kubernetes.io/enforce-mountable-secrets\\\" annotation set to \\\"true\\\". This field should not be used to find auto-generated service account token secrets for use outside of pods. Instead, tokens can be requested directly using the TokenRequest API, or service account token secrets can be manually created. More info: https://kubernetes.io/docs/concepts/configuration/secret\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ServiceAccountList\": {\n      \"description\": \"ServiceAccountList is a list of ServiceAccount objects\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccountList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ServiceAccountTokenProjection\": {\n      \"description\": \"ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).\",\n      \"properties\": {\n        \"audience\": {\n          \"description\": \"audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.\",\n          \"type\": \"string\"\n        },\n        \"expirationSeconds\": {\n          \"description\": \"expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"path\": {\n          \"description\": \"path is the path relative to the mount point of the file to project the token into.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"path\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ServiceList\": {\n      \"description\": \"ServiceList holds a list of services.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"List of services\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"ServiceList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.core.v1.ServicePort\": {\n      \"description\": \"ServicePort contains information on service's port.\",\n      \"properties\": {\n        \"appProtocol\": {\n          \"description\": \"The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either:\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n* Kubernetes-defined prefixed names:\\n  * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n  * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n  * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n* Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service.\",\n          \"type\": \"string\"\n        },\n        \"nodePort\": {\n          \"description\": \"The port on each node on which this service is exposed when type is NodePort or LoadBalancer.  Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail.  If not specified, a port will be allocated if this Service requires one.  If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"port\": {\n          \"description\": \"The port that will be exposed by this service.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"protocol\": {\n          \"description\": \"The IP protocol for this port. Supports \\\"TCP\\\", \\\"UDP\\\", and \\\"SCTP\\\". Default is TCP.\",\n          \"type\": \"string\"\n        },\n        \"targetPort\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service\"\n        }\n      },\n      \"required\": [\n        \"port\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ServiceSpec\": {\n      \"description\": \"ServiceSpec describes the attributes that a user creates on a service.\",\n      \"properties\": {\n        \"allocateLoadBalancerNodePorts\": {\n          \"description\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer.  Default is \\\"true\\\". It may be set to \\\"false\\\" if the cluster load-balancer does not rely on NodePorts.  If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type.\",\n          \"type\": \"boolean\"\n        },\n        \"clusterIP\": {\n          \"description\": \"clusterIP is the IP address of the service and is usually assigned randomly. If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be blank) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above).  Valid values are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required.  Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n          \"type\": \"string\"\n        },\n        \"clusterIPs\": {\n          \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are usually assigned randomly.  If an address is specified manually, is in-range (as per system configuration), and is not in use, it will be allocated to the service; otherwise creation of the service will fail. This field may not be changed through updates unless the type field is also being changed to ExternalName (which requires this field to be empty) or the type field is being changed from ExternalName (in which case this field may optionally be specified, as describe above).  Valid values are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address.  Setting this to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is useful when direct endpoint connections are preferred and proxying is not required.  Only applies to types ClusterIP, NodePort, and LoadBalancer. If this field is specified when creating a Service of type ExternalName, creation will fail. This field will be wiped when updating a Service to type ExternalName.  If this field is not specified, it will be initialized from the clusterIP field.  If this field is specified, clients must ensure that clusterIPs[0] and clusterIP have the same value.\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order). These IPs must correspond to the values of the ipFamilies field. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"externalIPs\": {\n          \"description\": \"externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service.  These IPs are not managed by Kubernetes.  The user is responsible for ensuring that traffic arrives at a node with this IP.  A common example is external load-balancers that are not part of the Kubernetes system.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"externalName\": {\n          \"description\": \"externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved.  Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be \\\"ExternalName\\\".\",\n          \"type\": \"string\"\n        },\n        \"externalTrafficPolicy\": {\n          \"description\": \"externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get \\\"Cluster\\\" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node.\",\n          \"type\": \"string\"\n        },\n        \"healthCheckNodePort\": {\n          \"description\": \"healthCheckNodePort specifies the healthcheck nodePort for the service. This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used.  If not specified, a value will be automatically allocated.  External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not.  If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type). This field cannot be updated once set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"internalTrafficPolicy\": {\n          \"description\": \"InternalTrafficPolicy describes how nodes distribute service traffic they receive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods only want to talk to endpoints of the service on the same node as the pod, dropping the traffic if there are no local endpoints. The default value, \\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features).\",\n          \"type\": \"string\"\n        },\n        \"ipFamilies\": {\n          \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are \\\"IPv4\\\" and \\\"IPv6\\\".  This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to \\\"headless\\\" services. This field will be wiped when updating a Service to type ExternalName.\\n\\nThis field may hold a maximum of two entries (dual-stack families, in either order).  These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"ipFamilyPolicy\": {\n          \"description\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by this Service. If there is no value provided, then this field will be set to SingleStack. Services can be \\\"SingleStack\\\" (a single IP family), \\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or \\\"RequireDualStack\\\" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName.\",\n          \"type\": \"string\"\n        },\n        \"loadBalancerClass\": {\n          \"description\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to. If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\",\n          \"type\": \"string\"\n        },\n        \"loadBalancerIP\": {\n          \"description\": \"Only applies to Service Type: LoadBalancer. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature. Deprecated: This field was under-specified and its meaning varies across implementations. Using it is non-portable and it may not support dual-stack. Users are encouraged to use implementation-specific annotations when available.\",\n          \"type\": \"string\"\n        },\n        \"loadBalancerSourceRanges\": {\n          \"description\": \"If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\\\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"ports\": {\n          \"description\": \"The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServicePort\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"port\",\n            \"protocol\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"port\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"publishNotReadyAddresses\": {\n          \"description\": \"publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered \\\"ready\\\" even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior.\",\n          \"type\": \"boolean\"\n        },\n        \"selector\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/\",\n          \"type\": \"object\",\n          \"x-kubernetes-map-type\": \"atomic\"\n        },\n        \"sessionAffinity\": {\n          \"description\": \"Supports \\\"ClientIP\\\" and \\\"None\\\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\",\n          \"type\": \"string\"\n        },\n        \"sessionAffinityConfig\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SessionAffinityConfig\",\n          \"description\": \"sessionAffinityConfig contains the configurations of session affinity.\"\n        },\n        \"trafficDistribution\": {\n          \"description\": \"TrafficDistribution offers a way to express preferences for how traffic is distributed to Service endpoints. Implementations can use this field as a hint, but are not required to guarantee strict adherence. If the field is not set, the implementation will apply its default routing strategy. If set to \\\"PreferClose\\\", implementations should prioritize endpoints that are topologically close (e.g., same zone). This is an alpha field and requires enabling ServiceTrafficDistribution feature.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \\\"ClusterIP\\\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object or EndpointSlice objects. If clusterIP is \\\"None\\\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a virtual IP. \\\"NodePort\\\" builds on ClusterIP and allocates a port on every node which routes to the same endpoints as the clusterIP. \\\"LoadBalancer\\\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the same endpoints as the clusterIP. \\\"ExternalName\\\" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.ServiceStatus\": {\n      \"description\": \"ServiceStatus represents the current status of a service.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"Current service state\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"loadBalancer\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LoadBalancerStatus\",\n          \"description\": \"LoadBalancer contains the current status of the load-balancer, if one is present.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.SessionAffinityConfig\": {\n      \"description\": \"SessionAffinityConfig represents the configurations of session affinity.\",\n      \"properties\": {\n        \"clientIP\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ClientIPConfig\",\n          \"description\": \"clientIP contains the configurations of Client IP based session affinity.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.SleepAction\": {\n      \"description\": \"SleepAction describes a \\\"sleep\\\" action.\",\n      \"properties\": {\n        \"seconds\": {\n          \"description\": \"Seconds is the number of seconds to sleep.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"seconds\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.StorageOSPersistentVolumeSource\": {\n      \"description\": \"Represents a StorageOS persistent volume resource.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted.\"\n        },\n        \"volumeName\": {\n          \"description\": \"volumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace.\",\n          \"type\": \"string\"\n        },\n        \"volumeNamespace\": {\n          \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \\\"default\\\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.StorageOSVolumeSource\": {\n      \"description\": \"Represents a StorageOS persistent volume resource.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.\",\n          \"type\": \"boolean\"\n        },\n        \"secretRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.LocalObjectReference\",\n          \"description\": \"secretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted.\"\n        },\n        \"volumeName\": {\n          \"description\": \"volumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace.\",\n          \"type\": \"string\"\n        },\n        \"volumeNamespace\": {\n          \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \\\"default\\\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Sysctl\": {\n      \"description\": \"Sysctl defines a kernel parameter to be set\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name of a property to set\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"description\": \"Value of a property to set\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"value\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.TCPSocketAction\": {\n      \"description\": \"TCPSocketAction describes an action based on opening a socket\",\n      \"properties\": {\n        \"host\": {\n          \"description\": \"Optional: Host name to connect to, defaults to the pod IP.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\"\n        }\n      },\n      \"required\": [\n        \"port\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Taint\": {\n      \"description\": \"The node this Taint is attached to has the \\\"effect\\\" on any pod that does not tolerate the Taint.\",\n      \"properties\": {\n        \"effect\": {\n          \"description\": \"Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.\",\n          \"type\": \"string\"\n        },\n        \"key\": {\n          \"description\": \"Required. The taint key to be applied to a node.\",\n          \"type\": \"string\"\n        },\n        \"timeAdded\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.\"\n        },\n        \"value\": {\n          \"description\": \"The taint value corresponding to the taint key.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"effect\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Toleration\": {\n      \"description\": \"The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.\",\n      \"properties\": {\n        \"effect\": {\n          \"description\": \"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\",\n          \"type\": \"string\"\n        },\n        \"key\": {\n          \"description\": \"Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.\",\n          \"type\": \"string\"\n        },\n        \"operator\": {\n          \"description\": \"Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\",\n          \"type\": \"string\"\n        },\n        \"tolerationSeconds\": {\n          \"description\": \"TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"value\": {\n          \"description\": \"Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.TopologySelectorLabelRequirement\": {\n      \"description\": \"A topology selector requirement is a selector that matches given label. This is an alpha feature and may change in the future.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"The label key that the selector applies to.\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"description\": \"An array of string values. One value must match the label to be selected. Each entry in Values is ORed.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"values\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.TopologySelectorTerm\": {\n      \"description\": \"A topology selector term represents the result of label queries. A null or empty topology selector term matches no objects. The requirements of them are ANDed. It provides a subset of functionality as NodeSelectorTerm. This is an alpha feature and may change in the future.\",\n      \"properties\": {\n        \"matchLabelExpressions\": {\n          \"description\": \"A list of topology selector requirements by labels.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.TopologySelectorLabelRequirement\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.TopologySpreadConstraint\": {\n      \"description\": \"TopologySpreadConstraint specifies how to spread matching pods among the given topology.\",\n      \"properties\": {\n        \"labelSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.\"\n        },\n        \"matchLabelKeys\": {\n          \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set when LabelSelector isn't set. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.\\n\\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"maxSkew\": {\n          \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"minDomains\": {\n          \"description\": \"MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P P  | The number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"nodeAffinityPolicy\": {\n          \"description\": \"NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\\n\\nIf this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n          \"type\": \"string\"\n        },\n        \"nodeTaintsPolicy\": {\n          \"description\": \"NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included.\\n\\nIf this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.\",\n          \"type\": \"string\"\n        },\n        \"topologyKey\": {\n          \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a \\\"bucket\\\", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes meet the requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology. And, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology. It's a required field.\",\n          \"type\": \"string\"\n        },\n        \"whenUnsatisfiable\": {\n          \"description\": \"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\\n  but giving higher precedence to topologies that would help reduce the\\n  skew.\\nA constraint is considered \\\"Unsatisfiable\\\" for an incoming pod if and only if every possible node assignment for that pod would violate \\\"MaxSkew\\\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"maxSkew\",\n        \"topologyKey\",\n        \"whenUnsatisfiable\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.TypedLocalObjectReference\": {\n      \"description\": \"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.\",\n      \"properties\": {\n        \"apiGroup\": {\n          \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is the type of resource being referenced\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of resource being referenced\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"kind\",\n        \"name\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.core.v1.TypedObjectReference\": {\n      \"properties\": {\n        \"apiGroup\": {\n          \"description\": \"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is the type of resource being referenced\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of resource being referenced\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"kind\",\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.Volume\": {\n      \"description\": \"Volume represents a named volume in a pod that may be accessed by any container in the pod.\",\n      \"properties\": {\n        \"awsElasticBlockStore\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource\",\n          \"description\": \"awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\"\n        },\n        \"azureDisk\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource\",\n          \"description\": \"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.\"\n        },\n        \"azureFile\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource\",\n          \"description\": \"azureFile represents an Azure File Service mount on the host and bind mount to the pod.\"\n        },\n        \"cephfs\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.CephFSVolumeSource\",\n          \"description\": \"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime\"\n        },\n        \"cinder\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.CinderVolumeSource\",\n          \"description\": \"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md\"\n        },\n        \"configMap\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource\",\n          \"description\": \"configMap represents a configMap that should populate this volume\"\n        },\n        \"csi\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.CSIVolumeSource\",\n          \"description\": \"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).\"\n        },\n        \"downwardAPI\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource\",\n          \"description\": \"downwardAPI represents downward API about the pod that should populate this volume\"\n        },\n        \"emptyDir\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource\",\n          \"description\": \"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir\"\n        },\n        \"ephemeral\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.EphemeralVolumeSource\",\n          \"description\": \"ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.\\n\\nUse this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity\\n   tracking are needed,\\nc) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through\\n   a PersistentVolumeClaim (see EphemeralVolumeSource for more\\n   information on the connection between this volume type\\n   and PersistentVolumeClaim).\\n\\nUse PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod.\\n\\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information.\\n\\nA pod can use both types of ephemeral volumes and persistent volumes at the same time.\"\n        },\n        \"fc\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.FCVolumeSource\",\n          \"description\": \"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.\"\n        },\n        \"flexVolume\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.FlexVolumeSource\",\n          \"description\": \"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.\"\n        },\n        \"flocker\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.FlockerVolumeSource\",\n          \"description\": \"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running\"\n        },\n        \"gcePersistentDisk\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource\",\n          \"description\": \"gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\"\n        },\n        \"gitRepo\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource\",\n          \"description\": \"gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.\"\n        },\n        \"glusterfs\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource\",\n          \"description\": \"glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md\"\n        },\n        \"hostPath\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.HostPathVolumeSource\",\n          \"description\": \"hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\"\n        },\n        \"image\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ImageVolumeSource\",\n          \"description\": \"image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. The volume is resolved at pod startup depending on which PullPolicy value is provided:\\n\\n- Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\\n\\nThe volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. The volume will be mounted read-only (ro) and non-executable files (noexec). Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.\"\n        },\n        \"iscsi\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource\",\n          \"description\": \"iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md\"\n        },\n        \"name\": {\n          \"description\": \"name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n          \"type\": \"string\"\n        },\n        \"nfs\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NFSVolumeSource\",\n          \"description\": \"nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\"\n        },\n        \"persistentVolumeClaim\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource\",\n          \"description\": \"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\"\n        },\n        \"photonPersistentDisk\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource\",\n          \"description\": \"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine\"\n        },\n        \"portworxVolume\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PortworxVolumeSource\",\n          \"description\": \"portworxVolume represents a portworx volume attached and mounted on kubelets host machine\"\n        },\n        \"projected\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource\",\n          \"description\": \"projected items for all in one resources secrets, configmaps, and downward API\"\n        },\n        \"quobyte\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource\",\n          \"description\": \"quobyte represents a Quobyte mount on the host that shares a pod's lifetime\"\n        },\n        \"rbd\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.RBDVolumeSource\",\n          \"description\": \"rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md\"\n        },\n        \"scaleIO\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource\",\n          \"description\": \"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.\"\n        },\n        \"secret\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretVolumeSource\",\n          \"description\": \"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\"\n        },\n        \"storageos\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource\",\n          \"description\": \"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.\"\n        },\n        \"vsphereVolume\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource\",\n          \"description\": \"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.VolumeDevice\": {\n      \"description\": \"volumeDevice describes a mapping of a raw block device within a container.\",\n      \"properties\": {\n        \"devicePath\": {\n          \"description\": \"devicePath is the path inside of the container that the device will be mapped to.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name must match the name of a persistentVolumeClaim in the pod\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"devicePath\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.VolumeMount\": {\n      \"description\": \"VolumeMount describes a mounting of a Volume within a container.\",\n      \"properties\": {\n        \"mountPath\": {\n          \"description\": \"Path within the container at which the volume should be mounted.  Must not contain ':'.\",\n          \"type\": \"string\"\n        },\n        \"mountPropagation\": {\n          \"description\": \"mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified (which defaults to None).\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"This must match the Name of a Volume.\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.\",\n          \"type\": \"boolean\"\n        },\n        \"recursiveReadOnly\": {\n          \"description\": \"RecursiveReadOnly specifies whether read-only mounts should be handled recursively.\\n\\nIf ReadOnly is false, this field has no meaning and must be unspecified.\\n\\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made recursively read-only.  If this field is set to IfPossible, the mount is made recursively read-only, if it is supported by the container runtime.  If this field is set to Enabled, the mount is made recursively read-only if it is supported by the container runtime, otherwise the pod will not be started and an error will be generated to indicate the reason.\\n\\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to None (or be unspecified, which defaults to None).\\n\\nIf this field is not specified, it is treated as an equivalent of Disabled.\",\n          \"type\": \"string\"\n        },\n        \"subPath\": {\n          \"description\": \"Path within the volume from which the container's volume should be mounted. Defaults to \\\"\\\" (volume's root).\",\n          \"type\": \"string\"\n        },\n        \"subPathExpr\": {\n          \"description\": \"Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \\\"\\\" (volume's root). SubPathExpr and SubPath are mutually exclusive.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"mountPath\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.VolumeMountStatus\": {\n      \"description\": \"VolumeMountStatus shows status of volume mounts.\",\n      \"properties\": {\n        \"mountPath\": {\n          \"description\": \"MountPath corresponds to the original VolumeMount.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name corresponds to the name of the original VolumeMount.\",\n          \"type\": \"string\"\n        },\n        \"readOnly\": {\n          \"description\": \"ReadOnly corresponds to the original VolumeMount.\",\n          \"type\": \"boolean\"\n        },\n        \"recursiveReadOnly\": {\n          \"description\": \"RecursiveReadOnly must be set to Disabled, Enabled, or unspecified (for non-readonly mounts). An IfPossible value in the original VolumeMount must be translated to Disabled or Enabled, depending on the mount result.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"mountPath\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.VolumeNodeAffinity\": {\n      \"description\": \"VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.\",\n      \"properties\": {\n        \"required\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelector\",\n          \"description\": \"required specifies hard node constraints that must be met.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.VolumeProjection\": {\n      \"description\": \"Projection that may be projected along with other supported volume types. Exactly one of these fields must be set.\",\n      \"properties\": {\n        \"clusterTrustBundle\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ClusterTrustBundleProjection\",\n          \"description\": \"ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file.\\n\\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\\n\\nClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector.\\n\\nKubelet performs aggressive normalization of the PEM contents written into the pod filesystem.  Esoteric PEM features such as inter-block comments and block headers are stripped.  Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.\"\n        },\n        \"configMap\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMapProjection\",\n          \"description\": \"configMap information about the configMap data to project\"\n        },\n        \"downwardAPI\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.DownwardAPIProjection\",\n          \"description\": \"downwardAPI information about the downwardAPI data to project\"\n        },\n        \"secret\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretProjection\",\n          \"description\": \"secret information about the secret data to project\"\n        },\n        \"serviceAccountToken\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccountTokenProjection\",\n          \"description\": \"serviceAccountToken is information about the serviceAccountToken data to project\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.VolumeResourceRequirements\": {\n      \"description\": \"VolumeResourceRequirements describes the storage resource requirements for a volume.\",\n      \"properties\": {\n        \"limits\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n          \"type\": \"object\"\n        },\n        \"requests\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/\",\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource\": {\n      \"description\": \"Represents a vSphere volume resource.\",\n      \"properties\": {\n        \"fsType\": {\n          \"description\": \"fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n          \"type\": \"string\"\n        },\n        \"storagePolicyID\": {\n          \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\",\n          \"type\": \"string\"\n        },\n        \"storagePolicyName\": {\n          \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\",\n          \"type\": \"string\"\n        },\n        \"volumePath\": {\n          \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"volumePath\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.WeightedPodAffinityTerm\": {\n      \"description\": \"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)\",\n      \"properties\": {\n        \"podAffinityTerm\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodAffinityTerm\",\n          \"description\": \"Required. A pod affinity term, associated with the corresponding weight.\"\n        },\n        \"weight\": {\n          \"description\": \"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"weight\",\n        \"podAffinityTerm\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.core.v1.WindowsSecurityContextOptions\": {\n      \"description\": \"WindowsSecurityContextOptions contain Windows-specific options and credentials.\",\n      \"properties\": {\n        \"gmsaCredentialSpec\": {\n          \"description\": \"GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.\",\n          \"type\": \"string\"\n        },\n        \"gmsaCredentialSpecName\": {\n          \"description\": \"GMSACredentialSpecName is the name of the GMSA credential spec to use.\",\n          \"type\": \"string\"\n        },\n        \"hostProcess\": {\n          \"description\": \"HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.\",\n          \"type\": \"boolean\"\n        },\n        \"runAsUserName\": {\n          \"description\": \"The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.discovery.v1.Endpoint\": {\n      \"description\": \"Endpoint represents a single logical \\\"backend\\\" implementing a service.\",\n      \"properties\": {\n        \"addresses\": {\n          \"description\": \"addresses of this endpoint. The contents of this field are interpreted according to the corresponding EndpointSlice addressType field. Consumers must handle different types of addresses in the context of their own capabilities. This must contain at least one address but no more than 100. These are all assumed to be fungible and clients may choose to only use the first element. Refer to: https://issue.k8s.io/106267\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"conditions\": {\n          \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointConditions\",\n          \"description\": \"conditions contains information about the current status of the endpoint.\"\n        },\n        \"deprecatedTopology\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24).  While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead.\",\n          \"type\": \"object\"\n        },\n        \"hints\": {\n          \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointHints\",\n          \"description\": \"hints contains information associated with how an endpoint should be consumed.\"\n        },\n        \"hostname\": {\n          \"description\": \"hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation.\",\n          \"type\": \"string\"\n        },\n        \"nodeName\": {\n          \"description\": \"nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node.\",\n          \"type\": \"string\"\n        },\n        \"targetRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"targetRef is a reference to a Kubernetes object that represents this endpoint.\"\n        },\n        \"zone\": {\n          \"description\": \"zone is the name of the Zone this endpoint exists in.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"addresses\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.discovery.v1.EndpointConditions\": {\n      \"description\": \"EndpointConditions represents the current condition of an endpoint.\",\n      \"properties\": {\n        \"ready\": {\n          \"description\": \"ready indicates that this endpoint is prepared to receive traffic, according to whatever system is managing the endpoint. A nil value indicates an unknown state. In most cases consumers should interpret this unknown state as ready. For compatibility reasons, ready should never be \\\"true\\\" for terminating endpoints, except when the normal readiness behavior is being explicitly overridden, for example when the associated Service has set the publishNotReadyAddresses flag.\",\n          \"type\": \"boolean\"\n        },\n        \"serving\": {\n          \"description\": \"serving is identical to ready except that it is set regardless of the terminating state of endpoints. This condition should be set to true for a ready endpoint that is terminating. If nil, consumers should defer to the ready condition.\",\n          \"type\": \"boolean\"\n        },\n        \"terminating\": {\n          \"description\": \"terminating indicates that this endpoint is terminating. A nil value indicates an unknown state. Consumers should interpret this unknown state to mean that the endpoint is not terminating.\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.discovery.v1.EndpointHints\": {\n      \"description\": \"EndpointHints provides hints describing how an endpoint should be consumed.\",\n      \"properties\": {\n        \"forZones\": {\n          \"description\": \"forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.ForZone\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.discovery.v1.EndpointPort\": {\n      \"description\": \"EndpointPort represents a Port used by an EndpointSlice\",\n      \"properties\": {\n        \"appProtocol\": {\n          \"description\": \"The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either:\\n\\n* Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names).\\n\\n* Kubernetes-defined prefixed names:\\n  * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\\n  * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\\n  * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\\n\\n* Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name represents the name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is derived from a Kubernetes service, this corresponds to the Service.ports[].name. Name must either be an empty string or pass DNS_LABEL validation: * must be no more than 63 characters long. * must consist of lower case alphanumeric characters or '-'. * must start and end with an alphanumeric character. Default is empty string.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"description\": \"port represents the port number of the endpoint. If this is not specified, ports are not restricted and must be interpreted in the context of the specific consumer.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"protocol\": {\n          \"description\": \"protocol represents the IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.discovery.v1.EndpointSlice\": {\n      \"description\": \"EndpointSlice represents a subset of the endpoints that implement a service. For a given service there may be multiple EndpointSlice objects, selected by labels, which must be joined to produce the full set of endpoints.\",\n      \"properties\": {\n        \"addressType\": {\n          \"description\": \"addressType specifies the type of address carried by this EndpointSlice. All addresses in this slice must be the same type. This field is immutable after creation. The following address types are currently supported: * IPv4: Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified Domain Name.\",\n          \"type\": \"string\"\n        },\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"endpoints\": {\n          \"description\": \"endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.Endpoint\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata.\"\n        },\n        \"ports\": {\n          \"description\": \"ports specifies the list of network ports exposed by each endpoint in this slice. Each port must have a unique name. When ports is empty, it indicates that there are no defined ports. When a port is defined with a nil port value, it indicates \\\"all ports\\\". Each slice may include a maximum of 100 ports.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointPort\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"addressType\",\n        \"endpoints\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.discovery.v1.EndpointSliceList\": {\n      \"description\": \"EndpointSliceList represents a list of endpoint slices\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of endpoint slices\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSliceList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.discovery.v1.ForZone\": {\n      \"description\": \"ForZone provides information about which zones should consume this endpoint.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name represents the name of the zone.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.events.v1.Event\": {\n      \"description\": \"Event is a report of an event somewhere in the cluster. It generally denotes some state change in the system. Events have a limited retention time and triggers and messages may evolve with time.  Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason.  Events should be treated as informative, best-effort, supplemental data.\",\n      \"properties\": {\n        \"action\": {\n          \"description\": \"action is what action was taken/failed regarding to the regarding object. It is machine-readable. This field cannot be empty for new Events and it can have at most 128 characters.\",\n          \"type\": \"string\"\n        },\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"deprecatedCount\": {\n          \"description\": \"deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"deprecatedFirstTimestamp\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"deprecatedFirstTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type.\"\n        },\n        \"deprecatedLastTimestamp\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"deprecatedLastTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type.\"\n        },\n        \"deprecatedSource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.EventSource\",\n          \"description\": \"deprecatedSource is the deprecated field assuring backward compatibility with core.v1 Event type.\"\n        },\n        \"eventTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n          \"description\": \"eventTime is the time when this Event was first observed. It is required.\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"note\": {\n          \"description\": \"note is a human-readable description of the status of this operation. Maximal length of the note is 1kB, but libraries should be prepared to handle values up to 64kB.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"reason is why the action was taken. It is human-readable. This field cannot be empty for new Events and it can have at most 128 characters.\",\n          \"type\": \"string\"\n        },\n        \"regarding\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"regarding contains the object this Event is about. In most cases it's an Object reporting controller implements, e.g. ReplicaSetController implements ReplicaSets and this event is emitted because it acts on some changes in a ReplicaSet object.\"\n        },\n        \"related\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.ObjectReference\",\n          \"description\": \"related is the optional secondary object for more complex actions. E.g. when regarding object triggers a creation or deletion of related object.\"\n        },\n        \"reportingController\": {\n          \"description\": \"reportingController is the name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`. This field cannot be empty for new Events.\",\n          \"type\": \"string\"\n        },\n        \"reportingInstance\": {\n          \"description\": \"reportingInstance is the ID of the controller instance, e.g. `kubelet-xyzf`. This field cannot be empty for new Events and it can have at most 128 characters.\",\n          \"type\": \"string\"\n        },\n        \"series\": {\n          \"$ref\": \"#/definitions/io.k8s.api.events.v1.EventSeries\",\n          \"description\": \"series is data about the Event series this event represents or nil if it's a singleton Event.\"\n        },\n        \"type\": {\n          \"description\": \"type is the type of this event (Normal, Warning), new types could be added in the future. It is machine-readable. This field cannot be empty for new Events.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"eventTime\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.events.v1.EventList\": {\n      \"description\": \"EventList is a list of Event objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a list of schema objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"EventList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.events.v1.EventSeries\": {\n      \"description\": \"EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time. How often to update the EventSeries is up to the event reporters. The default event reporter in \\\"k8s.io/client-go/tools/events/event_broadcaster.go\\\" shows how this struct is updated on heartbeats and can guide customized reporter implementations.\",\n      \"properties\": {\n        \"count\": {\n          \"description\": \"count is the number of occurrences in this series up to the last heartbeat time.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"lastObservedTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\",\n          \"description\": \"lastObservedTime is the time when last Event from the series was seen before last heartbeat.\"\n        }\n      },\n      \"required\": [\n        \"count\",\n        \"lastObservedTime\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration\": {\n      \"description\": \"ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`.\",\n      \"properties\": {\n        \"lendablePercent\": {\n          \"description\": \"`lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels.  This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows.\\n\\nLendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"nominalConcurrencyShares\": {\n          \"description\": \"`nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values:\\n\\nNominalCL(i)  = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)\\n\\nBigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.FlowDistinguisherMethod\": {\n      \"description\": \"FlowDistinguisherMethod specifies the method of a flow distinguisher.\",\n      \"properties\": {\n        \"type\": {\n          \"description\": \"`type` is the type of flow distinguisher method The supported types are \\\"ByUser\\\" and \\\"ByNamespace\\\". Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.FlowSchema\": {\n      \"description\": \"FlowSchema defines the schema of a group of flows. Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a \\\"flow distinguisher\\\".\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchemaSpec\",\n          \"description\": \"`spec` is the specification of the desired behavior of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchemaStatus\",\n          \"description\": \"`status` is the current status of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1.FlowSchemaCondition\": {\n      \"description\": \"FlowSchemaCondition describes conditions for a FlowSchema.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"`lastTransitionTime` is the last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"`message` is a human-readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"`reason` is a unique, one-word, CamelCase reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"`status` is the status of the condition. Can be True, False, Unknown. Required.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"`type` is the type of the condition. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.FlowSchemaList\": {\n      \"description\": \"FlowSchemaList is a list of FlowSchema objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"`items` is a list of FlowSchemas.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"`metadata` is the standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchemaList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1.FlowSchemaSpec\": {\n      \"description\": \"FlowSchemaSpec describes how the FlowSchema's specification looks like.\",\n      \"properties\": {\n        \"distinguisherMethod\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowDistinguisherMethod\",\n          \"description\": \"`distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. `nil` specifies that the distinguisher is disabled and thus will always be the empty string.\"\n        },\n        \"matchingPrecedence\": {\n          \"description\": \"`matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence.  Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"priorityLevelConfiguration\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationReference\",\n          \"description\": \"`priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required.\"\n        },\n        \"rules\": {\n          \"description\": \"`rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"priorityLevelConfiguration\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.FlowSchemaStatus\": {\n      \"description\": \"FlowSchemaStatus represents the current state of a FlowSchema.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"`conditions` is a list of the current states of FlowSchema.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchemaCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.GroupSubject\": {\n      \"description\": \"GroupSubject holds detailed information for group-kind subject.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the user group that matches, or \\\"*\\\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.LimitResponse\": {\n      \"description\": \"LimitResponse defines how to handle requests that can not be executed right now.\",\n      \"properties\": {\n        \"queuing\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.QueuingConfiguration\",\n          \"description\": \"`queuing` holds the configuration parameters for queuing. This field may be non-empty only if `type` is `\\\"Queue\\\"`.\"\n        },\n        \"type\": {\n          \"description\": \"`type` is \\\"Queue\\\" or \\\"Reject\\\". \\\"Queue\\\" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. \\\"Reject\\\" means that requests that can not be executed upon arrival are rejected. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-unions\": [\n        {\n          \"discriminator\": \"type\",\n          \"fields-to-discriminateBy\": {\n            \"queuing\": \"Queuing\"\n          }\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration\": {\n      \"description\": \"LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\\n  - How are requests for this priority level limited?\\n  - What should be done with requests that exceed the limit?\",\n      \"properties\": {\n        \"borrowingLimitPercent\": {\n          \"description\": \"`borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows.\\n\\nBorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 )\\n\\nThe value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"lendablePercent\": {\n          \"description\": \"`lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows.\\n\\nLendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"limitResponse\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.LimitResponse\",\n          \"description\": \"`limitResponse` indicates what to do with requests that can not be executed right now\"\n        },\n        \"nominalConcurrencyShares\": {\n          \"description\": \"`nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values:\\n\\nNominalCL(i)  = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)\\n\\nBigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level.\\n\\nIf not specified, this field defaults to a value of 30.\\n\\nSetting this field to zero supports the construction of a \\\"jail\\\" for this priority level that is used to hold some request(s)\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.NonResourcePolicyRule\": {\n      \"description\": \"NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request.\",\n      \"properties\": {\n        \"nonResourceURLs\": {\n          \"description\": \"`nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example:\\n  - \\\"/healthz\\\" is legal\\n  - \\\"/hea*\\\" is illegal\\n  - \\\"/hea\\\" is legal but matches nothing\\n  - \\\"/hea/*\\\" also matches nothing\\n  - \\\"/healthz/*\\\" matches all per-component health checks.\\n\\\"*\\\" matches all non-resource urls. if it is present, it must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"verbs\": {\n          \"description\": \"`verbs` is a list of matching verbs and may not be empty. \\\"*\\\" matches all verbs. If it is present, it must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"required\": [\n        \"verbs\",\n        \"nonResourceURLs\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects\": {\n      \"description\": \"PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request.\",\n      \"properties\": {\n        \"nonResourceRules\": {\n          \"description\": \"`nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.NonResourcePolicyRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceRules\": {\n          \"description\": \"`resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.ResourcePolicyRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"subjects\": {\n          \"description\": \"subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.Subject\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"subjects\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\": {\n      \"description\": \"PriorityLevelConfiguration represents the configuration of a priority level.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec\",\n          \"description\": \"`spec` is the specification of the desired behavior of a \\\"request-priority\\\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationStatus\",\n          \"description\": \"`status` is the current status of a \\\"request-priority\\\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationCondition\": {\n      \"description\": \"PriorityLevelConfigurationCondition defines the condition of priority level.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"`lastTransitionTime` is the last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"`message` is a human-readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"`reason` is a unique, one-word, CamelCase reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"`status` is the status of the condition. Can be True, False, Unknown. Required.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"`type` is the type of the condition. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList\": {\n      \"description\": \"PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"`items` is a list of request-priorities.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfigurationList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationReference\": {\n      \"description\": \"PriorityLevelConfigurationReference contains information that points to the \\\"request-priority\\\" being used.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"`name` is the name of the priority level configuration being referenced Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec\": {\n      \"description\": \"PriorityLevelConfigurationSpec specifies the configuration of a priority level.\",\n      \"properties\": {\n        \"exempt\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration\",\n          \"description\": \"`exempt` specifies how requests are handled for an exempt priority level. This field MUST be empty if `type` is `\\\"Limited\\\"`. This field MAY be non-empty if `type` is `\\\"Exempt\\\"`. If empty and `type` is `\\\"Exempt\\\"` then the default values for `ExemptPriorityLevelConfiguration` apply.\"\n        },\n        \"limited\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration\",\n          \"description\": \"`limited` specifies how requests are handled for a Limited priority level. This field must be non-empty if and only if `type` is `\\\"Limited\\\"`.\"\n        },\n        \"type\": {\n          \"description\": \"`type` indicates whether this priority level is subject to limitation on request execution.  A value of `\\\"Exempt\\\"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels.  A value of `\\\"Limited\\\"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-unions\": [\n        {\n          \"discriminator\": \"type\",\n          \"fields-to-discriminateBy\": {\n            \"exempt\": \"Exempt\",\n            \"limited\": \"Limited\"\n          }\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationStatus\": {\n      \"description\": \"PriorityLevelConfigurationStatus represents the current state of a \\\"request-priority\\\".\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"`conditions` is the current state of \\\"request-priority\\\".\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.QueuingConfiguration\": {\n      \"description\": \"QueuingConfiguration holds the configuration parameters for queuing\",\n      \"properties\": {\n        \"handSize\": {\n          \"description\": \"`handSize` is a small positive number that configures the shuffle sharding of requests into queues.  When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here.  The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues).  See the user-facing documentation for more extensive guidance on setting this field.  This field has a default value of 8.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"queueLengthLimit\": {\n          \"description\": \"`queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected.  This value must be positive.  If not specified, it will be defaulted to 50.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"queues\": {\n          \"description\": \"`queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive.  Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant.  This field has a default value of 64.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.ResourcePolicyRule\": {\n      \"description\": \"ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==\\\"\\\"`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace.\",\n      \"properties\": {\n        \"apiGroups\": {\n          \"description\": \"`apiGroups` is a list of matching API groups and may not be empty. \\\"*\\\" matches all API groups and, if present, must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"clusterScope\": {\n          \"description\": \"`clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list.\",\n          \"type\": \"boolean\"\n        },\n        \"namespaces\": {\n          \"description\": \"`namespaces` is a list of target namespaces that restricts matches.  A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains \\\"*\\\".  Note that \\\"*\\\" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"resources\": {\n          \"description\": \"`resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource.  For example, [ \\\"services\\\", \\\"nodes/status\\\" ].  This list may not be empty. \\\"*\\\" matches all resources and, if present, must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"verbs\": {\n          \"description\": \"`verbs` is a list of matching verbs and may not be empty. \\\"*\\\" matches all verbs and, if present, must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"required\": [\n        \"verbs\",\n        \"apiGroups\",\n        \"resources\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.ServiceAccountSubject\": {\n      \"description\": \"ServiceAccountSubject holds detailed information for service-account-kind subject.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"`name` is the name of matching ServiceAccount objects, or \\\"*\\\" to match regardless of name. Required.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"`namespace` is the namespace of matching ServiceAccount objects. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"namespace\",\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1.Subject\": {\n      \"description\": \"Subject matches the originator of a request, as identified by the request authentication system. There are three ways of matching an originator; by user, group, or service account.\",\n      \"properties\": {\n        \"group\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.GroupSubject\",\n          \"description\": \"`group` matches based on user group name.\"\n        },\n        \"kind\": {\n          \"description\": \"`kind` indicates which one of the other fields is non-empty. Required\",\n          \"type\": \"string\"\n        },\n        \"serviceAccount\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.ServiceAccountSubject\",\n          \"description\": \"`serviceAccount` matches ServiceAccounts.\"\n        },\n        \"user\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.UserSubject\",\n          \"description\": \"`user` matches based on username.\"\n        }\n      },\n      \"required\": [\n        \"kind\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-unions\": [\n        {\n          \"discriminator\": \"kind\",\n          \"fields-to-discriminateBy\": {\n            \"group\": \"Group\",\n            \"serviceAccount\": \"ServiceAccount\",\n            \"user\": \"User\"\n          }\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1.UserSubject\": {\n      \"description\": \"UserSubject holds detailed information for user-kind subject.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"`name` is the username that matches, or \\\"*\\\" to match all usernames. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration\": {\n      \"description\": \"ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`.\",\n      \"properties\": {\n        \"lendablePercent\": {\n          \"description\": \"`lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels.  This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows.\\n\\nLendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"nominalConcurrencyShares\": {\n          \"description\": \"`nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values:\\n\\nNominalCL(i)  = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)\\n\\nBigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod\": {\n      \"description\": \"FlowDistinguisherMethod specifies the method of a flow distinguisher.\",\n      \"properties\": {\n        \"type\": {\n          \"description\": \"`type` is the type of flow distinguisher method The supported types are \\\"ByUser\\\" and \\\"ByNamespace\\\". Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.FlowSchema\": {\n      \"description\": \"FlowSchema defines the schema of a group of flows. Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a \\\"flow distinguisher\\\".\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec\",\n          \"description\": \"`spec` is the specification of the desired behavior of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus\",\n          \"description\": \"`status` is the current status of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition\": {\n      \"description\": \"FlowSchemaCondition describes conditions for a FlowSchema.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"`lastTransitionTime` is the last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"`message` is a human-readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"`reason` is a unique, one-word, CamelCase reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"`status` is the status of the condition. Can be True, False, Unknown. Required.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"`type` is the type of the condition. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.FlowSchemaList\": {\n      \"description\": \"FlowSchemaList is a list of FlowSchema objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"`items` is a list of FlowSchemas.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"`metadata` is the standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchemaList\",\n          \"version\": \"v1beta3\"\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec\": {\n      \"description\": \"FlowSchemaSpec describes how the FlowSchema's specification looks like.\",\n      \"properties\": {\n        \"distinguisherMethod\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod\",\n          \"description\": \"`distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. `nil` specifies that the distinguisher is disabled and thus will always be the empty string.\"\n        },\n        \"matchingPrecedence\": {\n          \"description\": \"`matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence.  Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"priorityLevelConfiguration\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference\",\n          \"description\": \"`priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required.\"\n        },\n        \"rules\": {\n          \"description\": \"`rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"priorityLevelConfiguration\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus\": {\n      \"description\": \"FlowSchemaStatus represents the current state of a FlowSchema.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"`conditions` is a list of the current states of FlowSchema.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.GroupSubject\": {\n      \"description\": \"GroupSubject holds detailed information for group-kind subject.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the user group that matches, or \\\"*\\\" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.LimitResponse\": {\n      \"description\": \"LimitResponse defines how to handle requests that can not be executed right now.\",\n      \"properties\": {\n        \"queuing\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration\",\n          \"description\": \"`queuing` holds the configuration parameters for queuing. This field may be non-empty only if `type` is `\\\"Queue\\\"`.\"\n        },\n        \"type\": {\n          \"description\": \"`type` is \\\"Queue\\\" or \\\"Reject\\\". \\\"Queue\\\" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. \\\"Reject\\\" means that requests that can not be executed upon arrival are rejected. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-unions\": [\n        {\n          \"discriminator\": \"type\",\n          \"fields-to-discriminateBy\": {\n            \"queuing\": \"Queuing\"\n          }\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration\": {\n      \"description\": \"LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\\n  - How are requests for this priority level limited?\\n  - What should be done with requests that exceed the limit?\",\n      \"properties\": {\n        \"borrowingLimitPercent\": {\n          \"description\": \"`borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows.\\n\\nBorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 )\\n\\nThe value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"lendablePercent\": {\n          \"description\": \"`lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. The value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows.\\n\\nLendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"limitResponse\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.LimitResponse\",\n          \"description\": \"`limitResponse` indicates what to do with requests that can not be executed right now\"\n        },\n        \"nominalConcurrencyShares\": {\n          \"description\": \"`nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values:\\n\\nNominalCL(i)  = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)\\n\\nBigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of 30.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule\": {\n      \"description\": \"NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request.\",\n      \"properties\": {\n        \"nonResourceURLs\": {\n          \"description\": \"`nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example:\\n  - \\\"/healthz\\\" is legal\\n  - \\\"/hea*\\\" is illegal\\n  - \\\"/hea\\\" is legal but matches nothing\\n  - \\\"/hea/*\\\" also matches nothing\\n  - \\\"/healthz/*\\\" matches all per-component health checks.\\n\\\"*\\\" matches all non-resource urls. if it is present, it must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"verbs\": {\n          \"description\": \"`verbs` is a list of matching verbs and may not be empty. \\\"*\\\" matches all verbs. If it is present, it must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"required\": [\n        \"verbs\",\n        \"nonResourceURLs\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects\": {\n      \"description\": \"PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request.\",\n      \"properties\": {\n        \"nonResourceRules\": {\n          \"description\": \"`nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceRules\": {\n          \"description\": \"`resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"subjects\": {\n          \"description\": \"subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.Subject\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"subjects\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\": {\n      \"description\": \"PriorityLevelConfiguration represents the configuration of a priority level.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec\",\n          \"description\": \"`spec` is the specification of the desired behavior of a \\\"request-priority\\\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus\",\n          \"description\": \"`status` is the current status of a \\\"request-priority\\\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition\": {\n      \"description\": \"PriorityLevelConfigurationCondition defines the condition of priority level.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"`lastTransitionTime` is the last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"`message` is a human-readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"`reason` is a unique, one-word, CamelCase reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"`status` is the status of the condition. Can be True, False, Unknown. Required.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"`type` is the type of the condition. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList\": {\n      \"description\": \"PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"`items` is a list of request-priorities.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfigurationList\",\n          \"version\": \"v1beta3\"\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference\": {\n      \"description\": \"PriorityLevelConfigurationReference contains information that points to the \\\"request-priority\\\" being used.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"`name` is the name of the priority level configuration being referenced Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec\": {\n      \"description\": \"PriorityLevelConfigurationSpec specifies the configuration of a priority level.\",\n      \"properties\": {\n        \"exempt\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration\",\n          \"description\": \"`exempt` specifies how requests are handled for an exempt priority level. This field MUST be empty if `type` is `\\\"Limited\\\"`. This field MAY be non-empty if `type` is `\\\"Exempt\\\"`. If empty and `type` is `\\\"Exempt\\\"` then the default values for `ExemptPriorityLevelConfiguration` apply.\"\n        },\n        \"limited\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration\",\n          \"description\": \"`limited` specifies how requests are handled for a Limited priority level. This field must be non-empty if and only if `type` is `\\\"Limited\\\"`.\"\n        },\n        \"type\": {\n          \"description\": \"`type` indicates whether this priority level is subject to limitation on request execution.  A value of `\\\"Exempt\\\"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels.  A value of `\\\"Limited\\\"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-unions\": [\n        {\n          \"discriminator\": \"type\",\n          \"fields-to-discriminateBy\": {\n            \"exempt\": \"Exempt\",\n            \"limited\": \"Limited\"\n          }\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus\": {\n      \"description\": \"PriorityLevelConfigurationStatus represents the current state of a \\\"request-priority\\\".\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"`conditions` is the current state of \\\"request-priority\\\".\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration\": {\n      \"description\": \"QueuingConfiguration holds the configuration parameters for queuing\",\n      \"properties\": {\n        \"handSize\": {\n          \"description\": \"`handSize` is a small positive number that configures the shuffle sharding of requests into queues.  When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here.  The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues).  See the user-facing documentation for more extensive guidance on setting this field.  This field has a default value of 8.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"queueLengthLimit\": {\n          \"description\": \"`queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected.  This value must be positive.  If not specified, it will be defaulted to 50.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"queues\": {\n          \"description\": \"`queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive.  Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant.  This field has a default value of 64.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule\": {\n      \"description\": \"ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==\\\"\\\"`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace.\",\n      \"properties\": {\n        \"apiGroups\": {\n          \"description\": \"`apiGroups` is a list of matching API groups and may not be empty. \\\"*\\\" matches all API groups and, if present, must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"clusterScope\": {\n          \"description\": \"`clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list.\",\n          \"type\": \"boolean\"\n        },\n        \"namespaces\": {\n          \"description\": \"`namespaces` is a list of target namespaces that restricts matches.  A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains \\\"*\\\".  Note that \\\"*\\\" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"resources\": {\n          \"description\": \"`resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource.  For example, [ \\\"services\\\", \\\"nodes/status\\\" ].  This list may not be empty. \\\"*\\\" matches all resources and, if present, must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        },\n        \"verbs\": {\n          \"description\": \"`verbs` is a list of matching verbs and may not be empty. \\\"*\\\" matches all verbs and, if present, must be the only entry. Required.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"required\": [\n        \"verbs\",\n        \"apiGroups\",\n        \"resources\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject\": {\n      \"description\": \"ServiceAccountSubject holds detailed information for service-account-kind subject.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"`name` is the name of matching ServiceAccount objects, or \\\"*\\\" to match regardless of name. Required.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"`namespace` is the namespace of matching ServiceAccount objects. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"namespace\",\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.Subject\": {\n      \"description\": \"Subject matches the originator of a request, as identified by the request authentication system. There are three ways of matching an originator; by user, group, or service account.\",\n      \"properties\": {\n        \"group\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.GroupSubject\",\n          \"description\": \"`group` matches based on user group name.\"\n        },\n        \"kind\": {\n          \"description\": \"`kind` indicates which one of the other fields is non-empty. Required\",\n          \"type\": \"string\"\n        },\n        \"serviceAccount\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject\",\n          \"description\": \"`serviceAccount` matches ServiceAccounts.\"\n        },\n        \"user\": {\n          \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.UserSubject\",\n          \"description\": \"`user` matches based on username.\"\n        }\n      },\n      \"required\": [\n        \"kind\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-unions\": [\n        {\n          \"discriminator\": \"kind\",\n          \"fields-to-discriminateBy\": {\n            \"group\": \"Group\",\n            \"serviceAccount\": \"ServiceAccount\",\n            \"user\": \"User\"\n          }\n        }\n      ]\n    },\n    \"io.k8s.api.flowcontrol.v1beta3.UserSubject\": {\n      \"description\": \"UserSubject holds detailed information for user-kind subject.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"`name` is the username that matches, or \\\"*\\\" to match all usernames. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.HTTPIngressPath\": {\n      \"description\": \"HTTPIngressPath associates a path with a backend. Incoming urls matching the path are forwarded to the backend.\",\n      \"properties\": {\n        \"backend\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressBackend\",\n          \"description\": \"backend defines the referenced service endpoint to which the traffic will be forwarded to.\"\n        },\n        \"path\": {\n          \"description\": \"path is matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \\\"path\\\" part of a URL as defined by RFC 3986. Paths must begin with a '/' and must be present when using PathType with value \\\"Exact\\\" or \\\"Prefix\\\".\",\n          \"type\": \"string\"\n        },\n        \"pathType\": {\n          \"description\": \"pathType determines the interpretation of the path matching. PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is\\n  done on a path element by element basis. A path element refers is the\\n  list of labels in the path split by the '/' separator. A request is a\\n  match for path p if every p is an element-wise prefix of p of the\\n  request path. Note that if the last element of the path is a substring\\n  of the last element in request path, it is not a match (e.g. /foo/bar\\n  matches /foo/bar/baz, but does not match /foo/barbaz).\\n* ImplementationSpecific: Interpretation of the Path matching is up to\\n  the IngressClass. Implementations can treat this as a separate PathType\\n  or treat it identically to Prefix or Exact path types.\\nImplementations are required to support all path types.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"pathType\",\n        \"backend\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.HTTPIngressRuleValue\": {\n      \"description\": \"HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://<host>/<path>?<searchpart> -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.\",\n      \"properties\": {\n        \"paths\": {\n          \"description\": \"paths is a collection of paths that map requests to backends.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.HTTPIngressPath\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"paths\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IPBlock\": {\n      \"description\": \"IPBlock describes a particular CIDR (Ex. \\\"192.168.1.0/24\\\",\\\"2001:db8::/64\\\") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule.\",\n      \"properties\": {\n        \"cidr\": {\n          \"description\": \"cidr is a string representing the IPBlock Valid examples are \\\"192.168.1.0/24\\\" or \\\"2001:db8::/64\\\"\",\n          \"type\": \"string\"\n        },\n        \"except\": {\n          \"description\": \"except is a slice of CIDRs that should not be included within an IPBlock Valid examples are \\\"192.168.1.0/24\\\" or \\\"2001:db8::/64\\\" Except values will be rejected if they are outside the cidr range\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"cidr\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.Ingress\": {\n      \"description\": \"Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressSpec\",\n          \"description\": \"spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressStatus\",\n          \"description\": \"status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1.IngressBackend\": {\n      \"description\": \"IngressBackend describes all endpoints for a given service and port.\",\n      \"properties\": {\n        \"resource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.TypedLocalObjectReference\",\n          \"description\": \"resource is an ObjectRef to another Kubernetes resource in the namespace of the Ingress object. If resource is specified, a service.Name and service.Port must not be specified. This is a mutually exclusive setting with \\\"Service\\\".\"\n        },\n        \"service\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressServiceBackend\",\n          \"description\": \"service references a service as a backend. This is a mutually exclusive setting with \\\"Resource\\\".\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressClass\": {\n      \"description\": \"IngressClass represents the class of the Ingress, referenced by the Ingress Spec. The `ingressclass.kubernetes.io/is-default-class` annotation can be used to indicate that an IngressClass should be considered default. When a single IngressClass resource has this annotation set to true, new Ingress resources without a class specified will be assigned this default class.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClassSpec\",\n          \"description\": \"spec is the desired state of the IngressClass. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1.IngressClassList\": {\n      \"description\": \"IngressClassList is a collection of IngressClasses.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of IngressClasses.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClassList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1.IngressClassParametersReference\": {\n      \"description\": \"IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.\",\n      \"properties\": {\n        \"apiGroup\": {\n          \"description\": \"apiGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"kind is the type of resource being referenced.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name is the name of resource being referenced.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"namespace is the namespace of the resource being referenced. This field is required when scope is set to \\\"Namespace\\\" and must be unset when scope is set to \\\"Cluster\\\".\",\n          \"type\": \"string\"\n        },\n        \"scope\": {\n          \"description\": \"scope represents if this refers to a cluster or namespace scoped resource. This may be set to \\\"Cluster\\\" (default) or \\\"Namespace\\\".\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"kind\",\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressClassSpec\": {\n      \"description\": \"IngressClassSpec provides information about the class of an Ingress.\",\n      \"properties\": {\n        \"controller\": {\n          \"description\": \"controller refers to the name of the controller that should handle this class. This allows for different \\\"flavors\\\" that are controlled by the same controller. For example, you may have different parameters for the same implementing controller. This should be specified as a domain-prefixed path no more than 250 characters in length, e.g. \\\"acme.io/ingress-controller\\\". This field is immutable.\",\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClassParametersReference\",\n          \"description\": \"parameters is a link to a custom resource containing additional configuration for the controller. This is optional if the controller does not require extra parameters.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressList\": {\n      \"description\": \"IngressList is a collection of Ingress.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of Ingress.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1.IngressLoadBalancerIngress\": {\n      \"description\": \"IngressLoadBalancerIngress represents the status of a load-balancer ingress point.\",\n      \"properties\": {\n        \"hostname\": {\n          \"description\": \"hostname is set for load-balancer ingress points that are DNS based.\",\n          \"type\": \"string\"\n        },\n        \"ip\": {\n          \"description\": \"ip is set for load-balancer ingress points that are IP based.\",\n          \"type\": \"string\"\n        },\n        \"ports\": {\n          \"description\": \"ports provides information about the ports exposed by this LoadBalancer.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressPortStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressLoadBalancerStatus\": {\n      \"description\": \"IngressLoadBalancerStatus represents the status of a load-balancer.\",\n      \"properties\": {\n        \"ingress\": {\n          \"description\": \"ingress is a list containing ingress points for the load-balancer.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressLoadBalancerIngress\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressPortStatus\": {\n      \"description\": \"IngressPortStatus represents the error condition of a service port\",\n      \"properties\": {\n        \"error\": {\n          \"description\": \"error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use\\n  CamelCase names\\n- cloud provider specific error values must have names that comply with the\\n  format foo.example.com/CamelCase.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"description\": \"port is the port number of the ingress port.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"protocol\": {\n          \"description\": \"protocol is the protocol of the ingress port. The supported values are: \\\"TCP\\\", \\\"UDP\\\", \\\"SCTP\\\"\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"port\",\n        \"protocol\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressRule\": {\n      \"description\": \"IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.\",\n      \"properties\": {\n        \"host\": {\n          \"description\": \"host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \\\"host\\\" part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to\\n   the IP in the Spec of the parent Ingress.\\n2. The `:` delimiter is not respected because ports are not allowed.\\n\\t  Currently the port of an Ingress is implicitly :80 for http and\\n\\t  :443 for https.\\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.\\n\\nhost can be \\\"precise\\\" which is a domain name without the terminating dot of a network host (e.g. \\\"foo.bar.com\\\") or \\\"wildcard\\\", which is a domain name prefixed with a single wildcard label (e.g. \\\"*.foo.com\\\"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == \\\"*\\\"). Requests will be matched against the Host field in the following way: 1. If host is precise, the request matches this rule if the http host header is equal to Host. 2. If host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule.\",\n          \"type\": \"string\"\n        },\n        \"http\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.HTTPIngressRuleValue\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressServiceBackend\": {\n      \"description\": \"IngressServiceBackend references a Kubernetes Service as a Backend.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the referenced service. The service must exist in the same namespace as the Ingress object.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.ServiceBackendPort\",\n          \"description\": \"port of the referenced service. A port name or port number is required for a IngressServiceBackend.\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressSpec\": {\n      \"description\": \"IngressSpec describes the Ingress the user wishes to exist.\",\n      \"properties\": {\n        \"defaultBackend\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressBackend\",\n          \"description\": \"defaultBackend is the backend that should handle requests that don't match any rule. If Rules are not specified, DefaultBackend must be specified. If DefaultBackend is not set, the handling of requests that do not match any of the rules will be up to the Ingress controller.\"\n        },\n        \"ingressClassName\": {\n          \"description\": \"ingressClassName is the name of an IngressClass cluster resource. Ingress controller implementations use this field to know whether they should be serving this Ingress resource, by a transitive connection (controller -> IngressClass -> Ingress resource). Although the `kubernetes.io/ingress.class` annotation (simple constant name) was never formally defined, it was widely supported by Ingress controllers to create a direct binding between Ingress controller and Ingress resources. Newly created Ingress resources should prefer using the field. However, even though the annotation is officially deprecated, for backwards compatibility reasons, ingress controllers should still honor that annotation if present.\",\n          \"type\": \"string\"\n        },\n        \"rules\": {\n          \"description\": \"rules is a list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"tls\": {\n          \"description\": \"tls represents the TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressTLS\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressStatus\": {\n      \"description\": \"IngressStatus describe the current state of the Ingress.\",\n      \"properties\": {\n        \"loadBalancer\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressLoadBalancerStatus\",\n          \"description\": \"loadBalancer contains the current status of the load-balancer.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.IngressTLS\": {\n      \"description\": \"IngressTLS describes the transport layer security associated with an ingress.\",\n      \"properties\": {\n        \"hosts\": {\n          \"description\": \"hosts is a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"secretName\": {\n          \"description\": \"secretName is the name of the secret used to terminate TLS traffic on port 443. Field is left optional to allow TLS routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \\\"Host\\\" header field used by an IngressRule, the SNI host is used for termination and value of the \\\"Host\\\" header is used for routing.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.NetworkPolicy\": {\n      \"description\": \"NetworkPolicy describes what network traffic is allowed for a set of Pods\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicySpec\",\n          \"description\": \"spec represents the specification of the desired behavior for this NetworkPolicy.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1.NetworkPolicyEgressRule\": {\n      \"description\": \"NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8\",\n      \"properties\": {\n        \"ports\": {\n          \"description\": \"ports is a list of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"to\": {\n          \"description\": \"to is a list of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicyPeer\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.NetworkPolicyIngressRule\": {\n      \"description\": \"NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from.\",\n      \"properties\": {\n        \"from\": {\n          \"description\": \"from is a list of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicyPeer\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"ports\": {\n          \"description\": \"ports is a list of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.NetworkPolicyList\": {\n      \"description\": \"NetworkPolicyList is a list of NetworkPolicy objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a list of schema objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicyList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1.NetworkPolicyPeer\": {\n      \"description\": \"NetworkPolicyPeer describes a peer to allow traffic to/from. Only certain combinations of fields are allowed\",\n      \"properties\": {\n        \"ipBlock\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IPBlock\",\n          \"description\": \"ipBlock defines policy on a particular IPBlock. If this field is set then neither of the other fields can be.\"\n        },\n        \"namespaceSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"namespaceSelector selects namespaces using cluster-scoped labels. This field follows standard label selector semantics; if present but empty, it selects all namespaces.\\n\\nIf podSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the namespaces selected by namespaceSelector. Otherwise it selects all pods in the namespaces selected by namespaceSelector.\"\n        },\n        \"podSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"podSelector is a label selector which selects pods. This field follows standard label selector semantics; if present but empty, it selects all pods.\\n\\nIf namespaceSelector is also set, then the NetworkPolicyPeer as a whole selects the pods matching podSelector in the Namespaces selected by NamespaceSelector. Otherwise it selects the pods matching podSelector in the policy's own namespace.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.NetworkPolicyPort\": {\n      \"description\": \"NetworkPolicyPort describes a port to allow traffic on\",\n      \"properties\": {\n        \"endPort\": {\n          \"description\": \"endPort indicates that the range of ports from port to endPort if set, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"port\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"port represents the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.\"\n        },\n        \"protocol\": {\n          \"description\": \"protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.NetworkPolicySpec\": {\n      \"description\": \"NetworkPolicySpec provides the specification of a NetworkPolicy\",\n      \"properties\": {\n        \"egress\": {\n          \"description\": \"egress is a list of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicyEgressRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"ingress\": {\n          \"description\": \"ingress is a list of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicyIngressRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"podSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"podSelector selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace.\"\n        },\n        \"policyTypes\": {\n          \"description\": \"policyTypes is a list of rule types that the NetworkPolicy relates to. Valid options are [\\\"Ingress\\\"], [\\\"Egress\\\"], or [\\\"Ingress\\\", \\\"Egress\\\"]. If this field is not specified, it will default based on the existence of ingress or egress rules; policies that contain an egress section are assumed to affect egress, and all policies (whether or not they contain an ingress section) are assumed to affect ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ \\\"Egress\\\" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include \\\"Egress\\\" (since such a policy would not include an egress section and would otherwise default to just [ \\\"Ingress\\\" ]). This field is beta-level in 1.8\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"podSelector\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1.ServiceBackendPort\": {\n      \"description\": \"ServiceBackendPort is the service port being referenced.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the name of the port on the Service. This is a mutually exclusive setting with \\\"Number\\\".\",\n          \"type\": \"string\"\n        },\n        \"number\": {\n          \"description\": \"number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \\\"Name\\\".\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.networking.v1beta1.IPAddress\": {\n      \"description\": \"IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddressSpec\",\n          \"description\": \"spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1beta1.IPAddressList\": {\n      \"description\": \"IPAddressList contains a list of IPAddress.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of IPAddresses.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddressList\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1beta1.IPAddressSpec\": {\n      \"description\": \"IPAddressSpec describe the attributes in an IP Address.\",\n      \"properties\": {\n        \"parentRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ParentReference\",\n          \"description\": \"ParentRef references the resource that an IPAddress is attached to. An IPAddress must reference a parent object.\"\n        }\n      },\n      \"required\": [\n        \"parentRef\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1beta1.ParentReference\": {\n      \"description\": \"ParentReference describes a reference to a parent object.\",\n      \"properties\": {\n        \"group\": {\n          \"description\": \"Group is the group of the object being referenced.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of the object being referenced.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"Namespace is the namespace of the object being referenced.\",\n          \"type\": \"string\"\n        },\n        \"resource\": {\n          \"description\": \"Resource is the resource of the object being referenced.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"resource\",\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1beta1.ServiceCIDR\": {\n      \"description\": \"ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDRSpec\",\n          \"description\": \"spec is the desired state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDRStatus\",\n          \"description\": \"status represents the current state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1beta1.ServiceCIDRList\": {\n      \"description\": \"ServiceCIDRList contains a list of ServiceCIDR objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of ServiceCIDRs.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDRList\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.networking.v1beta1.ServiceCIDRSpec\": {\n      \"description\": \"ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.\",\n      \"properties\": {\n        \"cidrs\": {\n          \"description\": \"CIDRs defines the IP blocks in CIDR notation (e.g. \\\"192.168.0.0/24\\\" or \\\"2001:db8::/64\\\") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.networking.v1beta1.ServiceCIDRStatus\": {\n      \"description\": \"ServiceCIDRStatus describes the current state of the ServiceCIDR.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR. Current service state\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.node.v1.Overhead\": {\n      \"description\": \"Overhead structure represents the resource overhead associated with running a pod.\",\n      \"properties\": {\n        \"podFixed\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"podFixed represents the fixed resource overhead associated with running a pod.\",\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.node.v1.RuntimeClass\": {\n      \"description\": \"RuntimeClass defines a class of container runtime supported in the cluster. The RuntimeClass is used to determine which container runtime is used to run all containers in a pod. RuntimeClasses are manually defined by a user or cluster provisioner, and referenced in the PodSpec. The Kubelet is responsible for resolving the RuntimeClassName reference before running the pod.  For more details, see https://kubernetes.io/docs/concepts/containers/runtime-class/\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"handler\": {\n          \"description\": \"handler specifies the underlying runtime and configuration that the CRI implementation will use to handle pods of this class. The possible values are specific to the node & CRI configuration.  It is assumed that all handlers are available on every node, and handlers of the same name are equivalent on every node. For example, a handler called \\\"runc\\\" might specify that the runc OCI runtime (using native Linux containers) will be used to run the containers in a pod. The Handler must be lowercase, conform to the DNS Label (RFC 1123) requirements, and is immutable.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"overhead\": {\n          \"$ref\": \"#/definitions/io.k8s.api.node.v1.Overhead\",\n          \"description\": \"overhead represents the resource overhead associated with running a pod for a given RuntimeClass. For more details, see\\n https://kubernetes.io/docs/concepts/scheduling-eviction/pod-overhead/\"\n        },\n        \"scheduling\": {\n          \"$ref\": \"#/definitions/io.k8s.api.node.v1.Scheduling\",\n          \"description\": \"scheduling holds the scheduling constraints to ensure that pods running with this RuntimeClass are scheduled to nodes that support it. If scheduling is nil, this RuntimeClass is assumed to be supported by all nodes.\"\n        }\n      },\n      \"required\": [\n        \"handler\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.node.v1.RuntimeClassList\": {\n      \"description\": \"RuntimeClassList is a list of RuntimeClass objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is a list of schema objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClassList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.node.v1.Scheduling\": {\n      \"description\": \"Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.\",\n      \"properties\": {\n        \"nodeSelector\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"nodeSelector lists labels that must be present on nodes that support this RuntimeClass. Pods using this RuntimeClass can only be scheduled to a node matched by this selector. The RuntimeClass nodeSelector is merged with a pod's existing nodeSelector. Any conflicts will cause the pod to be rejected in admission.\",\n          \"type\": \"object\",\n          \"x-kubernetes-map-type\": \"atomic\"\n        },\n        \"tolerations\": {\n          \"description\": \"tolerations are appended (excluding duplicates) to pods running with this RuntimeClass during admission, effectively unioning the set of nodes tolerated by the pod and the RuntimeClass.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.Toleration\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.policy.v1.Eviction\": {\n      \"description\": \"Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod.  A request to cause such an eviction is created by POSTing to .../pods/<pod name>/evictions.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"deleteOptions\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions\",\n          \"description\": \"DeleteOptions may be provided\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"ObjectMeta describes the pod that is being evicted.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"policy\",\n          \"kind\": \"Eviction\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.policy.v1.PodDisruptionBudget\": {\n      \"description\": \"PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetSpec\",\n          \"description\": \"Specification of the desired behavior of the PodDisruptionBudget.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetStatus\",\n          \"description\": \"Most recently observed status of the PodDisruptionBudget.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.policy.v1.PodDisruptionBudgetList\": {\n      \"description\": \"PodDisruptionBudgetList is a collection of PodDisruptionBudgets.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of PodDisruptionBudgets\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudgetList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.policy.v1.PodDisruptionBudgetSpec\": {\n      \"description\": \"PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.\",\n      \"properties\": {\n        \"maxUnavailable\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"An eviction is allowed if at most \\\"maxUnavailable\\\" pods selected by \\\"selector\\\" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with \\\"minAvailable\\\".\"\n        },\n        \"minAvailable\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString\",\n          \"description\": \"An eviction is allowed if at least \\\"minAvailable\\\" pods selected by \\\"selector\\\" will still be available after the eviction, i.e. even in the absence of the evicted pod.  So for example you can prevent all voluntary evictions by specifying \\\"100%\\\".\"\n        },\n        \"selector\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"Label query over pods whose evictions are managed by the disruption budget. A null selector will match no pods, while an empty ({}) selector will select all pods within the namespace.\",\n          \"x-kubernetes-patch-strategy\": \"replace\"\n        },\n        \"unhealthyPodEvictionPolicy\": {\n          \"description\": \"UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods should be considered for eviction. Current implementation considers healthy pods, as pods that have status.conditions item with type=\\\"Ready\\\",status=\\\"True\\\".\\n\\nValid policies are IfHealthyBudget and AlwaysAllow. If no policy is specified, the default behavior will be used, which corresponds to the IfHealthyBudget policy.\\n\\nIfHealthyBudget policy means that running pods (status.phase=\\\"Running\\\"), but not yet healthy can be evicted only if the guarded application is not disrupted (status.currentHealthy is at least equal to status.desiredHealthy). Healthy pods will be subject to the PDB for eviction.\\n\\nAlwaysAllow policy means that all running pods (status.phase=\\\"Running\\\"), but not yet healthy are considered disrupted and can be evicted regardless of whether the criteria in a PDB is met. This means perspective running pods of a disrupted application might not get a chance to become healthy. Healthy pods will be subject to the PDB for eviction.\\n\\nAdditional policies may be added in the future. Clients making eviction decisions should disallow eviction of unhealthy pods if they encounter an unrecognized policy in this field.\\n\\nThis field is beta-level. The eviction API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default).\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.policy.v1.PodDisruptionBudgetStatus\": {\n      \"description\": \"PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"Conditions contain conditions for PDB. The disruption controller sets the DisruptionAllowed condition. The following are known values for the reason field (additional reasons could be added in the future): - SyncFailed: The controller encountered an error and wasn't able to compute\\n              the number of allowed disruptions. Therefore no disruptions are\\n              allowed and the status of the condition will be False.\\n- InsufficientPods: The number of pods are either at or below the number\\n                    required by the PodDisruptionBudget. No disruptions are\\n                    allowed and the status of the condition will be False.\\n- SufficientPods: There are more pods than required by the PodDisruptionBudget.\\n                  The condition will be True, and the number of allowed\\n                  disruptions are provided by the disruptionsAllowed property.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"currentHealthy\": {\n          \"description\": \"current number of healthy pods\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"desiredHealthy\": {\n          \"description\": \"minimum desired number of healthy pods\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"disruptedPods\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\"\n          },\n          \"description\": \"DisruptedPods contains information about pods whose eviction was processed by the API server eviction subresource handler but has not yet been observed by the PodDisruptionBudget controller. A pod will be in this map from the time when the API server processed the eviction request to the time when the pod is seen by PDB controller as having been marked for deletion (or after a timeout). The key in the map is the name of the pod and the value is the time when the API server processed the eviction request. If the deletion didn't occur and a pod is still there it will be removed from the list automatically by PodDisruptionBudget controller after some time. If everything goes smooth this map should be empty for the most of the time. Large number of entries in the map may indicate problems with pod deletions.\",\n          \"type\": \"object\"\n        },\n        \"disruptionsAllowed\": {\n          \"description\": \"Number of pod disruptions that are currently allowed.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"expectedPods\": {\n          \"description\": \"total number of pods counted by this disruption budget\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"Most recent generation observed when updating this PDB status. DisruptionsAllowed and other status information is valid only if observedGeneration equals to PDB's object generation.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"disruptionsAllowed\",\n        \"currentHealthy\",\n        \"desiredHealthy\",\n        \"expectedPods\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.rbac.v1.AggregationRule\": {\n      \"description\": \"AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole\",\n      \"properties\": {\n        \"clusterRoleSelectors\": {\n          \"description\": \"ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.rbac.v1.ClusterRole\": {\n      \"description\": \"ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.\",\n      \"properties\": {\n        \"aggregationRule\": {\n          \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.AggregationRule\",\n          \"description\": \"AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller.\"\n        },\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata.\"\n        },\n        \"rules\": {\n          \"description\": \"Rules holds all the PolicyRules for this ClusterRole\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.PolicyRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.rbac.v1.ClusterRoleBinding\": {\n      \"description\": \"ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference a ClusterRole in the global namespace, and adds who information via Subject.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata.\"\n        },\n        \"roleRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleRef\",\n          \"description\": \"RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable.\"\n        },\n        \"subjects\": {\n          \"description\": \"Subjects holds references to the objects the role applies to.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Subject\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"roleRef\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.rbac.v1.ClusterRoleBindingList\": {\n      \"description\": \"ClusterRoleBindingList is a collection of ClusterRoleBindings\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of ClusterRoleBindings\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBindingList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.rbac.v1.ClusterRoleList\": {\n      \"description\": \"ClusterRoleList is a collection of ClusterRoles\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of ClusterRoles\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.rbac.v1.PolicyRule\": {\n      \"description\": \"PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.\",\n      \"properties\": {\n        \"apiGroups\": {\n          \"description\": \"APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. \\\"\\\" represents the core API group and \\\"*\\\" represents all API groups.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"nonResourceURLs\": {\n          \"description\": \"NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \\\"pods\\\" or \\\"secrets\\\") or non-resource URL paths (such as \\\"/api\\\"),  but not both.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resourceNames\": {\n          \"description\": \"ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"resources\": {\n          \"description\": \"Resources is a list of resources this rule applies to. '*' represents all resources.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"verbs\": {\n          \"description\": \"Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"verbs\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.rbac.v1.Role\": {\n      \"description\": \"Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata.\"\n        },\n        \"rules\": {\n          \"description\": \"Rules holds all the PolicyRules for this Role\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.PolicyRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.rbac.v1.RoleBinding\": {\n      \"description\": \"RoleBinding references a role, but does not contain it.  It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in.  RoleBindings in a given namespace only have effect in that namespace.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata.\"\n        },\n        \"roleRef\": {\n          \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleRef\",\n          \"description\": \"RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable.\"\n        },\n        \"subjects\": {\n          \"description\": \"Subjects holds references to the objects the role applies to.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Subject\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"roleRef\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.rbac.v1.RoleBindingList\": {\n      \"description\": \"RoleBindingList is a collection of RoleBindings\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of RoleBindings\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBindingList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.rbac.v1.RoleList\": {\n      \"description\": \"RoleList is a collection of Roles\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is a list of Roles\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata.\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.rbac.v1.RoleRef\": {\n      \"description\": \"RoleRef contains information that points to the role being used\",\n      \"properties\": {\n        \"apiGroup\": {\n          \"description\": \"APIGroup is the group for the resource being referenced\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is the type of resource being referenced\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of resource being referenced\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"apiGroup\",\n        \"kind\",\n        \"name\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.rbac.v1.Subject\": {\n      \"description\": \"Subject contains a reference to the object or user identities a role binding applies to.  This can either hold a direct API object reference, or a value for non-objects such as user and group names.\",\n      \"properties\": {\n        \"apiGroup\": {\n          \"description\": \"APIGroup holds the API group of the referenced subject. Defaults to \\\"\\\" for ServiceAccount subjects. Defaults to \\\"rbac.authorization.k8s.io\\\" for User and Group subjects.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind of object being referenced. Values defined by this API group are \\\"User\\\", \\\"Group\\\", and \\\"ServiceAccount\\\". If the Authorizer does not recognized the kind value, the Authorizer should report an error.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the object being referenced.\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"Namespace of the referenced object.  If the object kind is non-namespace, such as \\\"User\\\" or \\\"Group\\\", and this value is not empty the Authorizer should report an error.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"kind\",\n        \"name\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.api.resource.v1alpha3.AllocationResult\": {\n      \"description\": \"AllocationResult contains attributes of an allocated resource.\",\n      \"properties\": {\n        \"controller\": {\n          \"description\": \"Controller is the name of the DRA driver which handled the allocation. That driver is also responsible for deallocating the claim. It is empty when the claim can be deallocated without involving a driver.\\n\\nA driver may allocate devices provided by other drivers, so this driver name here can be different from the driver names listed for the results.\\n\\nThis is an alpha field and requires enabling the DRAControlPlaneController feature gate.\",\n          \"type\": \"string\"\n        },\n        \"devices\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceAllocationResult\",\n          \"description\": \"Devices is the result of allocating devices.\"\n        },\n        \"nodeSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelector\",\n          \"description\": \"NodeSelector defines where the allocated resources are available. If unset, they are available everywhere.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.BasicDevice\": {\n      \"description\": \"BasicDevice defines one device instance.\",\n      \"properties\": {\n        \"attributes\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceAttribute\"\n          },\n          \"description\": \"Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set.\\n\\nThe maximum number of attributes and capacities combined is 32.\",\n          \"type\": \"object\"\n        },\n        \"capacity\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\"\n          },\n          \"description\": \"Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set.\\n\\nThe maximum number of attributes and capacities combined is 32.\",\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.CELDeviceSelector\": {\n      \"description\": \"CELDeviceSelector contains a CEL expression for selecting a device.\",\n      \"properties\": {\n        \"expression\": {\n          \"description\": \"Expression is a CEL expression which evaluates a single device. It must evaluate to true when the device under consideration satisfies the desired criteria, and false when it does not. Any other result is an error and causes allocation of devices to abort.\\n\\nThe expression's input is an object named \\\"device\\\", which carries the following properties:\\n - driver (string): the name of the driver which defines this device.\\n - attributes (map[string]object): the device's attributes, grouped by prefix\\n   (e.g. device.attributes[\\\"dra.example.com\\\"] evaluates to an object with all\\n   of the attributes which were prefixed by \\\"dra.example.com\\\".\\n - capacity (map[string]object): the device's capacities, grouped by prefix.\\n\\nExample: Consider a device with driver=\\\"dra.example.com\\\", which exposes two attributes named \\\"model\\\" and \\\"ext.example.com/family\\\" and which exposes one capacity named \\\"modules\\\". This input to this expression would have the following fields:\\n\\n    device.driver\\n    device.attributes[\\\"dra.example.com\\\"].model\\n    device.attributes[\\\"ext.example.com\\\"].family\\n    device.capacity[\\\"dra.example.com\\\"].modules\\n\\nThe device.driver field can be used to check for a specific driver, either as a high-level precondition (i.e. you only want to consider devices from this driver) or as part of a multi-clause expression that is meant to consider devices from different drivers.\\n\\nThe value type of each attribute is defined by the device definition, and users who write these expressions must consult the documentation for their specific drivers. The value type of each capacity is Quantity.\\n\\nIf an unknown prefix is used as a lookup in either device.attributes or device.capacity, an empty map will be returned. Any reference to an unknown field will cause an evaluation error and allocation to abort.\\n\\nA robust expression should check for the existence of attributes before referencing them.\\n\\nFor ease of use, the cel.bind() function is enabled, and can be used to simplify expressions that access multiple attributes with the same domain. For example:\\n\\n    cel.bind(dra, device.attributes[\\\"dra.example.com\\\"], dra.someBool && dra.anotherBool)\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"expression\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.Device\": {\n      \"description\": \"Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set.\",\n      \"properties\": {\n        \"basic\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.BasicDevice\",\n          \"description\": \"Basic defines one device instance.\"\n        },\n        \"name\": {\n          \"description\": \"Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceAllocationConfiguration\": {\n      \"description\": \"DeviceAllocationConfiguration gets embedded in an AllocationResult.\",\n      \"properties\": {\n        \"opaque\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.OpaqueDeviceConfiguration\",\n          \"description\": \"Opaque provides driver-specific configuration parameters.\"\n        },\n        \"requests\": {\n          \"description\": \"Requests lists the names of requests where the configuration applies. If empty, its applies to all requests.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"source\": {\n          \"description\": \"Source records whether the configuration comes from a class and thus is not something that a normal user would have been able to set or from a claim.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"source\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceAllocationResult\": {\n      \"description\": \"DeviceAllocationResult is the result of allocating devices.\",\n      \"properties\": {\n        \"config\": {\n          \"description\": \"This field is a combination of all the claim and class configuration parameters. Drivers can distinguish between those based on a flag.\\n\\nThis includes configuration parameters for drivers which have no allocated devices in the result because it is up to the drivers which configuration parameters they support. They can silently ignore unknown configuration parameters.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceAllocationConfiguration\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"results\": {\n          \"description\": \"Results lists all allocated devices.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceRequestAllocationResult\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceAttribute\": {\n      \"description\": \"DeviceAttribute must have exactly one field set.\",\n      \"properties\": {\n        \"bool\": {\n          \"description\": \"BoolValue is a true/false value.\",\n          \"type\": \"boolean\"\n        },\n        \"int\": {\n          \"description\": \"IntValue is a number.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"string\": {\n          \"description\": \"StringValue is a string. Must not be longer than 64 characters.\",\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"description\": \"VersionValue is a semantic version according to semver.org spec 2.0.0. Must not be longer than 64 characters.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceClaim\": {\n      \"description\": \"DeviceClaim defines how to request devices with a ResourceClaim.\",\n      \"properties\": {\n        \"config\": {\n          \"description\": \"This field holds configuration for multiple potential drivers which could satisfy requests in this claim. It is ignored while allocating the claim.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClaimConfiguration\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"constraints\": {\n          \"description\": \"These constraints must be satisfied by the set of devices that get allocated for the claim.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceConstraint\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"requests\": {\n          \"description\": \"Requests represent individual requests for distinct devices which must all be satisfied. If empty, nothing needs to be allocated.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceRequest\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceClaimConfiguration\": {\n      \"description\": \"DeviceClaimConfiguration is used for configuration parameters in DeviceClaim.\",\n      \"properties\": {\n        \"opaque\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.OpaqueDeviceConfiguration\",\n          \"description\": \"Opaque provides driver-specific configuration parameters.\"\n        },\n        \"requests\": {\n          \"description\": \"Requests lists the names of requests where the configuration applies. If empty, it applies to all requests.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceClass\": {\n      \"description\": \"DeviceClass is a vendor- or admin-provided resource that contains device configuration and selectors. It can be referenced in the device requests of a claim to apply these presets. Cluster scoped.\\n\\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClassSpec\",\n          \"description\": \"Spec defines what can be allocated and how to configure it.\\n\\nThis is mutable. Consumers have to be prepared for classes changing at any time, either because they get updated or replaced. Claim allocations are done once based on whatever was set in classes at the time of allocation.\\n\\nChanging the spec automatically increments the metadata.generation number.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceClassConfiguration\": {\n      \"description\": \"DeviceClassConfiguration is used in DeviceClass.\",\n      \"properties\": {\n        \"opaque\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.OpaqueDeviceConfiguration\",\n          \"description\": \"Opaque provides driver-specific configuration parameters.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceClassList\": {\n      \"description\": \"DeviceClassList is a collection of classes.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of resource classes.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClassList\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceClassSpec\": {\n      \"description\": \"DeviceClassSpec is used in a [DeviceClass] to define what can be allocated and how to configure it.\",\n      \"properties\": {\n        \"config\": {\n          \"description\": \"Config defines configuration parameters that apply to each device that is claimed via this class. Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor configuration applies to exactly one driver.\\n\\nThey are passed to the driver, but are not considered while allocating the claim.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClassConfiguration\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"selectors\": {\n          \"description\": \"Each selector must be satisfied by a device which is claimed via this class.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceSelector\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"suitableNodes\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelector\",\n          \"description\": \"Only nodes matching the selector will be considered by the scheduler when trying to find a Node that fits a Pod when that Pod uses a claim that has not been allocated yet *and* that claim gets allocated through a control plane controller. It is ignored when the claim does not use a control plane controller for allocation.\\n\\nSetting this field is optional. If unset, all Nodes are candidates.\\n\\nThis is an alpha field and requires enabling the DRAControlPlaneController feature gate.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceConstraint\": {\n      \"description\": \"DeviceConstraint must have exactly one field set besides Requests.\",\n      \"properties\": {\n        \"matchAttribute\": {\n          \"description\": \"MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.\\n\\nFor example, if you specified \\\"dra.example.com/numa\\\" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.\\n\\nMust include the domain qualifier.\",\n          \"type\": \"string\"\n        },\n        \"requests\": {\n          \"description\": \"Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceRequest\": {\n      \"description\": \"DeviceRequest is a request for devices required for a claim. This is typically a request for a single resource like a device, but can also ask for several identical devices.\\n\\nA DeviceClassName is currently required. Clients must check that it is indeed set. It's absence indicates that something changed in a way that is not supported by the client yet, in which case it must refuse to handle the request.\",\n      \"properties\": {\n        \"adminAccess\": {\n          \"description\": \"AdminAccess indicates that this is a claim for administrative access to the device(s). Claims with AdminAccess are expected to be used for monitoring or other management services for a device.  They ignore all ordinary claims to the device with respect to access modes and any resource allocations.\",\n          \"type\": \"boolean\"\n        },\n        \"allocationMode\": {\n          \"description\": \"AllocationMode and its related fields define how devices are allocated to satisfy this request. Supported values are:\\n\\n- ExactCount: This request is for a specific number of devices.\\n  This is the default. The exact number is provided in the\\n  count field.\\n\\n- All: This request is for all of the matching devices in a pool.\\n  Allocation will fail if some devices are already allocated,\\n  unless adminAccess is requested.\\n\\nIf AlloctionMode is not specified, the default mode is ExactCount. If the mode is ExactCount and count is not specified, the default count is one. Any other requests must specify this field.\\n\\nMore modes may get added in the future. Clients must refuse to handle requests with unknown modes.\",\n          \"type\": \"string\"\n        },\n        \"count\": {\n          \"description\": \"Count is used only when the count mode is \\\"ExactCount\\\". Must be greater than zero. If AllocationMode is ExactCount and this field is not specified, the default is one.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"deviceClassName\": {\n          \"description\": \"DeviceClassName references a specific DeviceClass, which can define additional configuration and selectors to be inherited by this request.\\n\\nA class is required. Which classes are available depends on the cluster.\\n\\nAdministrators may use this to restrict which devices may get requested by only installing classes with selectors for permitted devices. If users are free to request anything without restrictions, then administrators can create an empty DeviceClass for users to reference.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name can be used to reference this request in a pod.spec.containers[].resources.claims entry and in a constraint of the claim.\\n\\nMust be a DNS label.\",\n          \"type\": \"string\"\n        },\n        \"selectors\": {\n          \"description\": \"Selectors define criteria which must be satisfied by a specific device in order for that device to be considered for this request. All selectors must be satisfied for a device to be considered.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceSelector\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"deviceClassName\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceRequestAllocationResult\": {\n      \"description\": \"DeviceRequestAllocationResult contains the allocation result for one request.\",\n      \"properties\": {\n        \"device\": {\n          \"description\": \"Device references one device instance via its name in the driver's resource pool. It must be a DNS label.\",\n          \"type\": \"string\"\n        },\n        \"driver\": {\n          \"description\": \"Driver specifies the name of the DRA driver whose kubelet plugin should be invoked to process the allocation once the claim is needed on a node.\\n\\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.\",\n          \"type\": \"string\"\n        },\n        \"pool\": {\n          \"description\": \"This name together with the driver name and the device name field identify which device was allocated (`<driver name>/<pool name>/<device name>`).\\n\\nMust not be longer than 253 characters and may contain one or more DNS sub-domains separated by slashes.\",\n          \"type\": \"string\"\n        },\n        \"request\": {\n          \"description\": \"Request is the name of the request in the claim which caused this device to be allocated. Multiple devices may have been allocated per request.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"request\",\n        \"driver\",\n        \"pool\",\n        \"device\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.DeviceSelector\": {\n      \"description\": \"DeviceSelector must have exactly one field set.\",\n      \"properties\": {\n        \"cel\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.CELDeviceSelector\",\n          \"description\": \"CEL contains a CEL expression for selecting a device.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.OpaqueDeviceConfiguration\": {\n      \"description\": \"OpaqueDeviceConfiguration contains configuration parameters for a driver in a format defined by the driver vendor.\",\n      \"properties\": {\n        \"driver\": {\n          \"description\": \"Driver is used to determine which kubelet plugin needs to be passed these configuration parameters.\\n\\nAn admission policy provided by the driver developer could use this to decide whether it needs to validate them.\\n\\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.\",\n          \"type\": \"string\"\n        },\n        \"parameters\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension\",\n          \"description\": \"Parameters can contain arbitrary data. It is the responsibility of the driver developer to handle validation and versioning. Typically this includes self-identification and a version (\\\"kind\\\" + \\\"apiVersion\\\" for Kubernetes types), with conversion between different versions.\"\n        }\n      },\n      \"required\": [\n        \"driver\",\n        \"parameters\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.PodSchedulingContext\": {\n      \"description\": \"PodSchedulingContext objects hold information that is needed to schedule a Pod with ResourceClaims that use \\\"WaitForFirstConsumer\\\" allocation mode.\\n\\nThis is an alpha type and requires enabling the DRAControlPlaneController feature gate.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContextSpec\",\n          \"description\": \"Spec describes where resources for the Pod are needed.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContextStatus\",\n          \"description\": \"Status describes where resources for the Pod can be allocated.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.PodSchedulingContextList\": {\n      \"description\": \"PodSchedulingContextList is a collection of Pod scheduling objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of PodSchedulingContext objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContextList\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.PodSchedulingContextSpec\": {\n      \"description\": \"PodSchedulingContextSpec describes where resources for the Pod are needed.\",\n      \"properties\": {\n        \"potentialNodes\": {\n          \"description\": \"PotentialNodes lists nodes where the Pod might be able to run.\\n\\nThe size of this field is limited to 128. This is large enough for many clusters. Larger clusters may need more attempts to find a node that suits all pending resources. This may get increased in the future, but not reduced.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"selectedNode\": {\n          \"description\": \"SelectedNode is the node for which allocation of ResourceClaims that are referenced by the Pod and that use \\\"WaitForFirstConsumer\\\" allocation is to be attempted.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.PodSchedulingContextStatus\": {\n      \"description\": \"PodSchedulingContextStatus describes where resources for the Pod can be allocated.\",\n      \"properties\": {\n        \"resourceClaims\": {\n          \"description\": \"ResourceClaims describes resource availability for each pod.spec.resourceClaim entry where the corresponding ResourceClaim uses \\\"WaitForFirstConsumer\\\" allocation mode.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimSchedulingStatus\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaim\": {\n      \"description\": \"ResourceClaim describes a request for access to resources in the cluster, for use by workloads. For example, if a workload needs an accelerator device with specific properties, this is how that request is expressed. The status stanza tracks whether this claim has been satisfied and what specific resources have been allocated.\\n\\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimSpec\",\n          \"description\": \"Spec describes what is being requested and how to configure it. The spec is immutable.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimStatus\",\n          \"description\": \"Status describes whether the claim is ready to use and what has been allocated.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaimConsumerReference\": {\n      \"description\": \"ResourceClaimConsumerReference contains enough information to let you locate the consumer of a ResourceClaim. The user must be a resource in the same namespace as the ResourceClaim.\",\n      \"properties\": {\n        \"apiGroup\": {\n          \"description\": \"APIGroup is the group for the resource being referenced. It is empty for the core API. This matches the group in the APIVersion that is used when creating the resources.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name is the name of resource being referenced.\",\n          \"type\": \"string\"\n        },\n        \"resource\": {\n          \"description\": \"Resource is the type of resource being referenced, for example \\\"pods\\\".\",\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"description\": \"UID identifies exactly one incarnation of the resource.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"resource\",\n        \"name\",\n        \"uid\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaimList\": {\n      \"description\": \"ResourceClaimList is a collection of claims.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of resource claims.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimList\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaimSchedulingStatus\": {\n      \"description\": \"ResourceClaimSchedulingStatus contains information about one particular ResourceClaim with \\\"WaitForFirstConsumer\\\" allocation mode.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name matches the pod.spec.resourceClaims[*].Name field.\",\n          \"type\": \"string\"\n        },\n        \"unsuitableNodes\": {\n          \"description\": \"UnsuitableNodes lists nodes that the ResourceClaim cannot be allocated for.\\n\\nThe size of this field is limited to 128, the same as for PodSchedulingSpec.PotentialNodes. This may get increased in the future, but not reduced.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaimSpec\": {\n      \"description\": \"ResourceClaimSpec defines what is being requested in a ResourceClaim and how to configure it.\",\n      \"properties\": {\n        \"controller\": {\n          \"description\": \"Controller is the name of the DRA driver that is meant to handle allocation of this claim. If empty, allocation is handled by the scheduler while scheduling a pod.\\n\\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver.\\n\\nThis is an alpha field and requires enabling the DRAControlPlaneController feature gate.\",\n          \"type\": \"string\"\n        },\n        \"devices\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClaim\",\n          \"description\": \"Devices defines how to request devices.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaimStatus\": {\n      \"description\": \"ResourceClaimStatus tracks whether the resource has been allocated and what the result of that was.\",\n      \"properties\": {\n        \"allocation\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.AllocationResult\",\n          \"description\": \"Allocation is set once the claim has been allocated successfully.\"\n        },\n        \"deallocationRequested\": {\n          \"description\": \"Indicates that a claim is to be deallocated. While this is set, no new consumers may be added to ReservedFor.\\n\\nThis is only used if the claim needs to be deallocated by a DRA driver. That driver then must deallocate this claim and reset the field together with clearing the Allocation field.\\n\\nThis is an alpha field and requires enabling the DRAControlPlaneController feature gate.\",\n          \"type\": \"boolean\"\n        },\n        \"reservedFor\": {\n          \"description\": \"ReservedFor indicates which entities are currently allowed to use the claim. A Pod which references a ResourceClaim which is not reserved for that Pod will not be started. A claim that is in use or might be in use because it has been reserved must not get deallocated.\\n\\nIn a cluster with multiple scheduler instances, two pods might get scheduled concurrently by different schedulers. When they reference the same ResourceClaim which already has reached its maximum number of consumers, only one pod can be scheduled.\\n\\nBoth schedulers try to add their pod to the claim.status.reservedFor field, but only the update that reaches the API server first gets stored. The other one fails with an error and the scheduler which issued it knows that it must put the pod back into the queue, waiting for the ResourceClaim to become usable again.\\n\\nThere can be at most 32 such reservations. This may get increased in the future, but not reduced.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimConsumerReference\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"uid\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"uid\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\": {\n      \"description\": \"ResourceClaimTemplate is used to produce ResourceClaim objects.\\n\\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplateSpec\",\n          \"description\": \"Describes the ResourceClaim that is to be generated.\\n\\nThis field is immutable. A ResourceClaim will get created by the control plane for a Pod when needed and then not get updated anymore.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList\": {\n      \"description\": \"ResourceClaimTemplateList is a collection of claim templates.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of resource claim templates.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplateList\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceClaimTemplateSpec\": {\n      \"description\": \"ResourceClaimTemplateSpec contains the metadata and fields for a ResourceClaim.\",\n      \"properties\": {\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"ObjectMeta may contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimSpec\",\n          \"description\": \"Spec for the ResourceClaim. The entire content is copied unchanged into the ResourceClaim that gets created from this template. The same fields as in a ResourceClaim are also valid here.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourcePool\": {\n      \"description\": \"ResourcePool describes the pool that ResourceSlices belong to.\",\n      \"properties\": {\n        \"generation\": {\n          \"description\": \"Generation tracks the change in a pool over time. Whenever a driver changes something about one or more of the resources in a pool, it must change the generation in all ResourceSlices which are part of that pool. Consumers of ResourceSlices should only consider resources from the pool with the highest generation number. The generation may be reset by drivers, which should be fine for consumers, assuming that all ResourceSlices in a pool are updated to match or deleted.\\n\\nCombined with ResourceSliceCount, this mechanism enables consumers to detect pools which are comprised of multiple ResourceSlices and are in an incomplete state.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"name\": {\n          \"description\": \"Name is used to identify the pool. For node-local devices, this is often the node name, but this is not required.\\n\\nIt must not be longer than 253 characters and must consist of one or more DNS sub-domains separated by slashes. This field is immutable.\",\n          \"type\": \"string\"\n        },\n        \"resourceSliceCount\": {\n          \"description\": \"ResourceSliceCount is the total number of ResourceSlices in the pool at this generation number. Must be greater than zero.\\n\\nConsumers can use this to check whether they have seen all ResourceSlices belonging to the same pool.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"generation\",\n        \"resourceSliceCount\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceSlice\": {\n      \"description\": \"ResourceSlice represents one or more resources in a pool of similar resources, managed by a common driver. A pool may span more than one ResourceSlice, and exactly how many ResourceSlices comprise a pool is determined by the driver.\\n\\nAt the moment, the only supported resources are devices with attributes and capacities. Each device in a given pool, regardless of how many ResourceSlices, must have a unique name. The ResourceSlice in which a device gets published may change over time. The unique identifier for a device is the tuple <driver name>, <pool name>, <device name>.\\n\\nWhenever a driver needs to update a pool, it increments the pool.Spec.Pool.Generation number and updates all ResourceSlices with that new number and new resource definitions. A consumer must only use ResourceSlices with the highest generation number and ignore all others.\\n\\nWhen allocating all resources in a pool matching certain criteria or when looking for the best solution among several different alternatives, a consumer should check the number of ResourceSlices in a pool (included in each ResourceSlice) to determine whether its view of a pool is complete and if not, should wait until the driver has completed updating the pool.\\n\\nFor resources that are not local to a node, the node name is not set. Instead, the driver may use a node selector to specify where the devices are available.\\n\\nThis is an alpha type and requires enabling the DynamicResourceAllocation feature gate.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSliceSpec\",\n          \"description\": \"Contains the information published by the driver.\\n\\nChanging the spec automatically increments the metadata.generation number.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceSliceList\": {\n      \"description\": \"ResourceSliceList is a collection of ResourceSlices.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of resource ResourceSlices.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSliceList\",\n          \"version\": \"v1alpha3\"\n        }\n      ]\n    },\n    \"io.k8s.api.resource.v1alpha3.ResourceSliceSpec\": {\n      \"description\": \"ResourceSliceSpec contains the information published by the driver in one ResourceSlice.\",\n      \"properties\": {\n        \"allNodes\": {\n          \"description\": \"AllNodes indicates that all nodes have access to the resources in the pool.\\n\\nExactly one of NodeName, NodeSelector and AllNodes must be set.\",\n          \"type\": \"boolean\"\n        },\n        \"devices\": {\n          \"description\": \"Devices lists some or all of the devices in this pool.\\n\\nMust not have more than 128 entries.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.Device\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"driver\": {\n          \"description\": \"Driver identifies the DRA driver providing the capacity information. A field selector can be used to list only ResourceSlice objects with a certain driver name.\\n\\nMust be a DNS subdomain and should end with a DNS domain owned by the vendor of the driver. This field is immutable.\",\n          \"type\": \"string\"\n        },\n        \"nodeName\": {\n          \"description\": \"NodeName identifies the node which provides the resources in this pool. A field selector can be used to list only ResourceSlice objects belonging to a certain node.\\n\\nThis field can be used to limit access from nodes to ResourceSlices with the same node name. It also indicates to autoscalers that adding new nodes of the same type as some old node might also make new resources available.\\n\\nExactly one of NodeName, NodeSelector and AllNodes must be set. This field is immutable.\",\n          \"type\": \"string\"\n        },\n        \"nodeSelector\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeSelector\",\n          \"description\": \"NodeSelector defines which nodes have access to the resources in the pool, when that pool is not limited to a single node.\\n\\nMust use exactly one term.\\n\\nExactly one of NodeName, NodeSelector and AllNodes must be set.\"\n        },\n        \"pool\": {\n          \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourcePool\",\n          \"description\": \"Pool describes the pool that this ResourceSlice belongs to.\"\n        }\n      },\n      \"required\": [\n        \"driver\",\n        \"pool\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.scheduling.v1.PriorityClass\": {\n      \"description\": \"PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"description\": \"description is an arbitrary string that usually provides guidelines on when this priority class should be used.\",\n          \"type\": \"string\"\n        },\n        \"globalDefault\": {\n          \"description\": \"globalDefault specifies whether this PriorityClass should be considered as the default priority for pods that do not have any priority class. Only one PriorityClass can be marked as `globalDefault`. However, if more than one PriorityClasses exists with their `globalDefault` field set to true, the smallest value of such global default PriorityClasses will be used as the default priority.\",\n          \"type\": \"boolean\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"preemptionPolicy\": {\n          \"description\": \"preemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"description\": \"value represents the integer value of this priority class. This is the actual priority that pods receive when they have the name of this class in their pod spec.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"value\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.scheduling.v1.PriorityClassList\": {\n      \"description\": \"PriorityClassList is a collection of priority classes.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of PriorityClasses\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClassList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.CSIDriver\": {\n      \"description\": \"CSIDriver captures information about a Container Storage Interface (CSI) volume driver deployed on the cluster. Kubernetes attach detach controller uses this object to determine whether attach is required. Kubelet uses this object to determine whether pod information needs to be passed on mount. CSIDriver objects are non-namespaced.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata. metadata.Name indicates the name of the CSI driver that this object refers to; it MUST be the same name returned by the CSI GetPluginName() call for that driver. The driver name must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), dots (.), and alphanumerics between. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriverSpec\",\n          \"description\": \"spec represents the specification of the CSI Driver.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.CSIDriverList\": {\n      \"description\": \"CSIDriverList is a collection of CSIDriver objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of CSIDriver\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriverList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.CSIDriverSpec\": {\n      \"description\": \"CSIDriverSpec is the specification of a CSIDriver.\",\n      \"properties\": {\n        \"attachRequired\": {\n          \"description\": \"attachRequired indicates this CSI volume driver requires an attach operation (because it implements the CSI ControllerPublishVolume() method), and that the Kubernetes attach detach controller should call the attach volume interface which checks the volumeattachment status and waits until the volume is attached before proceeding to mounting. The CSI external-attacher coordinates with CSI volume driver and updates the volumeattachment status when the attach operation is complete. If the CSIDriverRegistry feature gate is enabled and the value is specified to false, the attach operation will be skipped. Otherwise the attach operation will be called.\\n\\nThis field is immutable.\",\n          \"type\": \"boolean\"\n        },\n        \"fsGroupPolicy\": {\n          \"description\": \"fsGroupPolicy defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details.\\n\\nThis field was immutable in Kubernetes < 1.29 and now is mutable.\\n\\nDefaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce.\",\n          \"type\": \"string\"\n        },\n        \"podInfoOnMount\": {\n          \"description\": \"podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations, if set to true. If set to false, pod information will not be passed on mount. Default is false.\\n\\nThe CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext.\\n\\nThe following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. \\\"csi.storage.k8s.io/pod.name\\\": pod.Name \\\"csi.storage.k8s.io/pod.namespace\\\": pod.Namespace \\\"csi.storage.k8s.io/pod.uid\\\": string(pod.UID) \\\"csi.storage.k8s.io/ephemeral\\\": \\\"true\\\" if the volume is an ephemeral inline volume\\n                                defined by a CSIVolumeSource, otherwise \\\"false\\\"\\n\\n\\\"csi.storage.k8s.io/ephemeral\\\" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the \\\"Persistent\\\" and \\\"Ephemeral\\\" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver.\\n\\nThis field was immutable in Kubernetes < 1.29 and now is mutable.\",\n          \"type\": \"boolean\"\n        },\n        \"requiresRepublish\": {\n          \"description\": \"requiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\\n\\nNote: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.\",\n          \"type\": \"boolean\"\n        },\n        \"seLinuxMount\": {\n          \"description\": \"seLinuxMount specifies if the CSI driver supports \\\"-o context\\\" mount option.\\n\\nWhen \\\"true\\\", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with \\\"-o context=xyz\\\" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context.\\n\\nWhen \\\"false\\\", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem.\\n\\nDefault is \\\"false\\\".\",\n          \"type\": \"boolean\"\n        },\n        \"storageCapacity\": {\n          \"description\": \"storageCapacity indicates that the CSI volume driver wants pod scheduling to consider the storage capacity that the driver deployment will report by creating CSIStorageCapacity objects with capacity information, if set to true.\\n\\nThe check can be enabled immediately when deploying a driver. In that case, provisioning new volumes with late binding will pause until the driver deployment has published some suitable CSIStorageCapacity object.\\n\\nAlternatively, the driver can be deployed with the field unset or false and it can be flipped later when storage capacity information has been published.\\n\\nThis field was immutable in Kubernetes <= 1.22 and now is mutable.\",\n          \"type\": \"boolean\"\n        },\n        \"tokenRequests\": {\n          \"description\": \"tokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: \\\"csi.storage.k8s.io/serviceAccount.tokens\\\": {\\n  \\\"<audience>\\\": {\\n    \\\"token\\\": <token>,\\n    \\\"expirationTimestamp\\\": <expiration timestamp in RFC3339>,\\n  },\\n  ...\\n}\\n\\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1.TokenRequest\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"volumeLifecycleModes\": {\n          \"description\": \"volumeLifecycleModes defines what kind of volumes this CSI volume driver supports. The default if the list is empty is \\\"Persistent\\\", which is the usage defined by the CSI specification and implemented in Kubernetes via the usual PV/PVC mechanism.\\n\\nThe other mode is \\\"Ephemeral\\\". In this mode, volumes are defined inline inside the pod spec with CSIVolumeSource and their lifecycle is tied to the lifecycle of that pod. A driver has to be aware of this because it is only going to get a NodePublishVolume call for such a volume.\\n\\nFor more information about implementing this mode, see https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html A driver can support one or more of these modes and more modes may be added in the future.\\n\\nThis field is beta. This field is immutable.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1.CSINode\": {\n      \"description\": \"CSINode holds information about all CSI drivers installed on a node. CSI drivers do not need to create the CSINode object directly. As long as they use the node-driver-registrar sidecar container, the kubelet will automatically populate the CSINode object for the CSI driver as part of kubelet plugin registration. CSINode has the same name as a node. If the object is missing, it means either there are no CSI Drivers available on the node, or the Kubelet version is low enough that it doesn't create this object. CSINode has an OwnerReference that points to the corresponding node object.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. metadata.name must be the Kubernetes node name.\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINodeSpec\",\n          \"description\": \"spec is the specification of CSINode\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.CSINodeDriver\": {\n      \"description\": \"CSINodeDriver holds information about the specification of one CSI driver installed on a node\",\n      \"properties\": {\n        \"allocatable\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeNodeResources\",\n          \"description\": \"allocatable represents the volume resources of a node that are available for scheduling. This field is beta.\"\n        },\n        \"name\": {\n          \"description\": \"name represents the name of the CSI driver that this object refers to. This MUST be the same name returned by the CSI GetPluginName() call for that driver.\",\n          \"type\": \"string\"\n        },\n        \"nodeID\": {\n          \"description\": \"nodeID of the node from the driver point of view. This field enables Kubernetes to communicate with storage systems that do not share the same nomenclature for nodes. For example, Kubernetes may refer to a given node as \\\"node1\\\", but the storage system may refer to the same node as \\\"nodeA\\\". When Kubernetes issues a command to the storage system to attach a volume to a specific node, it can use this field to refer to the node name using the ID that the storage system will understand, e.g. \\\"nodeA\\\" instead of \\\"node1\\\". This field is required.\",\n          \"type\": \"string\"\n        },\n        \"topologyKeys\": {\n          \"description\": \"topologyKeys is the list of keys supported by the driver. When a driver is initialized on a cluster, it provides a set of topology keys that it understands (e.g. \\\"company.com/zone\\\", \\\"company.com/region\\\"). When a driver is initialized on a node, it provides the same topology keys along with values. Kubelet will expose these topology keys as labels on its own node object. When Kubernetes does topology aware provisioning, it can use this list to determine which labels it should retrieve from the node object and pass back to the driver. It is possible for different nodes to use different topology keys. This can be empty if driver does not support topology.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"nodeID\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1.CSINodeList\": {\n      \"description\": \"CSINodeList is a collection of CSINode objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of CSINode\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINodeList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.CSINodeSpec\": {\n      \"description\": \"CSINodeSpec holds information about the specification of all CSI drivers installed on a node\",\n      \"properties\": {\n        \"drivers\": {\n          \"description\": \"drivers is a list of information of all CSI Drivers existing on a node. If all drivers in the list are uninstalled, this can become empty.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINodeDriver\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"name\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"name\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"required\": [\n        \"drivers\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1.CSIStorageCapacity\": {\n      \"description\": \"CSIStorageCapacity stores the result of one CSI GetCapacity call. For a given StorageClass, this describes the available capacity in a particular topology segment.  This can be used when considering where to instantiate new PersistentVolumes.\\n\\nFor example this can express things like: - StorageClass \\\"standard\\\" has \\\"1234 GiB\\\" available in \\\"topology.kubernetes.io/zone=us-east1\\\" - StorageClass \\\"localssd\\\" has \\\"10 GiB\\\" available in \\\"kubernetes.io/hostname=knode-abc123\\\"\\n\\nThe following three cases all imply that no capacity is available for a certain combination: - no object exists with suitable topology and storage class name - such an object exists, but the capacity is unset - such an object exists, but the capacity is zero\\n\\nThe producer of these objects can decide which approach is more suitable.\\n\\nThey are consumed by the kube-scheduler when a CSI driver opts into capacity-aware scheduling with CSIDriverSpec.StorageCapacity. The scheduler compares the MaximumVolumeSize against the requested size of pending volumes to filter out unsuitable nodes. If MaximumVolumeSize is unset, it falls back to a comparison against the less precise Capacity. If that is also unset, the scheduler assumes that capacity is insufficient and tries some other node.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"capacity\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\",\n          \"description\": \"capacity is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields.\\n\\nThe semantic is currently (CSI spec 1.2) defined as: The available capacity, in bytes, of the storage that can be used to provision volumes. If not set, that information is currently unavailable.\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"maximumVolumeSize\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity\",\n          \"description\": \"maximumVolumeSize is the value reported by the CSI driver in its GetCapacityResponse for a GetCapacityRequest with topology and parameters that match the previous fields.\\n\\nThis is defined since CSI spec 1.4.0 as the largest size that may be used in a CreateVolumeRequest.capacity_range.required_bytes field to create a volume with the same parameters as those in GetCapacityRequest. The corresponding value in the Kubernetes API is ResourceRequirements.Requests in a volume claim.\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. The name has no particular meaning. It must be a DNS subdomain (dots allowed, 253 characters). To ensure that there are no conflicts with other CSI drivers on the cluster, the recommendation is to use csisc-<uuid>, a generated name, or a reverse-domain name which ends with the unique CSI driver name.\\n\\nObjects are namespaced.\\n\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"nodeTopology\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\",\n          \"description\": \"nodeTopology defines which nodes have access to the storage for which capacity was reported. If not set, the storage is not accessible from any node in the cluster. If empty, the storage is accessible from all nodes. This field is immutable.\"\n        },\n        \"storageClassName\": {\n          \"description\": \"storageClassName represents the name of the StorageClass that the reported capacity applies to. It must meet the same requirements as the name of a StorageClass object (non-empty, DNS subdomain). If that object no longer exists, the CSIStorageCapacity object is obsolete and should be removed by its creator. This field is immutable.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"storageClassName\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.CSIStorageCapacityList\": {\n      \"description\": \"CSIStorageCapacityList is a collection of CSIStorageCapacity objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of CSIStorageCapacity objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacityList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.StorageClass\": {\n      \"description\": \"StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\\n\\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.\",\n      \"properties\": {\n        \"allowVolumeExpansion\": {\n          \"description\": \"allowVolumeExpansion shows whether the storage class allow volume expand.\",\n          \"type\": \"boolean\"\n        },\n        \"allowedTopologies\": {\n          \"description\": \"allowedTopologies restrict the node topologies where volumes can be dynamically provisioned. Each volume plugin defines its own supported topology specifications. An empty TopologySelectorTerm list means there is no topology restriction. This field is only honored by servers that enable the VolumeScheduling feature.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.core.v1.TopologySelectorTerm\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"mountOptions\": {\n          \"description\": \"mountOptions controls the mountOptions for dynamically provisioned PersistentVolumes of this storage class. e.g. [\\\"ro\\\", \\\"soft\\\"]. Not validated - mount of the PVs will simply fail if one is invalid.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"parameters\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"parameters holds the parameters for the provisioner that should create volumes of this storage class.\",\n          \"type\": \"object\"\n        },\n        \"provisioner\": {\n          \"description\": \"provisioner indicates the type of the provisioner.\",\n          \"type\": \"string\"\n        },\n        \"reclaimPolicy\": {\n          \"description\": \"reclaimPolicy controls the reclaimPolicy for dynamically provisioned PersistentVolumes of this storage class. Defaults to Delete.\",\n          \"type\": \"string\"\n        },\n        \"volumeBindingMode\": {\n          \"description\": \"volumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound.  When unset, VolumeBindingImmediate is used. This field is only honored by servers that enable the VolumeScheduling feature.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"provisioner\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.StorageClassList\": {\n      \"description\": \"StorageClassList is a collection of storage classes.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of StorageClasses\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClassList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.TokenRequest\": {\n      \"description\": \"TokenRequest contains parameters of a service account token.\",\n      \"properties\": {\n        \"audience\": {\n          \"description\": \"audience is the intended audience of the token in \\\"TokenRequestSpec\\\". It will default to the audiences of kube apiserver.\",\n          \"type\": \"string\"\n        },\n        \"expirationSeconds\": {\n          \"description\": \"expirationSeconds is the duration of validity of the token in \\\"TokenRequestSpec\\\". It has the same default value of \\\"ExpirationSeconds\\\" in \\\"TokenRequestSpec\\\".\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"audience\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1.VolumeAttachment\": {\n      \"description\": \"VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\\n\\nVolumeAttachment objects are non-namespaced.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachmentSpec\",\n          \"description\": \"spec represents specification of the desired attach/detach volume behavior. Populated by the Kubernetes system.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachmentStatus\",\n          \"description\": \"status represents status of the VolumeAttachment request. Populated by the entity completing the attach or detach operation, i.e. the external-attacher.\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.VolumeAttachmentList\": {\n      \"description\": \"VolumeAttachmentList is a collection of VolumeAttachment objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of VolumeAttachments\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachmentList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1.VolumeAttachmentSource\": {\n      \"description\": \"VolumeAttachmentSource represents a volume that should be attached. Right now only PersistenVolumes can be attached via external attacher, in future we may allow also inline volumes in pods. Exactly one member can be set.\",\n      \"properties\": {\n        \"inlineVolumeSpec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec\",\n          \"description\": \"inlineVolumeSpec contains all the information necessary to attach a persistent volume defined by a pod's inline VolumeSource. This field is populated only for the CSIMigration feature. It contains translated fields from a pod's inline VolumeSource to a PersistentVolumeSpec. This field is beta-level and is only honored by servers that enabled the CSIMigration feature.\"\n        },\n        \"persistentVolumeName\": {\n          \"description\": \"persistentVolumeName represents the name of the persistent volume to attach.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1.VolumeAttachmentSpec\": {\n      \"description\": \"VolumeAttachmentSpec is the specification of a VolumeAttachment request.\",\n      \"properties\": {\n        \"attacher\": {\n          \"description\": \"attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().\",\n          \"type\": \"string\"\n        },\n        \"nodeName\": {\n          \"description\": \"nodeName represents the node that the volume should be attached to.\",\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachmentSource\",\n          \"description\": \"source represents the volume that should be attached.\"\n        }\n      },\n      \"required\": [\n        \"attacher\",\n        \"source\",\n        \"nodeName\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1.VolumeAttachmentStatus\": {\n      \"description\": \"VolumeAttachmentStatus is the status of a VolumeAttachment request.\",\n      \"properties\": {\n        \"attachError\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeError\",\n          \"description\": \"attachError represents the last error encountered during attach operation, if any. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\"\n        },\n        \"attached\": {\n          \"description\": \"attached indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\",\n          \"type\": \"boolean\"\n        },\n        \"attachmentMetadata\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"attachmentMetadata is populated with any information returned by the attach operation, upon successful attach, that must be passed into subsequent WaitForAttach or Mount calls. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.\",\n          \"type\": \"object\"\n        },\n        \"detachError\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeError\",\n          \"description\": \"detachError represents the last error encountered during detach operation, if any. This field must only be set by the entity completing the detach operation, i.e. the external-attacher.\"\n        }\n      },\n      \"required\": [\n        \"attached\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1.VolumeError\": {\n      \"description\": \"VolumeError captures an error encountered during a volume operation.\",\n      \"properties\": {\n        \"message\": {\n          \"description\": \"message represents the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.\",\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"time represents the time the error was encountered.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1.VolumeNodeResources\": {\n      \"description\": \"VolumeNodeResources is a set of resource limits for scheduling of volumes.\",\n      \"properties\": {\n        \"count\": {\n          \"description\": \"count indicates the maximum number of unique volumes managed by the CSI driver that can be used on a node. A volume that is both attached and mounted on a node is considered to be used once, not twice. The same rule applies for a unique volume that is shared among multiple pods on the same node. If this field is not specified, then the supported number of volumes on this node is unbounded.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storage.v1alpha1.VolumeAttributesClass\": {\n      \"description\": \"VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"driverName\": {\n          \"description\": \"Name of the CSI driver This field is immutable.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"parameters\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"parameters hold volume attributes defined by the CSI driver. These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass.\\n\\nThis field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an \\\"Infeasible\\\" state in the modifyVolumeStatus field.\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"driverName\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1alpha1.VolumeAttributesClassList\": {\n      \"description\": \"VolumeAttributesClassList is a collection of VolumeAttributesClass objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of VolumeAttributesClass objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClassList\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1beta1.VolumeAttributesClass\": {\n      \"description\": \"VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"driverName\": {\n          \"description\": \"Name of the CSI driver This field is immutable.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"parameters\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"parameters hold volume attributes defined by the CSI driver. These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass.\\n\\nThis field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an \\\"Infeasible\\\" state in the modifyVolumeStatus field.\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"driverName\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storage.v1beta1.VolumeAttributesClassList\": {\n      \"description\": \"VolumeAttributesClassList is a collection of VolumeAttributesClass objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items is the list of VolumeAttributesClass objects.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClassList\",\n          \"version\": \"v1beta1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storagemigration.v1alpha1.GroupVersionResource\": {\n      \"description\": \"The names of the group, the version, and the resource.\",\n      \"properties\": {\n        \"group\": {\n          \"description\": \"The name of the group.\",\n          \"type\": \"string\"\n        },\n        \"resource\": {\n          \"description\": \"The name of the resource.\",\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"description\": \"The name of the version.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storagemigration.v1alpha1.MigrationCondition\": {\n      \"description\": \"Describes the state of a migration at a certain point.\",\n      \"properties\": {\n        \"lastUpdateTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"The last time this condition was updated.\"\n        },\n        \"message\": {\n          \"description\": \"A human readable message indicating details about the transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"The reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type of the condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\": {\n      \"description\": \"StorageVersionMigration represents a migration of stored data to the latest storage version.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationSpec\",\n          \"description\": \"Specification of the migration.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationStatus\",\n          \"description\": \"Status of the migration.\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList\": {\n      \"description\": \"StorageVersionMigrationList is a collection of storage version migrations.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of StorageVersionMigration\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigrationList\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationSpec\": {\n      \"description\": \"Spec of the storage version migration.\",\n      \"properties\": {\n        \"continueToken\": {\n          \"description\": \"The token used in the list options to get the next chunk of objects to migrate. When the .status.conditions indicates the migration is \\\"Running\\\", users can use this token to check the progress of the migration.\",\n          \"type\": \"string\"\n        },\n        \"resource\": {\n          \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.GroupVersionResource\",\n          \"description\": \"The resource that is being migrated. The migrator sends requests to the endpoint serving the resource. Immutable.\"\n        }\n      },\n      \"required\": [\n        \"resource\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationStatus\": {\n      \"description\": \"Status of the storage version migration.\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"The latest available observations of the migration's current state.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.MigrationCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"resourceVersion\": {\n          \"description\": \"ResourceVersion to compare with the GC cache for performing the migration. This is the current resource version of given group, version and resource when kube-controller-manager first observes this StorageVersionMigration resource.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition\": {\n      \"description\": \"CustomResourceColumnDefinition specifies a column for server side printing.\",\n      \"properties\": {\n        \"description\": {\n          \"description\": \"description is a human readable description of this column.\",\n          \"type\": \"string\"\n        },\n        \"format\": {\n          \"description\": \"format is an optional OpenAPI type definition for this column. The 'name' format is applied to the primary identifier column to assist in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.\",\n          \"type\": \"string\"\n        },\n        \"jsonPath\": {\n          \"description\": \"jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against each custom resource to produce the value for this column.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name is a human readable name for the column.\",\n          \"type\": \"string\"\n        },\n        \"priority\": {\n          \"description\": \"priority is an integer defining the relative importance of this column compared to others. Lower numbers are considered higher priority. Columns that may be omitted in limited space scenarios should be given a priority greater than 0.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"type\": {\n          \"description\": \"type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\",\n        \"jsonPath\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion\": {\n      \"description\": \"CustomResourceConversion describes how to convert different versions of a CR.\",\n      \"properties\": {\n        \"strategy\": {\n          \"description\": \"strategy specifies how custom resources are converted between versions. Allowed values are: - `\\\"None\\\"`: The converter only change the apiVersion and would not touch any other field in the custom resource. - `\\\"Webhook\\\"`: API Server will call to an external webhook to do the conversion. Additional information\\n  is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set.\",\n          \"type\": \"string\"\n        },\n        \"webhook\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion\",\n          \"description\": \"webhook describes how to call the conversion webhook. Required when `strategy` is set to `\\\"Webhook\\\"`.\"\n        }\n      },\n      \"required\": [\n        \"strategy\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\": {\n      \"description\": \"CustomResourceDefinition represents a resource that should be exposed on the API server.  Its name MUST be in the format <.spec.name>.<.spec.group>.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec\",\n          \"description\": \"spec describes how the user wants the resources to appear\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus\",\n          \"description\": \"status indicates the actual state of the CustomResourceDefinition\"\n        }\n      },\n      \"required\": [\n        \"spec\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition\": {\n      \"description\": \"CustomResourceDefinitionCondition contains details for the current condition of this pod.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastTransitionTime last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"message is a human-readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"reason is a unique, one-word, CamelCase reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"status is the status of the condition. Can be True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"type is the type of the condition. Types include Established, NamesAccepted and Terminating.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList\": {\n      \"description\": \"CustomResourceDefinitionList is a list of CustomResourceDefinition objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"items list individual CustomResourceDefinition objects\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinitionList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames\": {\n      \"description\": \"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition\",\n      \"properties\": {\n        \"categories\": {\n          \"description\": \"categories is a list of grouped resources this custom resource belongs to (e.g. 'all'). This is published in API discovery documents, and used by clients to support invocations like `kubectl get all`.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"kind\": {\n          \"description\": \"kind is the serialized kind of the resource. It is normally CamelCase and singular. Custom resource instances will use this value as the `kind` attribute in API calls.\",\n          \"type\": \"string\"\n        },\n        \"listKind\": {\n          \"description\": \"listKind is the serialized kind of the list for this resource. Defaults to \\\"`kind`List\\\".\",\n          \"type\": \"string\"\n        },\n        \"plural\": {\n          \"description\": \"plural is the plural name of the resource to serve. The custom resources are served under `/apis/<group>/<version>/.../<plural>`. Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`). Must be all lowercase.\",\n          \"type\": \"string\"\n        },\n        \"shortNames\": {\n          \"description\": \"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get <shortname>`. It must be all lowercase.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"singular\": {\n          \"description\": \"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"plural\",\n        \"kind\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec\": {\n      \"description\": \"CustomResourceDefinitionSpec describes how a user wants their resource to appear\",\n      \"properties\": {\n        \"conversion\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion\",\n          \"description\": \"conversion defines conversion settings for the CRD.\"\n        },\n        \"group\": {\n          \"description\": \"group is the API group of the defined custom resource. The custom resources are served under `/apis/<group>/...`. Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`).\",\n          \"type\": \"string\"\n        },\n        \"names\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames\",\n          \"description\": \"names specify the resource and kind names for the custom resource.\"\n        },\n        \"preserveUnknownFields\": {\n          \"description\": \"preserveUnknownFields indicates that object fields which are not specified in the OpenAPI schema should be preserved when persisting to storage. apiVersion, kind, metadata and known fields inside metadata are always preserved. This field is deprecated in favor of setting `x-preserve-unknown-fields` to true in `spec.versions[*].schema.openAPIV3Schema`. See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.\",\n          \"type\": \"boolean\"\n        },\n        \"scope\": {\n          \"description\": \"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.\",\n          \"type\": \"string\"\n        },\n        \"versions\": {\n          \"description\": \"versions is the list of all API versions of the defined custom resource. Version names are used to compute the order in which served versions are listed in API discovery. If the version string is \\\"kube-like\\\", it will sort above non \\\"kube-like\\\" version strings, which are ordered lexicographically. \\\"Kube-like\\\" versions start with a \\\"v\\\", then are followed by a number (the major version), then optionally the string \\\"alpha\\\" or \\\"beta\\\" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"group\",\n        \"names\",\n        \"scope\",\n        \"versions\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus\": {\n      \"description\": \"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition\",\n      \"properties\": {\n        \"acceptedNames\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames\",\n          \"description\": \"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.\"\n        },\n        \"conditions\": {\n          \"description\": \"conditions indicate state for particular aspects of a CustomResourceDefinition\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\"\n        },\n        \"storedVersions\": {\n          \"description\": \"storedVersions lists all versions of CustomResources that were ever persisted. Tracking these versions allows a migration path for stored versions in etcd. The field is mutable so a migration controller can finish a migration to another version (ensuring no old objects are left in storage), and then remove the rest of the versions from this list. Versions may not be removed from `spec.versions` while they exist in this list.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion\": {\n      \"description\": \"CustomResourceDefinitionVersion describes a version for CRD.\",\n      \"properties\": {\n        \"additionalPrinterColumns\": {\n          \"description\": \"additionalPrinterColumns specifies additional columns returned in Table output. See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details. If no columns are specified, a single column displaying the age of the custom resource is used.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"deprecated\": {\n          \"description\": \"deprecated indicates this version of the custom resource API is deprecated. When set to true, API requests to this version receive a warning header in the server response. Defaults to false.\",\n          \"type\": \"boolean\"\n        },\n        \"deprecationWarning\": {\n          \"description\": \"deprecationWarning overrides the default warning returned to API clients. May only be set when `deprecated` is true. The default warning indicates this version is deprecated and recommends use of the newest served version of equal or greater stability, if one exists.\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name is the version name, e.g. “v1”, “v2beta1”, etc. The custom resources are served under this version at `/apis/<group>/<version>/...` if `served` is true.\",\n          \"type\": \"string\"\n        },\n        \"schema\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation\",\n          \"description\": \"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.\"\n        },\n        \"selectableFields\": {\n          \"description\": \"selectableFields specifies paths to fields that may be used as field selectors. A maximum of 8 selectable fields are allowed. See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.SelectableField\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"served\": {\n          \"description\": \"served is a flag enabling/disabling this version from being served via REST APIs\",\n          \"type\": \"boolean\"\n        },\n        \"storage\": {\n          \"description\": \"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.\",\n          \"type\": \"boolean\"\n        },\n        \"subresources\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources\",\n          \"description\": \"subresources specify what subresources this version of the defined custom resource have.\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"served\",\n        \"storage\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale\": {\n      \"description\": \"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.\",\n      \"properties\": {\n        \"labelSelectorPath\": {\n          \"description\": \"labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status` or `.spec`. Must be set to work with HorizontalPodAutoscaler. The field pointed by this JSON path must be a string field (not a complex selector struct) which contains a serialized label selector in string form. More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale` subresource will default to the empty string.\",\n          \"type\": \"string\"\n        },\n        \"specReplicasPath\": {\n          \"description\": \"specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.spec`. If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.\",\n          \"type\": \"string\"\n        },\n        \"statusReplicasPath\": {\n          \"description\": \"statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`. Only JSON paths without the array notation are allowed. Must be a JSON Path under `.status`. If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource will default to 0.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"specReplicasPath\",\n        \"statusReplicasPath\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus\": {\n      \"description\": \"CustomResourceSubresourceStatus defines how to serve the status subresource for CustomResources. Status is represented by the `.status` JSON path inside of a CustomResource. When set, * exposes a /status subresource for the custom resource * PUT requests to the /status subresource take a custom resource object, and ignore changes to anything except the status stanza * PUT/POST/PATCH requests to the custom resource ignore changes to the status stanza\",\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources\": {\n      \"description\": \"CustomResourceSubresources defines the status and scale subresources for CustomResources.\",\n      \"properties\": {\n        \"scale\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale\",\n          \"description\": \"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus\",\n          \"description\": \"status indicates the custom resource should serve a `/status` subresource. When enabled: 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object. 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation\": {\n      \"description\": \"CustomResourceValidation is a list of validation methods for CustomResources.\",\n      \"properties\": {\n        \"openAPIV3Schema\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\",\n          \"description\": \"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation\": {\n      \"description\": \"ExternalDocumentation allows referencing an external resource for extended documentation.\",\n      \"properties\": {\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON\": {\n      \"description\": \"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\": {\n      \"description\": \"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).\",\n      \"properties\": {\n        \"$ref\": {\n          \"type\": \"string\"\n        },\n        \"$schema\": {\n          \"type\": \"string\"\n        },\n        \"additionalItems\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool\"\n        },\n        \"additionalProperties\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool\"\n        },\n        \"allOf\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"anyOf\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"default\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON\",\n          \"description\": \"default is a default value for undefined object fields. Defaulting is a beta feature under the CustomResourceDefaulting feature gate. Defaulting requires spec.preserveUnknownFields to be false.\"\n        },\n        \"definitions\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\"\n          },\n          \"type\": \"object\"\n        },\n        \"dependencies\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray\"\n          },\n          \"type\": \"object\"\n        },\n        \"description\": {\n          \"type\": \"string\"\n        },\n        \"enum\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"example\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON\"\n        },\n        \"exclusiveMaximum\": {\n          \"type\": \"boolean\"\n        },\n        \"exclusiveMinimum\": {\n          \"type\": \"boolean\"\n        },\n        \"externalDocs\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation\"\n        },\n        \"format\": {\n          \"description\": \"format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:\\n\\n- bsonobjectid: a bson object ID, i.e. a 24 characters hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI - email: an email address as parsed by Golang net/mail.ParseAddress - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC address as parsed by Golang net.ParseMAC - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ - isbn: an ISBN10 or ISBN13 number string like \\\"0321751043\\\" or \\\"978-0321751041\\\" - isbn10: an ISBN10 number string like \\\"0321751043\\\" - isbn13: an ISBN13 number string like \\\"978-0321751041\\\" - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$ - hexcolor: an hexadecimal color code like \\\"#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like \\\"rgb(255,255,2559\\\" - byte: base64 encoded binary data - password: any kind of string - date: a date string like \\\"2006-01-02\\\" as defined by full-date in RFC3339 - duration: a duration string like \\\"22 ns\\\" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like \\\"2014-12-15T19:30:20.000Z\\\" as defined by date-time in RFC3339.\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray\"\n        },\n        \"maxItems\": {\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"maxLength\": {\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"maxProperties\": {\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"maximum\": {\n          \"format\": \"double\",\n          \"type\": \"number\"\n        },\n        \"minItems\": {\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"minLength\": {\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"minProperties\": {\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"minimum\": {\n          \"format\": \"double\",\n          \"type\": \"number\"\n        },\n        \"multipleOf\": {\n          \"format\": \"double\",\n          \"type\": \"number\"\n        },\n        \"not\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\"\n        },\n        \"nullable\": {\n          \"type\": \"boolean\"\n        },\n        \"oneOf\": {\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"pattern\": {\n          \"type\": \"string\"\n        },\n        \"patternProperties\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\"\n          },\n          \"type\": \"object\"\n        },\n        \"properties\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps\"\n          },\n          \"type\": \"object\"\n        },\n        \"required\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"title\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        },\n        \"uniqueItems\": {\n          \"type\": \"boolean\"\n        },\n        \"x-kubernetes-embedded-resource\": {\n          \"description\": \"x-kubernetes-embedded-resource defines that the value is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. The type must be object. It is allowed to further restrict the embedded object. kind, apiVersion and metadata are validated automatically. x-kubernetes-preserve-unknown-fields is allowed to be true, but does not have to be if the object is fully specified (up to kind, apiVersion, metadata).\",\n          \"type\": \"boolean\"\n        },\n        \"x-kubernetes-int-or-string\": {\n          \"description\": \"x-kubernetes-int-or-string specifies that this value is either an integer or a string. If this is true, an empty type is allowed and type as child of anyOf is permitted if following one of the following patterns:\\n\\n1) anyOf:\\n   - type: integer\\n   - type: string\\n2) allOf:\\n   - anyOf:\\n     - type: integer\\n     - type: string\\n   - ... zero or more\",\n          \"type\": \"boolean\"\n        },\n        \"x-kubernetes-list-map-keys\": {\n          \"description\": \"x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used as the index of the map.\\n\\nThis tag MUST only be used on lists that have the \\\"x-kubernetes-list-type\\\" extension set to \\\"map\\\". Also, the values specified for this attribute must be a scalar typed field of the child structure (no nesting is supported).\\n\\nThe properties specified must either be required or have a default value, to ensure those properties are present for all list items.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"x-kubernetes-list-type\": {\n          \"description\": \"x-kubernetes-list-type annotates an array to further describe its topology. This extension must only be used on lists and may have 3 possible values:\\n\\n1) `atomic`: the list is treated as a single entity, like a scalar.\\n     Atomic lists will be entirely replaced when updated. This extension\\n     may be used on any type of list (struct, scalar, ...).\\n2) `set`:\\n     Sets are lists that must not have multiple items with the same value. Each\\n     value must be a scalar, an object with x-kubernetes-map-type `atomic` or an\\n     array with x-kubernetes-list-type `atomic`.\\n3) `map`:\\n     These lists are like maps in that their elements have a non-index key\\n     used to identify them. Order is preserved upon merge. The map tag\\n     must only be used on a list with elements of type object.\\nDefaults to atomic for arrays.\",\n          \"type\": \"string\"\n        },\n        \"x-kubernetes-map-type\": {\n          \"description\": \"x-kubernetes-map-type annotates an object to further describe its topology. This extension must only be used when type is object and may have 2 possible values:\\n\\n1) `granular`:\\n     These maps are actual maps (key-value pairs) and each fields are independent\\n     from each other (they can each be manipulated by separate actors). This is\\n     the default behaviour for all maps.\\n2) `atomic`: the list is treated as a single entity, like a scalar.\\n     Atomic maps will be entirely replaced when updated.\",\n          \"type\": \"string\"\n        },\n        \"x-kubernetes-preserve-unknown-fields\": {\n          \"description\": \"x-kubernetes-preserve-unknown-fields stops the API server decoding step from pruning fields which are not specified in the validation schema. This affects fields recursively, but switches back to normal pruning behaviour if nested properties or additionalProperties are specified in the schema. This can either be true or undefined. False is forbidden.\",\n          \"type\": \"boolean\"\n        },\n        \"x-kubernetes-validations\": {\n          \"description\": \"x-kubernetes-validations describes a list of validation rules written in the CEL expression language.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"rule\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"rule\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray\": {\n      \"description\": \"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes.\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool\": {\n      \"description\": \"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property.\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray\": {\n      \"description\": \"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.SelectableField\": {\n      \"description\": \"SelectableField specifies the JSON path of a field that may be used with field selectors.\",\n      \"properties\": {\n        \"jsonPath\": {\n          \"description\": \"jsonPath is a simple JSON path which is evaluated against each custom resource to produce a field selector value. Only JSON paths without the array notation are allowed. Must point to a field of type string, boolean or integer. Types with enum values and strings with formats are allowed. If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string. Must not point to metdata fields. Required.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"jsonPath\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference\": {\n      \"description\": \"ServiceReference holds a reference to Service.legacy.k8s.io\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"name is the name of the service. Required\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"namespace is the namespace of the service. Required\",\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"description\": \"path is an optional URL path at which the webhook will be contacted.\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"description\": \"port is an optional service port at which the webhook will be contacted. `port` should be a valid port number (1-65535, inclusive). Defaults to 443 for backward compatibility.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"namespace\",\n        \"name\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule\": {\n      \"description\": \"ValidationRule describes a validation rule written in the CEL expression language.\",\n      \"properties\": {\n        \"fieldPath\": {\n          \"description\": \"fieldPath represents the field path returned when the validation fails. It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` It does not support list numeric index. It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info. Numeric index of array is not supported. For field name which contains special characters, use `['specialName']` to refer the field name. e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`\",\n          \"type\": \"string\"\n        },\n        \"message\": {\n          \"description\": \"Message represents the message displayed when validation fails. The message is required if the Rule contains line breaks. The message must not contain line breaks. If unset, the message is \\\"failed rule: {Rule}\\\". e.g. \\\"must be a URL with the host matching spec.host\\\"\",\n          \"type\": \"string\"\n        },\n        \"messageExpression\": {\n          \"description\": \"MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a rule, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the rule; the only difference is the return type. Example: \\\"x must be less than max (\\\"+string(self.max)+\\\")\\\"\",\n          \"type\": \"string\"\n        },\n        \"optionalOldSelf\": {\n          \"description\": \"optionalOldSelf is used to opt a transition rule into evaluation even when the object is first created, or if the old object is missing the value.\\n\\nWhen enabled `oldSelf` will be a CEL optional whose value will be `None` if there is no old value, or when the object is initially created.\\n\\nYou may check for presence of oldSelf using `oldSelf.hasValue()` and unwrap it after checking using `oldSelf.value()`. Check the CEL documentation for Optional types for more information: https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes\\n\\nMay not be set unless `oldSelf` is used in `rule`.\",\n          \"type\": \"boolean\"\n        },\n        \"reason\": {\n          \"description\": \"reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \\\"FieldValueInvalid\\\", \\\"FieldValueForbidden\\\", \\\"FieldValueRequired\\\", \\\"FieldValueDuplicate\\\". If not set, default to use \\\"FieldValueInvalid\\\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.\",\n          \"type\": \"string\"\n        },\n        \"rule\": {\n          \"description\": \"Rule represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. The `self` variable in the CEL expression is bound to the scoped value. Example: - Rule scoped to the root of a resource with a status subresource: {\\\"rule\\\": \\\"self.status.actual <= self.spec.maxDesired\\\"}\\n\\nIf the Rule is scoped to an object with properties, the accessible properties of the object are field selectable via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as absent fields in CEL expressions. If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map are accessible via CEL macros and functions such as `self.all(...)`. If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and functions. If the Rule is scoped to a scalar, `self` is bound to the scalar value. Examples: - Rule scoped to a map of objects: {\\\"rule\\\": \\\"self.components['Widget'].priority < 10\\\"} - Rule scoped to a list of integers: {\\\"rule\\\": \\\"self.values.all(value, value >= 0 && value < 100)\\\"} - Rule scoped to a string value: {\\\"rule\\\": \\\"self.startsWith('kube')\\\"}\\n\\nThe `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.\\n\\nUnknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL expressions. This includes: - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields. - Object properties where the property schema is of an \\\"unknown type\\\". An \\\"unknown type\\\" is recursively defined as:\\n  - A schema with no type and x-kubernetes-preserve-unknown-fields set to true\\n  - An array where the items schema is of an \\\"unknown type\\\"\\n  - An object where the additionalProperties schema is of an \\\"unknown type\\\"\\n\\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\\n\\t  \\\"true\\\", \\\"false\\\", \\\"null\\\", \\\"in\\\", \\\"as\\\", \\\"break\\\", \\\"const\\\", \\\"continue\\\", \\\"else\\\", \\\"for\\\", \\\"function\\\", \\\"if\\\",\\n\\t  \\\"import\\\", \\\"let\\\", \\\"loop\\\", \\\"package\\\", \\\"namespace\\\", \\\"return\\\".\\nExamples:\\n  - Rule accessing a property named \\\"namespace\\\": {\\\"rule\\\": \\\"self.__namespace__ > 0\\\"}\\n  - Rule accessing a property named \\\"x-prop\\\": {\\\"rule\\\": \\\"self.x__dash__prop > 0\\\"}\\n  - Rule accessing a property named \\\"redact__d\\\": {\\\"rule\\\": \\\"self.redact__underscores__d > 0\\\"}\\n\\nEquality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:\\n  - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and\\n    non-intersecting elements in `Y` are appended, retaining their partial order.\\n  - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values\\n    are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with\\n    non-intersecting keys are appended, retaining their partial order.\\n\\nIf `rule` makes use of the `oldSelf` variable it is implicitly a `transition rule`.\\n\\nBy default, the `oldSelf` variable is the same type as `self`. When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional\\n variable whose value() is the same type as `self`.\\nSee the documentation for the `optionalOldSelf` field for details.\\n\\nTransition rules by default are applied only on UPDATE requests and are skipped if an old value could not be found. You can opt a transition rule into unconditional evaluation by setting `optionalOldSelf` to true.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"rule\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig\": {\n      \"description\": \"WebhookClientConfig contains the information to make a TLS connection with the webhook.\",\n      \"properties\": {\n        \"caBundle\": {\n          \"description\": \"caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.\",\n          \"format\": \"byte\",\n          \"type\": \"string\"\n        },\n        \"service\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference\",\n          \"description\": \"service is a reference to the service for this webhook. Either service or url must be specified.\\n\\nIf the webhook is running within the cluster, then you should use `service`.\"\n        },\n        \"url\": {\n          \"description\": \"url gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\\n\\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\\n\\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\\n\\nThe scheme must be \\\"https\\\"; the URL must begin with \\\"https://\\\".\\n\\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\\n\\nAttempting to use a user or basic auth e.g. \\\"user:password@\\\" is not allowed. Fragments (\\\"#...\\\") and query parameters (\\\"?...\\\") are not allowed, either.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion\": {\n      \"description\": \"WebhookConversion describes how to call a conversion webhook\",\n      \"properties\": {\n        \"clientConfig\": {\n          \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig\",\n          \"description\": \"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.\"\n        },\n        \"conversionReviewVersions\": {\n          \"description\": \"conversionReviewVersions is an ordered list of preferred `ConversionReview` versions the Webhook expects. The API server will use the first version in the list which it supports. If none of the versions specified in this list are supported by API server, conversion will fail for the custom resource. If a persisted Webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"conversionReviewVersions\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.api.resource.Quantity\": {\n      \"description\": \"Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\\n\\nThe serialization format is:\\n\\n``` <quantity>        ::= <signedNumber><suffix>\\n\\n\\t(Note that <suffix> may be empty, from the \\\"\\\" case in <decimalSI>.)\\n\\n<digit>           ::= 0 | 1 | ... | 9 <digits>          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> <sign>            ::= \\\"+\\\" | \\\"-\\\" <signedNumber>    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei\\n\\n\\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\\n\\n<decimalSI>       ::= m | \\\"\\\" | k | M | G | T | P | E\\n\\n\\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\\n\\n<decimalExponent> ::= \\\"e\\\" <signedNumber> | \\\"E\\\" <signedNumber> ```\\n\\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\\n\\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\\n\\nBefore serializing, Quantity will be put in \\\"canonical form\\\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\\n\\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\\n\\nThe sign will be omitted unless the number is negative.\\n\\nExamples:\\n\\n- 1.5 will be serialized as \\\"1500m\\\" - 1.5Gi will be serialized as \\\"1536Mi\\\"\\n\\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\\n\\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\\n\\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.\",\n      \"type\": \"string\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\": {\n      \"description\": \"APIGroup contains the name, the supported versions, and the preferred version of a group.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name is the name of the group.\",\n          \"type\": \"string\"\n        },\n        \"preferredVersion\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery\",\n          \"description\": \"preferredVersion is the version preferred by the API server, which probably is the storage version.\"\n        },\n        \"serverAddressByClientCIDRs\": {\n          \"description\": \"a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"versions\": {\n          \"description\": \"versions are the versions supported in this group.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"versions\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"APIGroup\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList\": {\n      \"description\": \"APIGroupList is a list of APIGroup, to allow clients to discover the API at /apis.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"groups\": {\n          \"description\": \"groups is a list of APIGroup.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"groups\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"APIGroupList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource\": {\n      \"description\": \"APIResource specifies the name of a resource and whether it is namespaced.\",\n      \"properties\": {\n        \"categories\": {\n          \"description\": \"categories is a list of the grouped resources this resource belongs to (e.g. 'all')\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"group\": {\n          \"description\": \"group is the preferred group of the resource.  Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale\\\".\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"name is the plural name of the resource.\",\n          \"type\": \"string\"\n        },\n        \"namespaced\": {\n          \"description\": \"namespaced indicates if a resource is namespaced or not.\",\n          \"type\": \"boolean\"\n        },\n        \"shortNames\": {\n          \"description\": \"shortNames is a list of suggested short names of the resource.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"singularName\": {\n          \"description\": \"singularName is the singular name of the resource.  This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.\",\n          \"type\": \"string\"\n        },\n        \"storageVersionHash\": {\n          \"description\": \"The hash value of the storage version, the version this resource is converted to when written to the data store. Value must be treated as opaque by clients. Only equality comparison on the value is valid. This is an alpha feature and may change or be removed in the future. The field is populated by the apiserver only if the StorageVersionHash feature gate is enabled. This field will remain optional even if it graduates.\",\n          \"type\": \"string\"\n        },\n        \"verbs\": {\n          \"description\": \"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        },\n        \"version\": {\n          \"description\": \"version is the preferred version of the resource.  Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)\\\".\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"singularName\",\n        \"namespaced\",\n        \"kind\",\n        \"verbs\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\": {\n      \"description\": \"APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"groupVersion\": {\n          \"description\": \"groupVersion is the group and version this APIResourceList is for.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"resources\": {\n          \"description\": \"resources contains the name of the resources and if they are namespaced.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"groupVersion\",\n        \"resources\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"APIResourceList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions\": {\n      \"description\": \"APIVersions lists the versions that are available, to allow clients to discover the API at /api, which is the root path of the legacy v1 API.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"serverAddressByClientCIDRs\": {\n          \"description\": \"a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"versions\": {\n          \"description\": \"versions are the api versions that are available.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"versions\",\n        \"serverAddressByClientCIDRs\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"APIVersions\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.Condition\": {\n      \"description\": \"Condition contains details for one aspect of the current state of this API Resource.\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.\"\n        },\n        \"message\": {\n          \"description\": \"message is a human readable message indicating details about the transition. This may be an empty string.\",\n          \"type\": \"string\"\n        },\n        \"observedGeneration\": {\n          \"description\": \"observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"reason\": {\n          \"description\": \"reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"status of the condition, one of True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"type of condition in CamelCase or in foo.example.com/CamelCase.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\",\n        \"lastTransitionTime\",\n        \"reason\",\n        \"message\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions\": {\n      \"description\": \"DeleteOptions may be provided when deleting an API object.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"dryRun\": {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"gracePeriodSeconds\": {\n          \"description\": \"The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"orphanDependents\": {\n          \"description\": \"Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \\\"orphan\\\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.\",\n          \"type\": \"boolean\"\n        },\n        \"preconditions\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions\",\n          \"description\": \"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.\"\n        },\n        \"propagationPolicy\": {\n          \"description\": \"Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"admission.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"admission.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"apps\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"apps\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"apps\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta2\"\n        },\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v2\"\n        },\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v2beta1\"\n        },\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v2beta2\"\n        },\n        {\n          \"group\": \"batch\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"batch\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"extensions\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta2\"\n        },\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta3\"\n        },\n        {\n          \"group\": \"imagepolicy.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"policy\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"policy\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha3\"\n        },\n        {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"DeleteOptions\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.FieldSelectorRequirement\": {\n      \"description\": \"FieldSelectorRequirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"key is the field selector key that the requirement applies to.\",\n          \"type\": \"string\"\n        },\n        \"operator\": {\n          \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. The list of operators may grow in the future.\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"operator\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1\": {\n      \"description\": \"FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\\n\\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> is position of a item in a list 'k:<keys>', where <keys> is a map of  a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\\n\\nThe exact format is defined in sigs.k8s.io/structured-merge-diff\",\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery\": {\n      \"description\": \"GroupVersion contains the \\\"group/version\\\" and \\\"version\\\" string of a version. It is made a struct to keep extensibility.\",\n      \"properties\": {\n        \"groupVersion\": {\n          \"description\": \"groupVersion specifies the API group and version in the form \\\"group/version\\\"\",\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"description\": \"version specifies the version in the form of \\\"version\\\". This is to save the clients the trouble of splitting the GroupVersion.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"groupVersion\",\n        \"version\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector\": {\n      \"description\": \"A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.\",\n      \"properties\": {\n        \"matchExpressions\": {\n          \"description\": \"matchExpressions is a list of label selector requirements. The requirements are ANDed.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"matchLabels\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \\\"key\\\", the operator is \\\"In\\\", and the values array contains only \\\"value\\\". The requirements are ANDed.\",\n          \"type\": \"object\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement\": {\n      \"description\": \"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.\",\n      \"properties\": {\n        \"key\": {\n          \"description\": \"key is the label key that the selector applies to.\",\n          \"type\": \"string\"\n        },\n        \"operator\": {\n          \"description\": \"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"description\": \"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        }\n      },\n      \"required\": [\n        \"key\",\n        \"operator\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\": {\n      \"description\": \"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.\",\n      \"properties\": {\n        \"continue\": {\n          \"description\": \"continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.\",\n          \"type\": \"string\"\n        },\n        \"remainingItemCount\": {\n          \"description\": \"remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"resourceVersion\": {\n          \"description\": \"String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n          \"type\": \"string\"\n        },\n        \"selfLink\": {\n          \"description\": \"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry\": {\n      \"description\": \"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the version of this resource that this field set applies to. The format is \\\"group/version\\\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.\",\n          \"type\": \"string\"\n        },\n        \"fieldsType\": {\n          \"description\": \"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \\\"FieldsV1\\\"\",\n          \"type\": \"string\"\n        },\n        \"fieldsV1\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1\",\n          \"description\": \"FieldsV1 holds the first JSON version format as described in the \\\"FieldsV1\\\" type.\"\n        },\n        \"manager\": {\n          \"description\": \"Manager is an identifier of the workflow managing these fields.\",\n          \"type\": \"string\"\n        },\n        \"operation\": {\n          \"description\": \"Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.\",\n          \"type\": \"string\"\n        },\n        \"subresource\": {\n          \"description\": \"Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.\",\n          \"type\": \"string\"\n        },\n        \"time\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Time is the timestamp of when the ManagedFields entry was added. The timestamp will also be updated if a field is added, the manager changes any of the owned fields value or removes a field. The timestamp does not update when a field is removed from the entry because another manager took it over.\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime\": {\n      \"description\": \"MicroTime is version of Time with microsecond level precision.\",\n      \"format\": \"date-time\",\n      \"type\": \"string\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\": {\n      \"description\": \"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.\",\n      \"properties\": {\n        \"annotations\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\",\n          \"type\": \"object\"\n        },\n        \"creationTimestamp\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\\n\\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"deletionGracePeriodSeconds\": {\n          \"description\": \"Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"deletionTimestamp\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\\n\\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"finalizers\": {\n          \"description\": \"Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order.  Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.\",\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"set\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"generateName\": {\n          \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\\n\\nIf this field is specified and the generated name exists, the server will return a 409.\\n\\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\",\n          \"type\": \"string\"\n        },\n        \"generation\": {\n          \"description\": \"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.\",\n          \"format\": \"int64\",\n          \"type\": \"integer\"\n        },\n        \"labels\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\",\n          \"type\": \"object\"\n        },\n        \"managedFields\": {\n          \"description\": \"ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \\\"ci-cd\\\". The set of fields is always in the version that the workflow used when modifying the object.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"name\": {\n          \"description\": \"Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \\\"default\\\" namespace, but \\\"default\\\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\\n\\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces\",\n          \"type\": \"string\"\n        },\n        \"ownerReferences\": {\n          \"description\": \"List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"uid\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"uid\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        },\n        \"resourceVersion\": {\n          \"description\": \"An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\\n\\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency\",\n          \"type\": \"string\"\n        },\n        \"selfLink\": {\n          \"description\": \"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.\",\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"description\": \"UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\\n\\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference\": {\n      \"description\": \"OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"API version of the referent.\",\n          \"type\": \"string\"\n        },\n        \"blockOwnerDeletion\": {\n          \"description\": \"If true, AND if the owner has the \\\"foregroundDeletion\\\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \\\"delete\\\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.\",\n          \"type\": \"boolean\"\n        },\n        \"controller\": {\n          \"description\": \"If true, this reference points to the managing controller.\",\n          \"type\": \"boolean\"\n        },\n        \"kind\": {\n          \"description\": \"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names\",\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"description\": \"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"apiVersion\",\n        \"kind\",\n        \"name\",\n        \"uid\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-map-type\": \"atomic\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.Patch\": {\n      \"description\": \"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.\",\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions\": {\n      \"description\": \"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.\",\n      \"properties\": {\n        \"resourceVersion\": {\n          \"description\": \"Specifies the target ResourceVersion\",\n          \"type\": \"string\"\n        },\n        \"uid\": {\n          \"description\": \"Specifies the target UID.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR\": {\n      \"description\": \"ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.\",\n      \"properties\": {\n        \"clientCIDR\": {\n          \"description\": \"The CIDR with which clients can match their IP to figure out the server address that they should use.\",\n          \"type\": \"string\"\n        },\n        \"serverAddress\": {\n          \"description\": \"Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"clientCIDR\",\n        \"serverAddress\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.Status\": {\n      \"description\": \"Status is a return value for calls that don't return other objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"code\": {\n          \"description\": \"Suggested HTTP return code for this status, 0 if not set.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"details\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails\",\n          \"description\": \"Extended data associated with the reason.  Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"message\": {\n          \"description\": \"A human-readable description of the status of this operation.\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"\n        },\n        \"reason\": {\n          \"description\": \"A machine-readable description of why this operation is in the \\\"Failure\\\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status of the operation. One of: \\\"Success\\\" or \\\"Failure\\\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"Status\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause\": {\n      \"description\": \"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.\",\n      \"properties\": {\n        \"field\": {\n          \"description\": \"The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed.  Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\\n\\nExamples:\\n  \\\"name\\\" - the field \\\"name\\\" on the current resource\\n  \\\"items[0].name\\\" - the field \\\"name\\\" on the first array entry in \\\"items\\\"\",\n          \"type\": \"string\"\n        },\n        \"message\": {\n          \"description\": \"A human-readable description of the cause of the error.  This field may be presented as-is to a reader.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"A machine-readable description of the cause of the error. If this value is empty there is no information available.\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails\": {\n      \"description\": \"StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.\",\n      \"properties\": {\n        \"causes\": {\n          \"description\": \"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"group\": {\n          \"description\": \"The group attribute of the resource associated with the status StatusReason.\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).\",\n          \"type\": \"string\"\n        },\n        \"retryAfterSeconds\": {\n          \"description\": \"If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"uid\": {\n          \"description\": \"UID of the resource. (when there is a single resource which can be described). More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\",\n          \"type\": \"string\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.Time\": {\n      \"description\": \"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON.  Wrappers are provided for many of the factory methods that the time package offers.\",\n      \"format\": \"date-time\",\n      \"type\": \"string\"\n    },\n    \"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\": {\n      \"description\": \"Event represents a single event to a watched resource.\",\n      \"properties\": {\n        \"object\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension\",\n          \"description\": \"Object is:\\n * If Type is Added or Modified: the new state of the object.\\n * If Type is Deleted: the state of the object immediately before deletion.\\n * If Type is Error: *Status is recommended; other types may make sense\\n   depending on context.\"\n        },\n        \"type\": {\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"object\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"admission.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"admission.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"apps\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"apps\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"apps\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta2\"\n        },\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v2\"\n        },\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v2beta1\"\n        },\n        {\n          \"group\": \"autoscaling\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v2beta2\"\n        },\n        {\n          \"group\": \"batch\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"batch\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"extensions\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta2\"\n        },\n        {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta3\"\n        },\n        {\n          \"group\": \"imagepolicy.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"policy\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"policy\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha3\"\n        },\n        {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1\"\n        },\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        },\n        {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1beta1\"\n        },\n        {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"WatchEvent\",\n          \"version\": \"v1alpha1\"\n        }\n      ]\n    },\n    \"io.k8s.apimachinery.pkg.runtime.RawExtension\": {\n      \"description\": \"RawExtension is used to hold extensions in external versions.\\n\\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\\n\\n// Internal package:\\n\\n\\ttype MyAPIObject struct {\\n\\t\\truntime.TypeMeta `json:\\\",inline\\\"`\\n\\t\\tMyPlugin runtime.Object `json:\\\"myPlugin\\\"`\\n\\t}\\n\\n\\ttype PluginA struct {\\n\\t\\tAOption string `json:\\\"aOption\\\"`\\n\\t}\\n\\n// External package:\\n\\n\\ttype MyAPIObject struct {\\n\\t\\truntime.TypeMeta `json:\\\",inline\\\"`\\n\\t\\tMyPlugin runtime.RawExtension `json:\\\"myPlugin\\\"`\\n\\t}\\n\\n\\ttype PluginA struct {\\n\\t\\tAOption string `json:\\\"aOption\\\"`\\n\\t}\\n\\n// On the wire, the JSON will look something like this:\\n\\n\\t{\\n\\t\\t\\\"kind\\\":\\\"MyAPIObject\\\",\\n\\t\\t\\\"apiVersion\\\":\\\"v1\\\",\\n\\t\\t\\\"myPlugin\\\": {\\n\\t\\t\\t\\\"kind\\\":\\\"PluginA\\\",\\n\\t\\t\\t\\\"aOption\\\":\\\"foo\\\",\\n\\t\\t},\\n\\t}\\n\\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)\",\n      \"type\": \"object\"\n    },\n    \"io.k8s.apimachinery.pkg.util.intstr.IntOrString\": {\n      \"description\": \"IntOrString is a type that can hold an int32 or a string.  When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type.  This allows you to have, for example, a JSON field that can accept a name or number.\",\n      \"format\": \"int-or-string\",\n      \"type\": \"string\"\n    },\n    \"io.k8s.apimachinery.pkg.version.Info\": {\n      \"description\": \"Info contains versioning information. how we'll want to distribute that information.\",\n      \"properties\": {\n        \"buildDate\": {\n          \"type\": \"string\"\n        },\n        \"compiler\": {\n          \"type\": \"string\"\n        },\n        \"gitCommit\": {\n          \"type\": \"string\"\n        },\n        \"gitTreeState\": {\n          \"type\": \"string\"\n        },\n        \"gitVersion\": {\n          \"type\": \"string\"\n        },\n        \"goVersion\": {\n          \"type\": \"string\"\n        },\n        \"major\": {\n          \"type\": \"string\"\n        },\n        \"minor\": {\n          \"type\": \"string\"\n        },\n        \"platform\": {\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"major\",\n        \"minor\",\n        \"gitVersion\",\n        \"gitCommit\",\n        \"gitTreeState\",\n        \"buildDate\",\n        \"goVersion\",\n        \"compiler\",\n        \"platform\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\": {\n      \"description\": \"APIService represents a server for a particular GroupVersion. Name must be \\\"version.group\\\".\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta\",\n          \"description\": \"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        },\n        \"spec\": {\n          \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec\",\n          \"description\": \"Spec contains information for locating and communicating with a server\"\n        },\n        \"status\": {\n          \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceStatus\",\n          \"description\": \"Status contains derived information about an API server\"\n        }\n      },\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceCondition\": {\n      \"description\": \"APIServiceCondition describes the state of an APIService at a particular point\",\n      \"properties\": {\n        \"lastTransitionTime\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time\",\n          \"description\": \"Last time the condition transitioned from one status to another.\"\n        },\n        \"message\": {\n          \"description\": \"Human-readable message indicating details about last transition.\",\n          \"type\": \"string\"\n        },\n        \"reason\": {\n          \"description\": \"Unique, one-word, CamelCase reason for the condition's last transition.\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"description\": \"Status is the status of the condition. Can be True, False, Unknown.\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"description\": \"Type is the type of the condition.\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"status\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList\": {\n      \"description\": \"APIServiceList is a list of APIService objects.\",\n      \"properties\": {\n        \"apiVersion\": {\n          \"description\": \"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources\",\n          \"type\": \"string\"\n        },\n        \"items\": {\n          \"description\": \"Items is the list of APIService\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n          },\n          \"type\": \"array\"\n        },\n        \"kind\": {\n          \"description\": \"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta\",\n          \"description\": \"Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"type\": \"object\",\n      \"x-kubernetes-group-version-kind\": [\n        {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIServiceList\",\n          \"version\": \"v1\"\n        }\n      ]\n    },\n    \"io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec\": {\n      \"description\": \"APIServiceSpec contains information for locating and communicating with a server. Only https is supported, though you are able to disable certificate verification.\",\n      \"properties\": {\n        \"caBundle\": {\n          \"description\": \"CABundle is a PEM encoded CA bundle which will be used to validate an API server's serving certificate. If unspecified, system trust roots on the apiserver are used.\",\n          \"format\": \"byte\",\n          \"type\": \"string\",\n          \"x-kubernetes-list-type\": \"atomic\"\n        },\n        \"group\": {\n          \"description\": \"Group is the API group name this server hosts\",\n          \"type\": \"string\"\n        },\n        \"groupPriorityMinimum\": {\n          \"description\": \"GroupPriorityMinimum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMinimum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object.  (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        },\n        \"insecureSkipTLSVerify\": {\n          \"description\": \"InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged.  You should use the CABundle instead.\",\n          \"type\": \"boolean\"\n        },\n        \"service\": {\n          \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.ServiceReference\",\n          \"description\": \"Service is a reference to the service for this API server.  It must communicate on port 443. If the Service is nil, that means the handling for the API groupversion is handled locally on this server. The call will simply delegate to the normal handler chain to be fulfilled.\"\n        },\n        \"version\": {\n          \"description\": \"Version is the API version this server hosts.  For example, \\\"v1\\\"\",\n          \"type\": \"string\"\n        },\n        \"versionPriority\": {\n          \"description\": \"VersionPriority controls the ordering of this API version inside of its group.  Must be greater than zero. The primary sort is based on VersionPriority, ordered highest to lowest (20 before 10). Since it's inside of a group, the number can be small, probably in the 10s. In case of equal version priorities, the version string will be used to compute the order inside a group. If the version string is \\\"kube-like\\\", it will sort above non \\\"kube-like\\\" version strings, which are ordered lexicographically. \\\"Kube-like\\\" versions start with a \\\"v\\\", then are followed by a number (the major version), then optionally the string \\\"alpha\\\" or \\\"beta\\\" and another number (the minor version). These are sorted first by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing major version, then minor version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"groupPriorityMinimum\",\n        \"versionPriority\"\n      ],\n      \"type\": \"object\"\n    },\n    \"io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceStatus\": {\n      \"description\": \"APIServiceStatus contains derived information about an API server\",\n      \"properties\": {\n        \"conditions\": {\n          \"description\": \"Current service state of apiService.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceCondition\"\n          },\n          \"type\": \"array\",\n          \"x-kubernetes-list-map-keys\": [\n            \"type\"\n          ],\n          \"x-kubernetes-list-type\": \"map\",\n          \"x-kubernetes-patch-merge-key\": \"type\",\n          \"x-kubernetes-patch-strategy\": \"merge\"\n        }\n      },\n      \"type\": \"object\"\n    },\n    \"io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.ServiceReference\": {\n      \"description\": \"ServiceReference holds a reference to Service.legacy.k8s.io\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Name is the name of the service\",\n          \"type\": \"string\"\n        },\n        \"namespace\": {\n          \"description\": \"Namespace is the namespace of the service\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"description\": \"If specified, the port on the service that hosting webhook. Default to 443 for backward compatibility. `port` should be a valid port number (1-65535, inclusive).\",\n          \"format\": \"int32\",\n          \"type\": \"integer\"\n        }\n      },\n      \"type\": \"object\"\n    }\n  },\n  \"info\": {\n    \"title\": \"Kubernetes\",\n    \"version\": \"unversioned\"\n  },\n  \"parameters\": {\n    \"allowWatchBookmarks-HC2hJt-J\": {\n      \"description\": \"allowWatchBookmarks requests watch events with type \\\"BOOKMARK\\\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored.\",\n      \"in\": \"query\",\n      \"name\": \"allowWatchBookmarks\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"body-2Y1dVQaQ\": {\n      \"in\": \"body\",\n      \"name\": \"body\",\n      \"schema\": {\n        \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions\"\n      }\n    },\n    \"body-78PwaGsr\": {\n      \"in\": \"body\",\n      \"name\": \"body\",\n      \"required\": true,\n      \"schema\": {\n        \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch\"\n      }\n    },\n    \"command-Py3eQybp\": {\n      \"description\": \"Command is the remote command to execute. argv array. Not executed within a shell.\",\n      \"in\": \"query\",\n      \"name\": \"command\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"container-1GeXxFDC\": {\n      \"description\": \"The container for which to stream logs. Defaults to only container if there is one container in the pod.\",\n      \"in\": \"query\",\n      \"name\": \"container\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"container-_Q-EJ3nR\": {\n      \"description\": \"The container in which to execute the command. Defaults to only container if there is only one container in the pod.\",\n      \"in\": \"query\",\n      \"name\": \"container\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"container-i5dOmRiM\": {\n      \"description\": \"Container in which to execute the command. Defaults to only container if there is only one container in the pod.\",\n      \"in\": \"query\",\n      \"name\": \"container\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"continue-QfD61s0i\": {\n      \"description\": \"The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \\\"next key\\\".\\n\\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.\",\n      \"in\": \"query\",\n      \"name\": \"continue\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"fieldManager-7c6nTn1T\": {\n      \"description\": \"fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).\",\n      \"in\": \"query\",\n      \"name\": \"fieldManager\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"fieldManager-Qy4HdaTW\": {\n      \"description\": \"fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.\",\n      \"in\": \"query\",\n      \"name\": \"fieldManager\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"fieldSelector-xIcQKXFG\": {\n      \"description\": \"A selector to restrict the list of returned objects by their fields. Defaults to everything.\",\n      \"in\": \"query\",\n      \"name\": \"fieldSelector\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"follow-9OIXh_2R\": {\n      \"description\": \"Follow the log stream of the pod. Defaults to false.\",\n      \"in\": \"query\",\n      \"name\": \"follow\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"force-tOGGb0Yi\": {\n      \"description\": \"Force is going to \\\"force\\\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.\",\n      \"in\": \"query\",\n      \"name\": \"force\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"gracePeriodSeconds--K5HaBOS\": {\n      \"description\": \"The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.\",\n      \"in\": \"query\",\n      \"name\": \"gracePeriodSeconds\",\n      \"type\": \"integer\",\n      \"uniqueItems\": true\n    },\n    \"insecureSkipTLSVerifyBackend-gM00jVbe\": {\n      \"description\": \"insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the serving certificate of the backend it is connecting to.  This will make the HTTPS connection between the apiserver and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real kubelet.  If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept the actual log data coming from the real kubelet).\",\n      \"in\": \"query\",\n      \"name\": \"insecureSkipTLSVerifyBackend\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"labelSelector-5Zw57w4C\": {\n      \"description\": \"A selector to restrict the list of returned objects by their labels. Defaults to everything.\",\n      \"in\": \"query\",\n      \"name\": \"labelSelector\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"limit-1NfNmdNH\": {\n      \"description\": \"limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\\n\\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.\",\n      \"in\": \"query\",\n      \"name\": \"limit\",\n      \"type\": \"integer\",\n      \"uniqueItems\": true\n    },\n    \"limitBytes-zwd1RXuc\": {\n      \"description\": \"If set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit.\",\n      \"in\": \"query\",\n      \"name\": \"limitBytes\",\n      \"type\": \"integer\",\n      \"uniqueItems\": true\n    },\n    \"logpath-Noq7euwC\": {\n      \"description\": \"path to the log\",\n      \"in\": \"path\",\n      \"name\": \"logpath\",\n      \"required\": true,\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"namespace-vgWSWtn3\": {\n      \"description\": \"object name and auth scope, such as for teams and projects\",\n      \"in\": \"path\",\n      \"name\": \"namespace\",\n      \"required\": true,\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"orphanDependents-uRB25kX5\": {\n      \"description\": \"Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \\\"orphan\\\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.\",\n      \"in\": \"query\",\n      \"name\": \"orphanDependents\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"path-QCf0eosM\": {\n      \"description\": \"Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.\",\n      \"in\": \"query\",\n      \"name\": \"path\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"path-oPbzgLUj\": {\n      \"description\": \"Path is the URL path to use for the current proxy request to pod.\",\n      \"in\": \"query\",\n      \"name\": \"path\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"path-rFDtV0x9\": {\n      \"description\": \"Path is the URL path to use for the current proxy request to node.\",\n      \"in\": \"query\",\n      \"name\": \"path\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"path-z6Ciiujn\": {\n      \"description\": \"path to the resource\",\n      \"in\": \"path\",\n      \"name\": \"path\",\n      \"required\": true,\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"ports-91KROJmm\": {\n      \"description\": \"List of ports to forward Required when using WebSockets\",\n      \"in\": \"query\",\n      \"name\": \"ports\",\n      \"type\": \"integer\",\n      \"uniqueItems\": true\n    },\n    \"pretty-tJGM1-ng\": {\n      \"description\": \"If 'true', then the output is pretty printed. Defaults to 'false' unless the user-agent indicates a browser or command-line HTTP tool (curl and wget).\",\n      \"in\": \"query\",\n      \"name\": \"pretty\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"previous-1jxDPu3y\": {\n      \"description\": \"Return previous terminated container logs. Defaults to false.\",\n      \"in\": \"query\",\n      \"name\": \"previous\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"propagationPolicy-6jk3prlO\": {\n      \"description\": \"Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.\",\n      \"in\": \"query\",\n      \"name\": \"propagationPolicy\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"resourceVersion-5WAnf1kx\": {\n      \"description\": \"resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.\\n\\nDefaults to unset\",\n      \"in\": \"query\",\n      \"name\": \"resourceVersion\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"resourceVersionMatch-t8XhRHeC\": {\n      \"description\": \"resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.\\n\\nDefaults to unset\",\n      \"in\": \"query\",\n      \"name\": \"resourceVersionMatch\",\n      \"type\": \"string\",\n      \"uniqueItems\": true\n    },\n    \"sendInitialEvents-rLXlEK_k\": {\n      \"description\": \"`sendInitialEvents=true` may be set together with `watch=true`. In that case, the watch stream will begin with synthetic events to produce the current state of objects in the collection. Once all such events have been sent, a synthetic \\\"Bookmark\\\" event  will be sent. The bookmark will report the ResourceVersion (RV) corresponding to the set of objects, and be marked with `\\\"k8s.io/initial-events-end\\\": \\\"true\\\"` annotation. Afterwards, the watch stream will proceed as usual, sending watch events corresponding to changes (subsequent to the RV) to objects watched.\\n\\nWhen `sendInitialEvents` option is set, we require `resourceVersionMatch` option to also be set. The semantic of the watch request is as following: - `resourceVersionMatch` = NotOlderThan\\n  is interpreted as \\\"data at least as new as the provided `resourceVersion`\\\"\\n  and the bookmark event is send when the state is synced\\n  to a `resourceVersion` at least as fresh as the one provided by the ListOptions.\\n  If `resourceVersion` is unset, this is interpreted as \\\"consistent read\\\" and the\\n  bookmark event is send when the state is synced at least to the moment\\n  when request started being processed.\\n- `resourceVersionMatch` set to any other value or unset\\n  Invalid error is returned.\\n\\nDefaults to true if `resourceVersion=\\\"\\\"` or `resourceVersion=\\\"0\\\"` (for backward compatibility reasons) and to false otherwise.\",\n      \"in\": \"query\",\n      \"name\": \"sendInitialEvents\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"sinceSeconds-vE2NLdnP\": {\n      \"description\": \"A relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.\",\n      \"in\": \"query\",\n      \"name\": \"sinceSeconds\",\n      \"type\": \"integer\",\n      \"uniqueItems\": true\n    },\n    \"stderr-26jJhFUR\": {\n      \"description\": \"Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.\",\n      \"in\": \"query\",\n      \"name\": \"stderr\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"stderr-W_1TNlWc\": {\n      \"description\": \"Redirect the standard error stream of the pod for this call.\",\n      \"in\": \"query\",\n      \"name\": \"stderr\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"stdin-PSzNhyUC\": {\n      \"description\": \"Redirect the standard input stream of the pod for this call. Defaults to false.\",\n      \"in\": \"query\",\n      \"name\": \"stdin\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"stdin-sEFnN3IS\": {\n      \"description\": \"Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.\",\n      \"in\": \"query\",\n      \"name\": \"stdin\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"stdout--EZLRwV1\": {\n      \"description\": \"Redirect the standard output stream of the pod for this call.\",\n      \"in\": \"query\",\n      \"name\": \"stdout\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"stdout-005YMKE6\": {\n      \"description\": \"Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.\",\n      \"in\": \"query\",\n      \"name\": \"stdout\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"tailLines-2fRTNzbP\": {\n      \"description\": \"If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime\",\n      \"in\": \"query\",\n      \"name\": \"tailLines\",\n      \"type\": \"integer\",\n      \"uniqueItems\": true\n    },\n    \"timeoutSeconds-yvYezaOC\": {\n      \"description\": \"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.\",\n      \"in\": \"query\",\n      \"name\": \"timeoutSeconds\",\n      \"type\": \"integer\",\n      \"uniqueItems\": true\n    },\n    \"timestamps-c17fW1w_\": {\n      \"description\": \"If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.\",\n      \"in\": \"query\",\n      \"name\": \"timestamps\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"tty-g7MlET_l\": {\n      \"description\": \"TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false.\",\n      \"in\": \"query\",\n      \"name\": \"tty\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"tty-s0flW37O\": {\n      \"description\": \"TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.\",\n      \"in\": \"query\",\n      \"name\": \"tty\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    },\n    \"watch-XNNPZGbK\": {\n      \"description\": \"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.\",\n      \"in\": \"query\",\n      \"name\": \"watch\",\n      \"type\": \"boolean\",\n      \"uniqueItems\": true\n    }\n  },\n  \"paths\": {\n    \"/.well-known/openid-configuration/\": {\n      \"get\": {\n        \"description\": \"get service account issuer OpenID configuration, also known as the 'OIDC discovery doc'\",\n        \"operationId\": \"getServiceAccountIssuerOpenIDConfiguration\",\n        \"produces\": [\n          \"application/json\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"WellKnown\"\n        ]\n      }\n    },\n    \"/api/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available API versions\",\n        \"operationId\": \"getCoreAPIVersions\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core\"\n        ]\n      }\n    },\n    \"/api/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getCoreV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ]\n      }\n    },\n    \"/api/v1/componentstatuses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list objects of kind ComponentStatus\",\n        \"operationId\": \"listCoreV1ComponentStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ComponentStatusList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ComponentStatus\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/componentstatuses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ComponentStatus\",\n        \"operationId\": \"readCoreV1ComponentStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ComponentStatus\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ComponentStatus\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ComponentStatus\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ]\n    },\n    \"/api/v1/configmaps\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ConfigMap\",\n        \"operationId\": \"listCoreV1ConfigMapForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMapList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/endpoints\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Endpoints\",\n        \"operationId\": \"listCoreV1EndpointsForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.EndpointsList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/events\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Event\",\n        \"operationId\": \"listCoreV1EventForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.EventList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/limitranges\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind LimitRange\",\n        \"operationId\": \"listCoreV1LimitRangeForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRangeList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/namespaces\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Namespace\",\n        \"operationId\": \"listCoreV1Namespace\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.NamespaceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Namespace\",\n        \"operationId\": \"createCoreV1Namespace\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/bindings\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Binding\",\n        \"operationId\": \"createCoreV1NamespacedBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Binding\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Binding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Binding\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Binding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Binding\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/configmaps\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ConfigMap\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedConfigMap\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ConfigMap\",\n        \"operationId\": \"listCoreV1NamespacedConfigMap\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMapList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ConfigMap\",\n        \"operationId\": \"createCoreV1NamespacedConfigMap\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/configmaps/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ConfigMap\",\n        \"operationId\": \"deleteCoreV1NamespacedConfigMap\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ConfigMap\",\n        \"operationId\": \"readCoreV1NamespacedConfigMap\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ConfigMap\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ConfigMap\",\n        \"operationId\": \"patchCoreV1NamespacedConfigMap\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ConfigMap\",\n        \"operationId\": \"replaceCoreV1NamespacedConfigMap\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ConfigMap\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/endpoints\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Endpoints\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedEndpoints\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Endpoints\",\n        \"operationId\": \"listCoreV1NamespacedEndpoints\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.EndpointsList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create Endpoints\",\n        \"operationId\": \"createCoreV1NamespacedEndpoints\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/endpoints/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete Endpoints\",\n        \"operationId\": \"deleteCoreV1NamespacedEndpoints\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Endpoints\",\n        \"operationId\": \"readCoreV1NamespacedEndpoints\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Endpoints\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Endpoints\",\n        \"operationId\": \"patchCoreV1NamespacedEndpoints\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Endpoints\",\n        \"operationId\": \"replaceCoreV1NamespacedEndpoints\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Endpoints\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/events\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Event\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedEvent\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Event\",\n        \"operationId\": \"listCoreV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.EventList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create an Event\",\n        \"operationId\": \"createCoreV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/events/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete an Event\",\n        \"operationId\": \"deleteCoreV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Event\",\n        \"operationId\": \"readCoreV1NamespacedEvent\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Event\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Event\",\n        \"operationId\": \"patchCoreV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Event\",\n        \"operationId\": \"replaceCoreV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Event\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/limitranges\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of LimitRange\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedLimitRange\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind LimitRange\",\n        \"operationId\": \"listCoreV1NamespacedLimitRange\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRangeList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a LimitRange\",\n        \"operationId\": \"createCoreV1NamespacedLimitRange\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/limitranges/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a LimitRange\",\n        \"operationId\": \"deleteCoreV1NamespacedLimitRange\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified LimitRange\",\n        \"operationId\": \"readCoreV1NamespacedLimitRange\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the LimitRange\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified LimitRange\",\n        \"operationId\": \"patchCoreV1NamespacedLimitRange\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified LimitRange\",\n        \"operationId\": \"replaceCoreV1NamespacedLimitRange\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.LimitRange\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/persistentvolumeclaims\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of PersistentVolumeClaim\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedPersistentVolumeClaim\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PersistentVolumeClaim\",\n        \"operationId\": \"listCoreV1NamespacedPersistentVolumeClaim\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a PersistentVolumeClaim\",\n        \"operationId\": \"createCoreV1NamespacedPersistentVolumeClaim\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a PersistentVolumeClaim\",\n        \"operationId\": \"deleteCoreV1NamespacedPersistentVolumeClaim\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified PersistentVolumeClaim\",\n        \"operationId\": \"readCoreV1NamespacedPersistentVolumeClaim\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PersistentVolumeClaim\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified PersistentVolumeClaim\",\n        \"operationId\": \"patchCoreV1NamespacedPersistentVolumeClaim\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified PersistentVolumeClaim\",\n        \"operationId\": \"replaceCoreV1NamespacedPersistentVolumeClaim\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified PersistentVolumeClaim\",\n        \"operationId\": \"readCoreV1NamespacedPersistentVolumeClaimStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PersistentVolumeClaim\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified PersistentVolumeClaim\",\n        \"operationId\": \"patchCoreV1NamespacedPersistentVolumeClaimStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified PersistentVolumeClaim\",\n        \"operationId\": \"replaceCoreV1NamespacedPersistentVolumeClaimStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Pod\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedPod\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Pod\",\n        \"operationId\": \"listCoreV1NamespacedPod\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Pod\",\n        \"operationId\": \"createCoreV1NamespacedPod\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Pod\",\n        \"operationId\": \"deleteCoreV1NamespacedPod\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Pod\",\n        \"operationId\": \"readCoreV1NamespacedPod\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Pod\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Pod\",\n        \"operationId\": \"patchCoreV1NamespacedPod\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Pod\",\n        \"operationId\": \"replaceCoreV1NamespacedPod\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/attach\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to attach of Pod\",\n        \"operationId\": \"connectCoreV1GetNamespacedPodAttach\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodAttachOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/container-_Q-EJ3nR\"\n        },\n        {\n          \"description\": \"name of the PodAttachOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/stderr-26jJhFUR\"\n        },\n        {\n          \"$ref\": \"#/parameters/stdin-sEFnN3IS\"\n        },\n        {\n          \"$ref\": \"#/parameters/stdout-005YMKE6\"\n        },\n        {\n          \"$ref\": \"#/parameters/tty-g7MlET_l\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to attach of Pod\",\n        \"operationId\": \"connectCoreV1PostNamespacedPodAttach\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodAttachOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/binding\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"description\": \"name of the Binding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create binding of a Pod\",\n        \"operationId\": \"createCoreV1NamespacedPodBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Binding\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Binding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Binding\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Binding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Binding\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read ephemeralcontainers of the specified Pod\",\n        \"operationId\": \"readCoreV1NamespacedPodEphemeralcontainers\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Pod\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update ephemeralcontainers of the specified Pod\",\n        \"operationId\": \"patchCoreV1NamespacedPodEphemeralcontainers\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace ephemeralcontainers of the specified Pod\",\n        \"operationId\": \"replaceCoreV1NamespacedPodEphemeralcontainers\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/eviction\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"description\": \"name of the Eviction\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create eviction of a Pod\",\n        \"operationId\": \"createCoreV1NamespacedPodEviction\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.Eviction\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.Eviction\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.Eviction\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.Eviction\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"Eviction\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/exec\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to exec of Pod\",\n        \"operationId\": \"connectCoreV1GetNamespacedPodExec\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodExecOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/command-Py3eQybp\"\n        },\n        {\n          \"$ref\": \"#/parameters/container-i5dOmRiM\"\n        },\n        {\n          \"description\": \"name of the PodExecOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/stderr-W_1TNlWc\"\n        },\n        {\n          \"$ref\": \"#/parameters/stdin-PSzNhyUC\"\n        },\n        {\n          \"$ref\": \"#/parameters/stdout--EZLRwV1\"\n        },\n        {\n          \"$ref\": \"#/parameters/tty-s0flW37O\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to exec of Pod\",\n        \"operationId\": \"connectCoreV1PostNamespacedPodExec\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodExecOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/log\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read log of the specified Pod\",\n        \"operationId\": \"readCoreV1NamespacedPodLog\",\n        \"produces\": [\n          \"text/plain\",\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/container-1GeXxFDC\"\n        },\n        {\n          \"$ref\": \"#/parameters/follow-9OIXh_2R\"\n        },\n        {\n          \"$ref\": \"#/parameters/insecureSkipTLSVerifyBackend-gM00jVbe\"\n        },\n        {\n          \"$ref\": \"#/parameters/limitBytes-zwd1RXuc\"\n        },\n        {\n          \"description\": \"name of the Pod\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/previous-1jxDPu3y\"\n        },\n        {\n          \"$ref\": \"#/parameters/sinceSeconds-vE2NLdnP\"\n        },\n        {\n          \"$ref\": \"#/parameters/tailLines-2fRTNzbP\"\n        },\n        {\n          \"$ref\": \"#/parameters/timestamps-c17fW1w_\"\n        }\n      ]\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/portforward\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to portforward of Pod\",\n        \"operationId\": \"connectCoreV1GetNamespacedPodPortforward\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodPortForwardOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PodPortForwardOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/ports-91KROJmm\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to portforward of Pod\",\n        \"operationId\": \"connectCoreV1PostNamespacedPodPortforward\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodPortForwardOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/proxy\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect DELETE requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1DeleteNamespacedPodProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1GetNamespacedPodProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"head\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect HEAD requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1HeadNamespacedPodProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"options\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect OPTIONS requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1OptionsNamespacedPodProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PodProxyOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/path-oPbzgLUj\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PATCH requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1PatchNamespacedPodProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1PostNamespacedPodProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PUT requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1PutNamespacedPodProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect DELETE requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1DeleteNamespacedPodProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1GetNamespacedPodProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"head\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect HEAD requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1HeadNamespacedPodProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"options\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect OPTIONS requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1OptionsNamespacedPodProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PodProxyOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/path-z6Ciiujn\"\n        },\n        {\n          \"$ref\": \"#/parameters/path-oPbzgLUj\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PATCH requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1PatchNamespacedPodProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1PostNamespacedPodProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PUT requests to proxy of Pod\",\n        \"operationId\": \"connectCoreV1PutNamespacedPodProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodProxyOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/pods/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified Pod\",\n        \"operationId\": \"readCoreV1NamespacedPodStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Pod\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified Pod\",\n        \"operationId\": \"patchCoreV1NamespacedPodStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified Pod\",\n        \"operationId\": \"replaceCoreV1NamespacedPodStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Pod\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/podtemplates\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of PodTemplate\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedPodTemplate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PodTemplate\",\n        \"operationId\": \"listCoreV1NamespacedPodTemplate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a PodTemplate\",\n        \"operationId\": \"createCoreV1NamespacedPodTemplate\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/podtemplates/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a PodTemplate\",\n        \"operationId\": \"deleteCoreV1NamespacedPodTemplate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified PodTemplate\",\n        \"operationId\": \"readCoreV1NamespacedPodTemplate\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PodTemplate\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified PodTemplate\",\n        \"operationId\": \"patchCoreV1NamespacedPodTemplate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified PodTemplate\",\n        \"operationId\": \"replaceCoreV1NamespacedPodTemplate\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/replicationcontrollers\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ReplicationController\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedReplicationController\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ReplicationController\",\n        \"operationId\": \"listCoreV1NamespacedReplicationController\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationControllerList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ReplicationController\",\n        \"operationId\": \"createCoreV1NamespacedReplicationController\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ReplicationController\",\n        \"operationId\": \"deleteCoreV1NamespacedReplicationController\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ReplicationController\",\n        \"operationId\": \"readCoreV1NamespacedReplicationController\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ReplicationController\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ReplicationController\",\n        \"operationId\": \"patchCoreV1NamespacedReplicationController\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ReplicationController\",\n        \"operationId\": \"replaceCoreV1NamespacedReplicationController\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read scale of the specified ReplicationController\",\n        \"operationId\": \"readCoreV1NamespacedReplicationControllerScale\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Scale\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update scale of the specified ReplicationController\",\n        \"operationId\": \"patchCoreV1NamespacedReplicationControllerScale\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace scale of the specified ReplicationController\",\n        \"operationId\": \"replaceCoreV1NamespacedReplicationControllerScale\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified ReplicationController\",\n        \"operationId\": \"readCoreV1NamespacedReplicationControllerStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ReplicationController\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified ReplicationController\",\n        \"operationId\": \"patchCoreV1NamespacedReplicationControllerStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified ReplicationController\",\n        \"operationId\": \"replaceCoreV1NamespacedReplicationControllerStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationController\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/resourcequotas\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ResourceQuota\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedResourceQuota\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ResourceQuota\",\n        \"operationId\": \"listCoreV1NamespacedResourceQuota\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuotaList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ResourceQuota\",\n        \"operationId\": \"createCoreV1NamespacedResourceQuota\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/resourcequotas/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ResourceQuota\",\n        \"operationId\": \"deleteCoreV1NamespacedResourceQuota\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ResourceQuota\",\n        \"operationId\": \"readCoreV1NamespacedResourceQuota\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ResourceQuota\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ResourceQuota\",\n        \"operationId\": \"patchCoreV1NamespacedResourceQuota\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ResourceQuota\",\n        \"operationId\": \"replaceCoreV1NamespacedResourceQuota\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/resourcequotas/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified ResourceQuota\",\n        \"operationId\": \"readCoreV1NamespacedResourceQuotaStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ResourceQuota\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified ResourceQuota\",\n        \"operationId\": \"patchCoreV1NamespacedResourceQuotaStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified ResourceQuota\",\n        \"operationId\": \"replaceCoreV1NamespacedResourceQuotaStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuota\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/secrets\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Secret\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedSecret\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Secret\",\n        \"operationId\": \"listCoreV1NamespacedSecret\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Secret\",\n        \"operationId\": \"createCoreV1NamespacedSecret\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/secrets/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Secret\",\n        \"operationId\": \"deleteCoreV1NamespacedSecret\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Secret\",\n        \"operationId\": \"readCoreV1NamespacedSecret\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Secret\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Secret\",\n        \"operationId\": \"patchCoreV1NamespacedSecret\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Secret\",\n        \"operationId\": \"replaceCoreV1NamespacedSecret\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Secret\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/serviceaccounts\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ServiceAccount\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedServiceAccount\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ServiceAccount\",\n        \"operationId\": \"listCoreV1NamespacedServiceAccount\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccountList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ServiceAccount\",\n        \"operationId\": \"createCoreV1NamespacedServiceAccount\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/serviceaccounts/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ServiceAccount\",\n        \"operationId\": \"deleteCoreV1NamespacedServiceAccount\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ServiceAccount\",\n        \"operationId\": \"readCoreV1NamespacedServiceAccount\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ServiceAccount\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ServiceAccount\",\n        \"operationId\": \"patchCoreV1NamespacedServiceAccount\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ServiceAccount\",\n        \"operationId\": \"replaceCoreV1NamespacedServiceAccount\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccount\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/serviceaccounts/{name}/token\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"description\": \"name of the TokenRequest\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create token of a ServiceAccount\",\n        \"operationId\": \"createCoreV1NamespacedServiceAccountToken\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenRequest\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenRequest\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenRequest\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"TokenRequest\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/services\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Service\",\n        \"operationId\": \"deleteCoreV1CollectionNamespacedService\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Service\",\n        \"operationId\": \"listCoreV1NamespacedService\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Service\",\n        \"operationId\": \"createCoreV1NamespacedService\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/services/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Service\",\n        \"operationId\": \"deleteCoreV1NamespacedService\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Service\",\n        \"operationId\": \"readCoreV1NamespacedService\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Service\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Service\",\n        \"operationId\": \"patchCoreV1NamespacedService\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Service\",\n        \"operationId\": \"replaceCoreV1NamespacedService\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/services/{name}/proxy\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect DELETE requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1DeleteNamespacedServiceProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1GetNamespacedServiceProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"head\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect HEAD requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1HeadNamespacedServiceProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"options\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect OPTIONS requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1OptionsNamespacedServiceProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ServiceProxyOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/path-QCf0eosM\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PATCH requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1PatchNamespacedServiceProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1PostNamespacedServiceProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PUT requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1PutNamespacedServiceProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect DELETE requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1DeleteNamespacedServiceProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1GetNamespacedServiceProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"head\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect HEAD requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1HeadNamespacedServiceProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"options\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect OPTIONS requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1OptionsNamespacedServiceProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ServiceProxyOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/path-z6Ciiujn\"\n        },\n        {\n          \"$ref\": \"#/parameters/path-QCf0eosM\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PATCH requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1PatchNamespacedServiceProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1PostNamespacedServiceProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PUT requests to proxy of Service\",\n        \"operationId\": \"connectCoreV1PutNamespacedServiceProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceProxyOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{namespace}/services/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified Service\",\n        \"operationId\": \"readCoreV1NamespacedServiceStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Service\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified Service\",\n        \"operationId\": \"patchCoreV1NamespacedServiceStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified Service\",\n        \"operationId\": \"replaceCoreV1NamespacedServiceStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Service\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Namespace\",\n        \"operationId\": \"deleteCoreV1Namespace\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Namespace\",\n        \"operationId\": \"readCoreV1Namespace\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Namespace\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Namespace\",\n        \"operationId\": \"patchCoreV1Namespace\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Namespace\",\n        \"operationId\": \"replaceCoreV1Namespace\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{name}/finalize\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"description\": \"name of the Namespace\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace finalize of the specified Namespace\",\n        \"operationId\": \"replaceCoreV1NamespaceFinalize\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/namespaces/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified Namespace\",\n        \"operationId\": \"readCoreV1NamespaceStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Namespace\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified Namespace\",\n        \"operationId\": \"patchCoreV1NamespaceStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified Namespace\",\n        \"operationId\": \"replaceCoreV1NamespaceStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Namespace\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/nodes\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Node\",\n        \"operationId\": \"deleteCoreV1CollectionNode\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Node\",\n        \"operationId\": \"listCoreV1Node\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.NodeList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Node\",\n        \"operationId\": \"createCoreV1Node\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/nodes/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Node\",\n        \"operationId\": \"deleteCoreV1Node\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Node\",\n        \"operationId\": \"readCoreV1Node\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Node\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Node\",\n        \"operationId\": \"patchCoreV1Node\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Node\",\n        \"operationId\": \"replaceCoreV1Node\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/nodes/{name}/proxy\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect DELETE requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1DeleteNodeProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1GetNodeProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"head\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect HEAD requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1HeadNodeProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"options\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect OPTIONS requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1OptionsNodeProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the NodeProxyOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/path-rFDtV0x9\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PATCH requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1PatchNodeProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1PostNodeProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PUT requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1PutNodeProxy\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/nodes/{name}/proxy/{path}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect DELETE requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1DeleteNodeProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect GET requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1GetNodeProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"head\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect HEAD requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1HeadNodeProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"options\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect OPTIONS requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1OptionsNodeProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the NodeProxyOptions\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/path-z6Ciiujn\"\n        },\n        {\n          \"$ref\": \"#/parameters/path-rFDtV0x9\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PATCH requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1PatchNodeProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect POST requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1PostNodeProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"connect PUT requests to proxy of Node\",\n        \"operationId\": \"connectCoreV1PutNodeProxyWithPath\",\n        \"produces\": [\n          \"*/*\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"connect\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"NodeProxyOptions\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/nodes/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified Node\",\n        \"operationId\": \"readCoreV1NodeStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Node\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified Node\",\n        \"operationId\": \"patchCoreV1NodeStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified Node\",\n        \"operationId\": \"replaceCoreV1NodeStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.Node\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/persistentvolumeclaims\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PersistentVolumeClaim\",\n        \"operationId\": \"listCoreV1PersistentVolumeClaimForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/persistentvolumes\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of PersistentVolume\",\n        \"operationId\": \"deleteCoreV1CollectionPersistentVolume\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PersistentVolume\",\n        \"operationId\": \"listCoreV1PersistentVolume\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolumeList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a PersistentVolume\",\n        \"operationId\": \"createCoreV1PersistentVolume\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/persistentvolumes/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a PersistentVolume\",\n        \"operationId\": \"deleteCoreV1PersistentVolume\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified PersistentVolume\",\n        \"operationId\": \"readCoreV1PersistentVolume\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PersistentVolume\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified PersistentVolume\",\n        \"operationId\": \"patchCoreV1PersistentVolume\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified PersistentVolume\",\n        \"operationId\": \"replaceCoreV1PersistentVolume\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/persistentvolumes/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified PersistentVolume\",\n        \"operationId\": \"readCoreV1PersistentVolumeStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PersistentVolume\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified PersistentVolume\",\n        \"operationId\": \"patchCoreV1PersistentVolumeStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified PersistentVolume\",\n        \"operationId\": \"replaceCoreV1PersistentVolumeStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PersistentVolume\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/api/v1/pods\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Pod\",\n        \"operationId\": \"listCoreV1PodForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/podtemplates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PodTemplate\",\n        \"operationId\": \"listCoreV1PodTemplateForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.PodTemplateList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/replicationcontrollers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ReplicationController\",\n        \"operationId\": \"listCoreV1ReplicationControllerForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ReplicationControllerList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/resourcequotas\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ResourceQuota\",\n        \"operationId\": \"listCoreV1ResourceQuotaForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ResourceQuotaList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/secrets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Secret\",\n        \"operationId\": \"listCoreV1SecretForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.SecretList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/serviceaccounts\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ServiceAccount\",\n        \"operationId\": \"listCoreV1ServiceAccountForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceAccountList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/services\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Service\",\n        \"operationId\": \"listCoreV1ServiceForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.core.v1.ServiceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/configmaps\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1ConfigMapListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/endpoints\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1EndpointsListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/events\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1EventListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/limitranges\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1LimitRangeListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Namespace. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespaceList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/configmaps\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedConfigMapList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/configmaps/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ConfigMap. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedConfigMap\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ConfigMap\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ConfigMap\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/endpoints\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedEndpointsList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/endpoints/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Endpoints. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedEndpoints\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Endpoints\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Endpoints\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/events\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedEventList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/events/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Event. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedEvent\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Event\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/limitranges\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedLimitRangeList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/limitranges/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind LimitRange. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedLimitRange\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"LimitRange\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the LimitRange\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedPersistentVolumeClaimList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedPersistentVolumeClaim\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the PersistentVolumeClaim\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/pods\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedPodList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/pods/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Pod. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedPod\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Pod\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/podtemplates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedPodTemplateList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/podtemplates/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind PodTemplate. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedPodTemplate\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the PodTemplate\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/replicationcontrollers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedReplicationControllerList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ReplicationController. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedReplicationController\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ReplicationController\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/resourcequotas\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedResourceQuotaList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/resourcequotas/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedResourceQuota\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ResourceQuota\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/secrets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedSecretList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/secrets/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Secret. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedSecret\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Secret\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/serviceaccounts\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedServiceAccountList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedServiceAccount\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ServiceAccount\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/services\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NamespacedServiceList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{namespace}/services/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Service. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1NamespacedService\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Service\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/namespaces/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Namespace. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1Namespace\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Namespace\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Namespace\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/nodes\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Node. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1NodeList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/nodes/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Node. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1Node\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Node\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Node\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/persistentvolumeclaims\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1PersistentVolumeClaimListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolumeClaim\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/persistentvolumes\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PersistentVolume. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1PersistentVolumeList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/persistentvolumes/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind PersistentVolume. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoreV1PersistentVolume\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PersistentVolume\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the PersistentVolume\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/pods\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1PodListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Pod\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/podtemplates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1PodTemplateListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"PodTemplate\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/replicationcontrollers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1ReplicationControllerListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ReplicationController\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/resourcequotas\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1ResourceQuotaListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ResourceQuota\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/secrets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1SecretListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Secret\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/serviceaccounts\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1ServiceAccountListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"ServiceAccount\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/api/v1/watch/services\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoreV1ServiceListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"core_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"\",\n          \"kind\": \"Service\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available API versions\",\n        \"operationId\": \"getAPIVersions\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apis\"\n        ]\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getAdmissionregistrationAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration\"\n        ]\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAdmissionregistrationV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ]\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of MutatingWebhookConfiguration\",\n        \"operationId\": \"deleteAdmissionregistrationV1CollectionMutatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind MutatingWebhookConfiguration\",\n        \"operationId\": \"listAdmissionregistrationV1MutatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a MutatingWebhookConfiguration\",\n        \"operationId\": \"createAdmissionregistrationV1MutatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a MutatingWebhookConfiguration\",\n        \"operationId\": \"deleteAdmissionregistrationV1MutatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified MutatingWebhookConfiguration\",\n        \"operationId\": \"readAdmissionregistrationV1MutatingWebhookConfiguration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the MutatingWebhookConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified MutatingWebhookConfiguration\",\n        \"operationId\": \"patchAdmissionregistrationV1MutatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified MutatingWebhookConfiguration\",\n        \"operationId\": \"replaceAdmissionregistrationV1MutatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ValidatingAdmissionPolicy\",\n        \"operationId\": \"deleteAdmissionregistrationV1CollectionValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ValidatingAdmissionPolicy\",\n        \"operationId\": \"listAdmissionregistrationV1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ValidatingAdmissionPolicy\",\n        \"operationId\": \"createAdmissionregistrationV1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ValidatingAdmissionPolicy\",\n        \"operationId\": \"deleteAdmissionregistrationV1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"readAdmissionregistrationV1ValidatingAdmissionPolicy\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"patchAdmissionregistrationV1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"replaceAdmissionregistrationV1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"readAdmissionregistrationV1ValidatingAdmissionPolicyStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"patchAdmissionregistrationV1ValidatingAdmissionPolicyStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"replaceAdmissionregistrationV1ValidatingAdmissionPolicyStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"deleteAdmissionregistrationV1CollectionValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"listAdmissionregistrationV1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBindingList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"createAdmissionregistrationV1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/validatingadmissionpolicybindings/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"deleteAdmissionregistrationV1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"readAdmissionregistrationV1ValidatingAdmissionPolicyBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicyBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"patchAdmissionregistrationV1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"replaceAdmissionregistrationV1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ValidatingWebhookConfiguration\",\n        \"operationId\": \"deleteAdmissionregistrationV1CollectionValidatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ValidatingWebhookConfiguration\",\n        \"operationId\": \"listAdmissionregistrationV1ValidatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ValidatingWebhookConfiguration\",\n        \"operationId\": \"createAdmissionregistrationV1ValidatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ValidatingWebhookConfiguration\",\n        \"operationId\": \"deleteAdmissionregistrationV1ValidatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ValidatingWebhookConfiguration\",\n        \"operationId\": \"readAdmissionregistrationV1ValidatingWebhookConfiguration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingWebhookConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ValidatingWebhookConfiguration\",\n        \"operationId\": \"patchAdmissionregistrationV1ValidatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ValidatingWebhookConfiguration\",\n        \"operationId\": \"replaceAdmissionregistrationV1ValidatingWebhookConfiguration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of MutatingWebhookConfiguration. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAdmissionregistrationV1MutatingWebhookConfigurationList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind MutatingWebhookConfiguration. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAdmissionregistrationV1MutatingWebhookConfiguration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"MutatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the MutatingWebhookConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicies\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ValidatingAdmissionPolicy. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAdmissionregistrationV1ValidatingAdmissionPolicyList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicies/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ValidatingAdmissionPolicy. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAdmissionregistrationV1ValidatingAdmissionPolicy\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicybindings\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ValidatingAdmissionPolicyBinding. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAdmissionregistrationV1ValidatingAdmissionPolicyBindingList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1/watch/validatingadmissionpolicybindings/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ValidatingAdmissionPolicyBinding. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAdmissionregistrationV1ValidatingAdmissionPolicyBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicyBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ValidatingWebhookConfiguration. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAdmissionregistrationV1ValidatingWebhookConfigurationList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ValidatingWebhookConfiguration. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAdmissionregistrationV1ValidatingWebhookConfiguration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingWebhookConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ValidatingWebhookConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAdmissionregistrationV1alpha1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ]\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ValidatingAdmissionPolicy\",\n        \"operationId\": \"deleteAdmissionregistrationV1alpha1CollectionValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ValidatingAdmissionPolicy\",\n        \"operationId\": \"listAdmissionregistrationV1alpha1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ValidatingAdmissionPolicy\",\n        \"operationId\": \"createAdmissionregistrationV1alpha1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ValidatingAdmissionPolicy\",\n        \"operationId\": \"deleteAdmissionregistrationV1alpha1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"readAdmissionregistrationV1alpha1ValidatingAdmissionPolicy\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"patchAdmissionregistrationV1alpha1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"replaceAdmissionregistrationV1alpha1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicies/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"readAdmissionregistrationV1alpha1ValidatingAdmissionPolicyStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"patchAdmissionregistrationV1alpha1ValidatingAdmissionPolicyStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"replaceAdmissionregistrationV1alpha1ValidatingAdmissionPolicyStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"deleteAdmissionregistrationV1alpha1CollectionValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"listAdmissionregistrationV1alpha1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"createAdmissionregistrationV1alpha1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/validatingadmissionpolicybindings/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"deleteAdmissionregistrationV1alpha1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"readAdmissionregistrationV1alpha1ValidatingAdmissionPolicyBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicyBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"patchAdmissionregistrationV1alpha1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"replaceAdmissionregistrationV1alpha1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/watch/validatingadmissionpolicies\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ValidatingAdmissionPolicy. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAdmissionregistrationV1alpha1ValidatingAdmissionPolicyList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/watch/validatingadmissionpolicies/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ValidatingAdmissionPolicy. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAdmissionregistrationV1alpha1ValidatingAdmissionPolicy\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/watch/validatingadmissionpolicybindings\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ValidatingAdmissionPolicyBinding. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAdmissionregistrationV1alpha1ValidatingAdmissionPolicyBindingList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1alpha1/watch/validatingadmissionpolicybindings/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ValidatingAdmissionPolicyBinding. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAdmissionregistrationV1alpha1ValidatingAdmissionPolicyBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicyBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAdmissionregistrationV1beta1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ]\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ValidatingAdmissionPolicy\",\n        \"operationId\": \"deleteAdmissionregistrationV1beta1CollectionValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ValidatingAdmissionPolicy\",\n        \"operationId\": \"listAdmissionregistrationV1beta1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ValidatingAdmissionPolicy\",\n        \"operationId\": \"createAdmissionregistrationV1beta1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ValidatingAdmissionPolicy\",\n        \"operationId\": \"deleteAdmissionregistrationV1beta1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"readAdmissionregistrationV1beta1ValidatingAdmissionPolicy\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"patchAdmissionregistrationV1beta1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"replaceAdmissionregistrationV1beta1ValidatingAdmissionPolicy\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"readAdmissionregistrationV1beta1ValidatingAdmissionPolicyStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"patchAdmissionregistrationV1beta1ValidatingAdmissionPolicyStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified ValidatingAdmissionPolicy\",\n        \"operationId\": \"replaceAdmissionregistrationV1beta1ValidatingAdmissionPolicyStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"deleteAdmissionregistrationV1beta1CollectionValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"listAdmissionregistrationV1beta1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"createAdmissionregistrationV1beta1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"deleteAdmissionregistrationV1beta1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"readAdmissionregistrationV1beta1ValidatingAdmissionPolicyBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicyBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"patchAdmissionregistrationV1beta1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ValidatingAdmissionPolicyBinding\",\n        \"operationId\": \"replaceAdmissionregistrationV1beta1ValidatingAdmissionPolicyBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/watch/validatingadmissionpolicies\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ValidatingAdmissionPolicy. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAdmissionregistrationV1beta1ValidatingAdmissionPolicyList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/watch/validatingadmissionpolicies/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ValidatingAdmissionPolicy. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAdmissionregistrationV1beta1ValidatingAdmissionPolicy\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicy\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/watch/validatingadmissionpolicybindings\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ValidatingAdmissionPolicyBinding. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAdmissionregistrationV1beta1ValidatingAdmissionPolicyBindingList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/admissionregistration.k8s.io/v1beta1/watch/validatingadmissionpolicybindings/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ValidatingAdmissionPolicyBinding. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAdmissionregistrationV1beta1ValidatingAdmissionPolicyBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"admissionregistration_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"admissionregistration.k8s.io\",\n          \"kind\": \"ValidatingAdmissionPolicyBinding\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ValidatingAdmissionPolicyBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apiextensions.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getApiextensionsAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions\"\n        ]\n      }\n    },\n    \"/apis/apiextensions.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getApiextensionsV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ]\n      }\n    },\n    \"/apis/apiextensions.k8s.io/v1/customresourcedefinitions\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of CustomResourceDefinition\",\n        \"operationId\": \"deleteApiextensionsV1CollectionCustomResourceDefinition\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind CustomResourceDefinition\",\n        \"operationId\": \"listApiextensionsV1CustomResourceDefinition\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a CustomResourceDefinition\",\n        \"operationId\": \"createApiextensionsV1CustomResourceDefinition\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a CustomResourceDefinition\",\n        \"operationId\": \"deleteApiextensionsV1CustomResourceDefinition\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified CustomResourceDefinition\",\n        \"operationId\": \"readApiextensionsV1CustomResourceDefinition\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CustomResourceDefinition\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified CustomResourceDefinition\",\n        \"operationId\": \"patchApiextensionsV1CustomResourceDefinition\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified CustomResourceDefinition\",\n        \"operationId\": \"replaceApiextensionsV1CustomResourceDefinition\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified CustomResourceDefinition\",\n        \"operationId\": \"readApiextensionsV1CustomResourceDefinitionStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CustomResourceDefinition\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified CustomResourceDefinition\",\n        \"operationId\": \"patchApiextensionsV1CustomResourceDefinitionStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified CustomResourceDefinition\",\n        \"operationId\": \"replaceApiextensionsV1CustomResourceDefinitionStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of CustomResourceDefinition. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchApiextensionsV1CustomResourceDefinitionList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind CustomResourceDefinition. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchApiextensionsV1CustomResourceDefinition\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiextensions_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiextensions.k8s.io\",\n          \"kind\": \"CustomResourceDefinition\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the CustomResourceDefinition\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apiregistration.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getApiregistrationAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration\"\n        ]\n      }\n    },\n    \"/apis/apiregistration.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getApiregistrationV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ]\n      }\n    },\n    \"/apis/apiregistration.k8s.io/v1/apiservices\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of APIService\",\n        \"operationId\": \"deleteApiregistrationV1CollectionAPIService\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind APIService\",\n        \"operationId\": \"listApiregistrationV1APIService\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create an APIService\",\n        \"operationId\": \"createApiregistrationV1APIService\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apiregistration.k8s.io/v1/apiservices/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete an APIService\",\n        \"operationId\": \"deleteApiregistrationV1APIService\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified APIService\",\n        \"operationId\": \"readApiregistrationV1APIService\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the APIService\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified APIService\",\n        \"operationId\": \"patchApiregistrationV1APIService\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified APIService\",\n        \"operationId\": \"replaceApiregistrationV1APIService\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apiregistration.k8s.io/v1/apiservices/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified APIService\",\n        \"operationId\": \"readApiregistrationV1APIServiceStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the APIService\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified APIService\",\n        \"operationId\": \"patchApiregistrationV1APIServiceStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified APIService\",\n        \"operationId\": \"replaceApiregistrationV1APIServiceStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apiregistration.k8s.io/v1/watch/apiservices\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of APIService. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchApiregistrationV1APIServiceList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apiregistration.k8s.io/v1/watch/apiservices/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind APIService. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchApiregistrationV1APIService\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apiregistration_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apiregistration.k8s.io\",\n          \"kind\": \"APIService\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the APIService\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getAppsAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps\"\n        ]\n      }\n    },\n    \"/apis/apps/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAppsV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ]\n      }\n    },\n    \"/apis/apps/v1/controllerrevisions\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ControllerRevision\",\n        \"operationId\": \"listAppsV1ControllerRevisionForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevisionList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/daemonsets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind DaemonSet\",\n        \"operationId\": \"listAppsV1DaemonSetForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSetList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/deployments\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Deployment\",\n        \"operationId\": \"listAppsV1DeploymentForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DeploymentList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/controllerrevisions\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ControllerRevision\",\n        \"operationId\": \"deleteAppsV1CollectionNamespacedControllerRevision\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ControllerRevision\",\n        \"operationId\": \"listAppsV1NamespacedControllerRevision\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevisionList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ControllerRevision\",\n        \"operationId\": \"createAppsV1NamespacedControllerRevision\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ControllerRevision\",\n        \"operationId\": \"deleteAppsV1NamespacedControllerRevision\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ControllerRevision\",\n        \"operationId\": \"readAppsV1NamespacedControllerRevision\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ControllerRevision\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ControllerRevision\",\n        \"operationId\": \"patchAppsV1NamespacedControllerRevision\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ControllerRevision\",\n        \"operationId\": \"replaceAppsV1NamespacedControllerRevision\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ControllerRevision\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/daemonsets\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of DaemonSet\",\n        \"operationId\": \"deleteAppsV1CollectionNamespacedDaemonSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind DaemonSet\",\n        \"operationId\": \"listAppsV1NamespacedDaemonSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSetList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a DaemonSet\",\n        \"operationId\": \"createAppsV1NamespacedDaemonSet\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a DaemonSet\",\n        \"operationId\": \"deleteAppsV1NamespacedDaemonSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified DaemonSet\",\n        \"operationId\": \"readAppsV1NamespacedDaemonSet\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the DaemonSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified DaemonSet\",\n        \"operationId\": \"patchAppsV1NamespacedDaemonSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified DaemonSet\",\n        \"operationId\": \"replaceAppsV1NamespacedDaemonSet\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified DaemonSet\",\n        \"operationId\": \"readAppsV1NamespacedDaemonSetStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the DaemonSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified DaemonSet\",\n        \"operationId\": \"patchAppsV1NamespacedDaemonSetStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified DaemonSet\",\n        \"operationId\": \"replaceAppsV1NamespacedDaemonSetStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DaemonSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/deployments\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Deployment\",\n        \"operationId\": \"deleteAppsV1CollectionNamespacedDeployment\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Deployment\",\n        \"operationId\": \"listAppsV1NamespacedDeployment\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.DeploymentList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Deployment\",\n        \"operationId\": \"createAppsV1NamespacedDeployment\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/deployments/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Deployment\",\n        \"operationId\": \"deleteAppsV1NamespacedDeployment\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Deployment\",\n        \"operationId\": \"readAppsV1NamespacedDeployment\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Deployment\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Deployment\",\n        \"operationId\": \"patchAppsV1NamespacedDeployment\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Deployment\",\n        \"operationId\": \"replaceAppsV1NamespacedDeployment\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read scale of the specified Deployment\",\n        \"operationId\": \"readAppsV1NamespacedDeploymentScale\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Scale\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update scale of the specified Deployment\",\n        \"operationId\": \"patchAppsV1NamespacedDeploymentScale\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace scale of the specified Deployment\",\n        \"operationId\": \"replaceAppsV1NamespacedDeploymentScale\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/deployments/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified Deployment\",\n        \"operationId\": \"readAppsV1NamespacedDeploymentStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Deployment\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified Deployment\",\n        \"operationId\": \"patchAppsV1NamespacedDeploymentStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified Deployment\",\n        \"operationId\": \"replaceAppsV1NamespacedDeploymentStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.Deployment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/replicasets\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ReplicaSet\",\n        \"operationId\": \"deleteAppsV1CollectionNamespacedReplicaSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ReplicaSet\",\n        \"operationId\": \"listAppsV1NamespacedReplicaSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSetList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ReplicaSet\",\n        \"operationId\": \"createAppsV1NamespacedReplicaSet\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/replicasets/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ReplicaSet\",\n        \"operationId\": \"deleteAppsV1NamespacedReplicaSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ReplicaSet\",\n        \"operationId\": \"readAppsV1NamespacedReplicaSet\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ReplicaSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ReplicaSet\",\n        \"operationId\": \"patchAppsV1NamespacedReplicaSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ReplicaSet\",\n        \"operationId\": \"replaceAppsV1NamespacedReplicaSet\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read scale of the specified ReplicaSet\",\n        \"operationId\": \"readAppsV1NamespacedReplicaSetScale\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Scale\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update scale of the specified ReplicaSet\",\n        \"operationId\": \"patchAppsV1NamespacedReplicaSetScale\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace scale of the specified ReplicaSet\",\n        \"operationId\": \"replaceAppsV1NamespacedReplicaSetScale\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified ReplicaSet\",\n        \"operationId\": \"readAppsV1NamespacedReplicaSetStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ReplicaSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified ReplicaSet\",\n        \"operationId\": \"patchAppsV1NamespacedReplicaSetStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified ReplicaSet\",\n        \"operationId\": \"replaceAppsV1NamespacedReplicaSetStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/statefulsets\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of StatefulSet\",\n        \"operationId\": \"deleteAppsV1CollectionNamespacedStatefulSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind StatefulSet\",\n        \"operationId\": \"listAppsV1NamespacedStatefulSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSetList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a StatefulSet\",\n        \"operationId\": \"createAppsV1NamespacedStatefulSet\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a StatefulSet\",\n        \"operationId\": \"deleteAppsV1NamespacedStatefulSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified StatefulSet\",\n        \"operationId\": \"readAppsV1NamespacedStatefulSet\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the StatefulSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified StatefulSet\",\n        \"operationId\": \"patchAppsV1NamespacedStatefulSet\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified StatefulSet\",\n        \"operationId\": \"replaceAppsV1NamespacedStatefulSet\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read scale of the specified StatefulSet\",\n        \"operationId\": \"readAppsV1NamespacedStatefulSetScale\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Scale\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update scale of the specified StatefulSet\",\n        \"operationId\": \"patchAppsV1NamespacedStatefulSetScale\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace scale of the specified StatefulSet\",\n        \"operationId\": \"replaceAppsV1NamespacedStatefulSetScale\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.Scale\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"Scale\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified StatefulSet\",\n        \"operationId\": \"readAppsV1NamespacedStatefulSetStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the StatefulSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified StatefulSet\",\n        \"operationId\": \"patchAppsV1NamespacedStatefulSetStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified StatefulSet\",\n        \"operationId\": \"replaceAppsV1NamespacedStatefulSetStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSet\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/apps/v1/replicasets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ReplicaSet\",\n        \"operationId\": \"listAppsV1ReplicaSetForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.ReplicaSetList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/statefulsets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind StatefulSet\",\n        \"operationId\": \"listAppsV1StatefulSetForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apps.v1.StatefulSetList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/controllerrevisions\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1ControllerRevisionListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/daemonsets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of DaemonSet. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1DaemonSetListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/deployments\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Deployment. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1DeploymentListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1NamespacedControllerRevisionList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAppsV1NamespacedControllerRevision\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ControllerRevision\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ControllerRevision\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/daemonsets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of DaemonSet. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1NamespacedDaemonSetList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/daemonsets/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind DaemonSet. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAppsV1NamespacedDaemonSet\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"DaemonSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the DaemonSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/deployments\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Deployment. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1NamespacedDeploymentList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/deployments/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Deployment. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAppsV1NamespacedDeployment\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"Deployment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Deployment\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/replicasets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1NamespacedReplicaSetList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/replicasets/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAppsV1NamespacedReplicaSet\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ReplicaSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/statefulsets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of StatefulSet. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1NamespacedStatefulSetList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/namespaces/{namespace}/statefulsets/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind StatefulSet. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAppsV1NamespacedStatefulSet\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the StatefulSet\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/replicasets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1ReplicaSetListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"ReplicaSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/apps/v1/watch/statefulsets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of StatefulSet. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAppsV1StatefulSetListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"apps_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"apps\",\n          \"kind\": \"StatefulSet\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/authentication.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getAuthenticationAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authentication\"\n        ]\n      }\n    },\n    \"/apis/authentication.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAuthenticationV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authentication_v1\"\n        ]\n      }\n    },\n    \"/apis/authentication.k8s.io/v1/selfsubjectreviews\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a SelfSubjectReview\",\n        \"operationId\": \"createAuthenticationV1SelfSubjectReview\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.SelfSubjectReview\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.SelfSubjectReview\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.SelfSubjectReview\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.SelfSubjectReview\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authentication_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"SelfSubjectReview\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/authentication.k8s.io/v1/tokenreviews\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a TokenReview\",\n        \"operationId\": \"createAuthenticationV1TokenReview\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenReview\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenReview\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenReview\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1.TokenReview\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authentication_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"TokenReview\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/authentication.k8s.io/v1alpha1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAuthenticationV1alpha1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authentication_v1alpha1\"\n        ]\n      }\n    },\n    \"/apis/authentication.k8s.io/v1alpha1/selfsubjectreviews\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a SelfSubjectReview\",\n        \"operationId\": \"createAuthenticationV1alpha1SelfSubjectReview\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1alpha1.SelfSubjectReview\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1alpha1.SelfSubjectReview\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1alpha1.SelfSubjectReview\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1alpha1.SelfSubjectReview\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authentication_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"SelfSubjectReview\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/authentication.k8s.io/v1beta1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAuthenticationV1beta1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authentication_v1beta1\"\n        ]\n      }\n    },\n    \"/apis/authentication.k8s.io/v1beta1/selfsubjectreviews\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a SelfSubjectReview\",\n        \"operationId\": \"createAuthenticationV1beta1SelfSubjectReview\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1beta1.SelfSubjectReview\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1beta1.SelfSubjectReview\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1beta1.SelfSubjectReview\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authentication.v1beta1.SelfSubjectReview\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authentication_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authentication.k8s.io\",\n          \"kind\": \"SelfSubjectReview\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/authorization.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getAuthorizationAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authorization\"\n        ]\n      }\n    },\n    \"/apis/authorization.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAuthorizationV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authorization_v1\"\n        ]\n      }\n    },\n    \"/apis/authorization.k8s.io/v1/namespaces/{namespace}/localsubjectaccessreviews\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a LocalSubjectAccessReview\",\n        \"operationId\": \"createAuthorizationV1NamespacedLocalSubjectAccessReview\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"LocalSubjectAccessReview\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/authorization.k8s.io/v1/selfsubjectaccessreviews\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a SelfSubjectAccessReview\",\n        \"operationId\": \"createAuthorizationV1SelfSubjectAccessReview\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"SelfSubjectAccessReview\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/authorization.k8s.io/v1/selfsubjectrulesreviews\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a SelfSubjectRulesReview\",\n        \"operationId\": \"createAuthorizationV1SelfSubjectRulesReview\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"SelfSubjectRulesReview\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/authorization.k8s.io/v1/subjectaccessreviews\": {\n      \"parameters\": [\n        {\n          \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n          \"in\": \"query\",\n          \"name\": \"dryRun\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n        },\n        {\n          \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n          \"in\": \"query\",\n          \"name\": \"fieldValidation\",\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a SubjectAccessReview\",\n        \"operationId\": \"createAuthorizationV1SubjectAccessReview\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview\"\n            }\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"authorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"authorization.k8s.io\",\n          \"kind\": \"SubjectAccessReview\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/autoscaling/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getAutoscalingAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling\"\n        ]\n      }\n    },\n    \"/apis/autoscaling/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAutoscalingV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ]\n      }\n    },\n    \"/apis/autoscaling/v1/horizontalpodautoscalers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind HorizontalPodAutoscaler\",\n        \"operationId\": \"listAutoscalingV1HorizontalPodAutoscalerForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of HorizontalPodAutoscaler\",\n        \"operationId\": \"deleteAutoscalingV1CollectionNamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind HorizontalPodAutoscaler\",\n        \"operationId\": \"listAutoscalingV1NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a HorizontalPodAutoscaler\",\n        \"operationId\": \"createAutoscalingV1NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a HorizontalPodAutoscaler\",\n        \"operationId\": \"deleteAutoscalingV1NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"readAutoscalingV1NamespacedHorizontalPodAutoscaler\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the HorizontalPodAutoscaler\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"patchAutoscalingV1NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"replaceAutoscalingV1NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"readAutoscalingV1NamespacedHorizontalPodAutoscalerStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the HorizontalPodAutoscaler\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"patchAutoscalingV1NamespacedHorizontalPodAutoscalerStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"replaceAutoscalingV1NamespacedHorizontalPodAutoscalerStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/autoscaling/v1/watch/horizontalpodautoscalers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAutoscalingV1HorizontalPodAutoscalerListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAutoscalingV1NamespacedHorizontalPodAutoscalerList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAutoscalingV1NamespacedHorizontalPodAutoscaler\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the HorizontalPodAutoscaler\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/autoscaling/v2/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getAutoscalingV2APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ]\n      }\n    },\n    \"/apis/autoscaling/v2/horizontalpodautoscalers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind HorizontalPodAutoscaler\",\n        \"operationId\": \"listAutoscalingV2HorizontalPodAutoscalerForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of HorizontalPodAutoscaler\",\n        \"operationId\": \"deleteAutoscalingV2CollectionNamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind HorizontalPodAutoscaler\",\n        \"operationId\": \"listAutoscalingV2NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a HorizontalPodAutoscaler\",\n        \"operationId\": \"createAutoscalingV2NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      }\n    },\n    \"/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a HorizontalPodAutoscaler\",\n        \"operationId\": \"deleteAutoscalingV2NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"readAutoscalingV2NamespacedHorizontalPodAutoscaler\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the HorizontalPodAutoscaler\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"patchAutoscalingV2NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"replaceAutoscalingV2NamespacedHorizontalPodAutoscaler\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      }\n    },\n    \"/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"readAutoscalingV2NamespacedHorizontalPodAutoscalerStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the HorizontalPodAutoscaler\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"patchAutoscalingV2NamespacedHorizontalPodAutoscalerStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified HorizontalPodAutoscaler\",\n        \"operationId\": \"replaceAutoscalingV2NamespacedHorizontalPodAutoscalerStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      }\n    },\n    \"/apis/autoscaling/v2/watch/horizontalpodautoscalers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAutoscalingV2HorizontalPodAutoscalerListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/autoscaling/v2/watch/namespaces/{namespace}/horizontalpodautoscalers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchAutoscalingV2NamespacedHorizontalPodAutoscalerList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/autoscaling/v2/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchAutoscalingV2NamespacedHorizontalPodAutoscaler\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"autoscaling_v2\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"autoscaling\",\n          \"kind\": \"HorizontalPodAutoscaler\",\n          \"version\": \"v2\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the HorizontalPodAutoscaler\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/batch/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getBatchAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch\"\n        ]\n      }\n    },\n    \"/apis/batch/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getBatchV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ]\n      }\n    },\n    \"/apis/batch/v1/cronjobs\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind CronJob\",\n        \"operationId\": \"listBatchV1CronJobForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJobList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/batch/v1/jobs\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Job\",\n        \"operationId\": \"listBatchV1JobForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.JobList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/batch/v1/namespaces/{namespace}/cronjobs\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of CronJob\",\n        \"operationId\": \"deleteBatchV1CollectionNamespacedCronJob\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind CronJob\",\n        \"operationId\": \"listBatchV1NamespacedCronJob\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJobList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a CronJob\",\n        \"operationId\": \"createBatchV1NamespacedCronJob\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a CronJob\",\n        \"operationId\": \"deleteBatchV1NamespacedCronJob\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified CronJob\",\n        \"operationId\": \"readBatchV1NamespacedCronJob\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CronJob\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified CronJob\",\n        \"operationId\": \"patchBatchV1NamespacedCronJob\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified CronJob\",\n        \"operationId\": \"replaceBatchV1NamespacedCronJob\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified CronJob\",\n        \"operationId\": \"readBatchV1NamespacedCronJobStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CronJob\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified CronJob\",\n        \"operationId\": \"patchBatchV1NamespacedCronJobStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified CronJob\",\n        \"operationId\": \"replaceBatchV1NamespacedCronJobStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.CronJob\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/batch/v1/namespaces/{namespace}/jobs\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Job\",\n        \"operationId\": \"deleteBatchV1CollectionNamespacedJob\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Job\",\n        \"operationId\": \"listBatchV1NamespacedJob\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.JobList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Job\",\n        \"operationId\": \"createBatchV1NamespacedJob\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/batch/v1/namespaces/{namespace}/jobs/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Job\",\n        \"operationId\": \"deleteBatchV1NamespacedJob\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Job\",\n        \"operationId\": \"readBatchV1NamespacedJob\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Job\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Job\",\n        \"operationId\": \"patchBatchV1NamespacedJob\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Job\",\n        \"operationId\": \"replaceBatchV1NamespacedJob\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/batch/v1/namespaces/{namespace}/jobs/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified Job\",\n        \"operationId\": \"readBatchV1NamespacedJobStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Job\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified Job\",\n        \"operationId\": \"patchBatchV1NamespacedJobStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified Job\",\n        \"operationId\": \"replaceBatchV1NamespacedJobStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.batch.v1.Job\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/batch/v1/watch/cronjobs\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchBatchV1CronJobListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/batch/v1/watch/jobs\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchBatchV1JobListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/batch/v1/watch/namespaces/{namespace}/cronjobs\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchBatchV1NamespacedCronJobList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/batch/v1/watch/namespaces/{namespace}/cronjobs/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind CronJob. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchBatchV1NamespacedCronJob\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"CronJob\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the CronJob\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/batch/v1/watch/namespaces/{namespace}/jobs\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchBatchV1NamespacedJobList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/batch/v1/watch/namespaces/{namespace}/jobs/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Job. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchBatchV1NamespacedJob\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"batch_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"batch\",\n          \"kind\": \"Job\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Job\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/certificates.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getCertificatesAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates\"\n        ]\n      }\n    },\n    \"/apis/certificates.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getCertificatesV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ]\n      }\n    },\n    \"/apis/certificates.k8s.io/v1/certificatesigningrequests\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of CertificateSigningRequest\",\n        \"operationId\": \"deleteCertificatesV1CollectionCertificateSigningRequest\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind CertificateSigningRequest\",\n        \"operationId\": \"listCertificatesV1CertificateSigningRequest\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequestList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a CertificateSigningRequest\",\n        \"operationId\": \"createCertificatesV1CertificateSigningRequest\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a CertificateSigningRequest\",\n        \"operationId\": \"deleteCertificatesV1CertificateSigningRequest\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified CertificateSigningRequest\",\n        \"operationId\": \"readCertificatesV1CertificateSigningRequest\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CertificateSigningRequest\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified CertificateSigningRequest\",\n        \"operationId\": \"patchCertificatesV1CertificateSigningRequest\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified CertificateSigningRequest\",\n        \"operationId\": \"replaceCertificatesV1CertificateSigningRequest\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read approval of the specified CertificateSigningRequest\",\n        \"operationId\": \"readCertificatesV1CertificateSigningRequestApproval\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CertificateSigningRequest\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update approval of the specified CertificateSigningRequest\",\n        \"operationId\": \"patchCertificatesV1CertificateSigningRequestApproval\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace approval of the specified CertificateSigningRequest\",\n        \"operationId\": \"replaceCertificatesV1CertificateSigningRequestApproval\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified CertificateSigningRequest\",\n        \"operationId\": \"readCertificatesV1CertificateSigningRequestStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CertificateSigningRequest\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified CertificateSigningRequest\",\n        \"operationId\": \"patchCertificatesV1CertificateSigningRequestStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified CertificateSigningRequest\",\n        \"operationId\": \"replaceCertificatesV1CertificateSigningRequestStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/certificates.k8s.io/v1/watch/certificatesigningrequests\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of CertificateSigningRequest. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCertificatesV1CertificateSigningRequestList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/certificates.k8s.io/v1/watch/certificatesigningrequests/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind CertificateSigningRequest. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCertificatesV1CertificateSigningRequest\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"CertificateSigningRequest\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the CertificateSigningRequest\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/certificates.k8s.io/v1alpha1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getCertificatesV1alpha1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ]\n      }\n    },\n    \"/apis/certificates.k8s.io/v1alpha1/clustertrustbundles\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ClusterTrustBundle\",\n        \"operationId\": \"deleteCertificatesV1alpha1CollectionClusterTrustBundle\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ClusterTrustBundle\",\n        \"operationId\": \"listCertificatesV1alpha1ClusterTrustBundle\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ClusterTrustBundle\",\n        \"operationId\": \"createCertificatesV1alpha1ClusterTrustBundle\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/certificates.k8s.io/v1alpha1/clustertrustbundles/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ClusterTrustBundle\",\n        \"operationId\": \"deleteCertificatesV1alpha1ClusterTrustBundle\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ClusterTrustBundle\",\n        \"operationId\": \"readCertificatesV1alpha1ClusterTrustBundle\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ClusterTrustBundle\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ClusterTrustBundle\",\n        \"operationId\": \"patchCertificatesV1alpha1ClusterTrustBundle\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ClusterTrustBundle\",\n        \"operationId\": \"replaceCertificatesV1alpha1ClusterTrustBundle\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.certificates.v1alpha1.ClusterTrustBundle\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/certificates.k8s.io/v1alpha1/watch/clustertrustbundles\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ClusterTrustBundle. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCertificatesV1alpha1ClusterTrustBundleList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/certificates.k8s.io/v1alpha1/watch/clustertrustbundles/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ClusterTrustBundle. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCertificatesV1alpha1ClusterTrustBundle\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"certificates_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"certificates.k8s.io\",\n          \"kind\": \"ClusterTrustBundle\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ClusterTrustBundle\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/coordination.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getCoordinationAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination\"\n        ]\n      }\n    },\n    \"/apis/coordination.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getCoordinationV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ]\n      }\n    },\n    \"/apis/coordination.k8s.io/v1/leases\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Lease\",\n        \"operationId\": \"listCoordinationV1LeaseForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.LeaseList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Lease\",\n        \"operationId\": \"deleteCoordinationV1CollectionNamespacedLease\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Lease\",\n        \"operationId\": \"listCoordinationV1NamespacedLease\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.LeaseList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Lease\",\n        \"operationId\": \"createCoordinationV1NamespacedLease\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Lease\",\n        \"operationId\": \"deleteCoordinationV1NamespacedLease\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Lease\",\n        \"operationId\": \"readCoordinationV1NamespacedLease\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Lease\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Lease\",\n        \"operationId\": \"patchCoordinationV1NamespacedLease\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Lease\",\n        \"operationId\": \"replaceCoordinationV1NamespacedLease\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1.Lease\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/coordination.k8s.io/v1/watch/leases\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Lease. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoordinationV1LeaseListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/coordination.k8s.io/v1/watch/namespaces/{namespace}/leases\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Lease. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoordinationV1NamespacedLeaseList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/coordination.k8s.io/v1/watch/namespaces/{namespace}/leases/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Lease. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoordinationV1NamespacedLease\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"Lease\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Lease\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/coordination.k8s.io/v1alpha1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getCoordinationV1alpha1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ]\n      }\n    },\n    \"/apis/coordination.k8s.io/v1alpha1/leasecandidates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind LeaseCandidate\",\n        \"operationId\": \"listCoordinationV1alpha1LeaseCandidateForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidateList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of LeaseCandidate\",\n        \"operationId\": \"deleteCoordinationV1alpha1CollectionNamespacedLeaseCandidate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind LeaseCandidate\",\n        \"operationId\": \"listCoordinationV1alpha1NamespacedLeaseCandidate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidateList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a LeaseCandidate\",\n        \"operationId\": \"createCoordinationV1alpha1NamespacedLeaseCandidate\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/coordination.k8s.io/v1alpha1/namespaces/{namespace}/leasecandidates/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a LeaseCandidate\",\n        \"operationId\": \"deleteCoordinationV1alpha1NamespacedLeaseCandidate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified LeaseCandidate\",\n        \"operationId\": \"readCoordinationV1alpha1NamespacedLeaseCandidate\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the LeaseCandidate\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified LeaseCandidate\",\n        \"operationId\": \"patchCoordinationV1alpha1NamespacedLeaseCandidate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified LeaseCandidate\",\n        \"operationId\": \"replaceCoordinationV1alpha1NamespacedLeaseCandidate\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.coordination.v1alpha1.LeaseCandidate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/coordination.k8s.io/v1alpha1/watch/leasecandidates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of LeaseCandidate. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoordinationV1alpha1LeaseCandidateListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/coordination.k8s.io/v1alpha1/watch/namespaces/{namespace}/leasecandidates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of LeaseCandidate. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchCoordinationV1alpha1NamespacedLeaseCandidateList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/coordination.k8s.io/v1alpha1/watch/namespaces/{namespace}/leasecandidates/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind LeaseCandidate. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchCoordinationV1alpha1NamespacedLeaseCandidate\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"coordination_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"coordination.k8s.io\",\n          \"kind\": \"LeaseCandidate\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the LeaseCandidate\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/discovery.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getDiscoveryAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery\"\n        ]\n      }\n    },\n    \"/apis/discovery.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getDiscoveryV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ]\n      }\n    },\n    \"/apis/discovery.k8s.io/v1/endpointslices\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind EndpointSlice\",\n        \"operationId\": \"listDiscoveryV1EndpointSliceForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSliceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of EndpointSlice\",\n        \"operationId\": \"deleteDiscoveryV1CollectionNamespacedEndpointSlice\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind EndpointSlice\",\n        \"operationId\": \"listDiscoveryV1NamespacedEndpointSlice\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSliceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create an EndpointSlice\",\n        \"operationId\": \"createDiscoveryV1NamespacedEndpointSlice\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete an EndpointSlice\",\n        \"operationId\": \"deleteDiscoveryV1NamespacedEndpointSlice\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified EndpointSlice\",\n        \"operationId\": \"readDiscoveryV1NamespacedEndpointSlice\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the EndpointSlice\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified EndpointSlice\",\n        \"operationId\": \"patchDiscoveryV1NamespacedEndpointSlice\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified EndpointSlice\",\n        \"operationId\": \"replaceDiscoveryV1NamespacedEndpointSlice\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.discovery.v1.EndpointSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/discovery.k8s.io/v1/watch/endpointslices\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of EndpointSlice. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchDiscoveryV1EndpointSliceListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/discovery.k8s.io/v1/watch/namespaces/{namespace}/endpointslices\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of EndpointSlice. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchDiscoveryV1NamespacedEndpointSliceList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/discovery.k8s.io/v1/watch/namespaces/{namespace}/endpointslices/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind EndpointSlice. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchDiscoveryV1NamespacedEndpointSlice\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"discovery_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"discovery.k8s.io\",\n          \"kind\": \"EndpointSlice\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the EndpointSlice\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/events.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getEventsAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events\"\n        ]\n      }\n    },\n    \"/apis/events.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getEventsV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ]\n      }\n    },\n    \"/apis/events.k8s.io/v1/events\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Event\",\n        \"operationId\": \"listEventsV1EventForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.EventList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/events.k8s.io/v1/namespaces/{namespace}/events\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Event\",\n        \"operationId\": \"deleteEventsV1CollectionNamespacedEvent\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Event\",\n        \"operationId\": \"listEventsV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.EventList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create an Event\",\n        \"operationId\": \"createEventsV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/events.k8s.io/v1/namespaces/{namespace}/events/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete an Event\",\n        \"operationId\": \"deleteEventsV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Event\",\n        \"operationId\": \"readEventsV1NamespacedEvent\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Event\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Event\",\n        \"operationId\": \"patchEventsV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Event\",\n        \"operationId\": \"replaceEventsV1NamespacedEvent\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.events.v1.Event\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/events.k8s.io/v1/watch/events\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchEventsV1EventListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/events.k8s.io/v1/watch/namespaces/{namespace}/events\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchEventsV1NamespacedEventList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/events.k8s.io/v1/watch/namespaces/{namespace}/events/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Event. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchEventsV1NamespacedEvent\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"events_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"events.k8s.io\",\n          \"kind\": \"Event\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Event\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getFlowcontrolApiserverAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver\"\n        ]\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getFlowcontrolApiserverV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ]\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of FlowSchema\",\n        \"operationId\": \"deleteFlowcontrolApiserverV1CollectionFlowSchema\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind FlowSchema\",\n        \"operationId\": \"listFlowcontrolApiserverV1FlowSchema\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchemaList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a FlowSchema\",\n        \"operationId\": \"createFlowcontrolApiserverV1FlowSchema\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a FlowSchema\",\n        \"operationId\": \"deleteFlowcontrolApiserverV1FlowSchema\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified FlowSchema\",\n        \"operationId\": \"readFlowcontrolApiserverV1FlowSchema\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the FlowSchema\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified FlowSchema\",\n        \"operationId\": \"patchFlowcontrolApiserverV1FlowSchema\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified FlowSchema\",\n        \"operationId\": \"replaceFlowcontrolApiserverV1FlowSchema\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/flowschemas/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified FlowSchema\",\n        \"operationId\": \"readFlowcontrolApiserverV1FlowSchemaStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the FlowSchema\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified FlowSchema\",\n        \"operationId\": \"patchFlowcontrolApiserverV1FlowSchemaStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified FlowSchema\",\n        \"operationId\": \"replaceFlowcontrolApiserverV1FlowSchemaStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of PriorityLevelConfiguration\",\n        \"operationId\": \"deleteFlowcontrolApiserverV1CollectionPriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PriorityLevelConfiguration\",\n        \"operationId\": \"listFlowcontrolApiserverV1PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a PriorityLevelConfiguration\",\n        \"operationId\": \"createFlowcontrolApiserverV1PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a PriorityLevelConfiguration\",\n        \"operationId\": \"deleteFlowcontrolApiserverV1PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified PriorityLevelConfiguration\",\n        \"operationId\": \"readFlowcontrolApiserverV1PriorityLevelConfiguration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PriorityLevelConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified PriorityLevelConfiguration\",\n        \"operationId\": \"patchFlowcontrolApiserverV1PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified PriorityLevelConfiguration\",\n        \"operationId\": \"replaceFlowcontrolApiserverV1PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified PriorityLevelConfiguration\",\n        \"operationId\": \"readFlowcontrolApiserverV1PriorityLevelConfigurationStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PriorityLevelConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified PriorityLevelConfiguration\",\n        \"operationId\": \"patchFlowcontrolApiserverV1PriorityLevelConfigurationStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified PriorityLevelConfiguration\",\n        \"operationId\": \"replaceFlowcontrolApiserverV1PriorityLevelConfigurationStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/watch/flowschemas\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of FlowSchema. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchFlowcontrolApiserverV1FlowSchemaList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/watch/flowschemas/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind FlowSchema. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchFlowcontrolApiserverV1FlowSchema\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the FlowSchema\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/watch/prioritylevelconfigurations\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PriorityLevelConfiguration. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchFlowcontrolApiserverV1PriorityLevelConfigurationList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1/watch/prioritylevelconfigurations/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind PriorityLevelConfiguration. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchFlowcontrolApiserverV1PriorityLevelConfiguration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the PriorityLevelConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getFlowcontrolApiserverV1beta3APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ]\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of FlowSchema\",\n        \"operationId\": \"deleteFlowcontrolApiserverV1beta3CollectionFlowSchema\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind FlowSchema\",\n        \"operationId\": \"listFlowcontrolApiserverV1beta3FlowSchema\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchemaList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a FlowSchema\",\n        \"operationId\": \"createFlowcontrolApiserverV1beta3FlowSchema\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a FlowSchema\",\n        \"operationId\": \"deleteFlowcontrolApiserverV1beta3FlowSchema\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified FlowSchema\",\n        \"operationId\": \"readFlowcontrolApiserverV1beta3FlowSchema\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the FlowSchema\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified FlowSchema\",\n        \"operationId\": \"patchFlowcontrolApiserverV1beta3FlowSchema\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified FlowSchema\",\n        \"operationId\": \"replaceFlowcontrolApiserverV1beta3FlowSchema\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified FlowSchema\",\n        \"operationId\": \"readFlowcontrolApiserverV1beta3FlowSchemaStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the FlowSchema\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified FlowSchema\",\n        \"operationId\": \"patchFlowcontrolApiserverV1beta3FlowSchemaStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified FlowSchema\",\n        \"operationId\": \"replaceFlowcontrolApiserverV1beta3FlowSchemaStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of PriorityLevelConfiguration\",\n        \"operationId\": \"deleteFlowcontrolApiserverV1beta3CollectionPriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PriorityLevelConfiguration\",\n        \"operationId\": \"listFlowcontrolApiserverV1beta3PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a PriorityLevelConfiguration\",\n        \"operationId\": \"createFlowcontrolApiserverV1beta3PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a PriorityLevelConfiguration\",\n        \"operationId\": \"deleteFlowcontrolApiserverV1beta3PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified PriorityLevelConfiguration\",\n        \"operationId\": \"readFlowcontrolApiserverV1beta3PriorityLevelConfiguration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PriorityLevelConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified PriorityLevelConfiguration\",\n        \"operationId\": \"patchFlowcontrolApiserverV1beta3PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified PriorityLevelConfiguration\",\n        \"operationId\": \"replaceFlowcontrolApiserverV1beta3PriorityLevelConfiguration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified PriorityLevelConfiguration\",\n        \"operationId\": \"readFlowcontrolApiserverV1beta3PriorityLevelConfigurationStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PriorityLevelConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified PriorityLevelConfiguration\",\n        \"operationId\": \"patchFlowcontrolApiserverV1beta3PriorityLevelConfigurationStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified PriorityLevelConfiguration\",\n        \"operationId\": \"replaceFlowcontrolApiserverV1beta3PriorityLevelConfigurationStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      }\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/flowschemas\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of FlowSchema. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchFlowcontrolApiserverV1beta3FlowSchemaList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/flowschemas/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind FlowSchema. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchFlowcontrolApiserverV1beta3FlowSchema\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"FlowSchema\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the FlowSchema\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/prioritylevelconfigurations\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PriorityLevelConfiguration. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchFlowcontrolApiserverV1beta3PriorityLevelConfigurationList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/prioritylevelconfigurations/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind PriorityLevelConfiguration. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchFlowcontrolApiserverV1beta3PriorityLevelConfiguration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"flowcontrolApiserver_v1beta3\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"flowcontrol.apiserver.k8s.io\",\n          \"kind\": \"PriorityLevelConfiguration\",\n          \"version\": \"v1beta3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the PriorityLevelConfiguration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/internal.apiserver.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getInternalApiserverAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver\"\n        ]\n      }\n    },\n    \"/apis/internal.apiserver.k8s.io/v1alpha1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getInternalApiserverV1alpha1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ]\n      }\n    },\n    \"/apis/internal.apiserver.k8s.io/v1alpha1/storageversions\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of StorageVersion\",\n        \"operationId\": \"deleteInternalApiserverV1alpha1CollectionStorageVersion\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind StorageVersion\",\n        \"operationId\": \"listInternalApiserverV1alpha1StorageVersion\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a StorageVersion\",\n        \"operationId\": \"createInternalApiserverV1alpha1StorageVersion\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a StorageVersion\",\n        \"operationId\": \"deleteInternalApiserverV1alpha1StorageVersion\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified StorageVersion\",\n        \"operationId\": \"readInternalApiserverV1alpha1StorageVersion\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the StorageVersion\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified StorageVersion\",\n        \"operationId\": \"patchInternalApiserverV1alpha1StorageVersion\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified StorageVersion\",\n        \"operationId\": \"replaceInternalApiserverV1alpha1StorageVersion\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/internal.apiserver.k8s.io/v1alpha1/storageversions/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified StorageVersion\",\n        \"operationId\": \"readInternalApiserverV1alpha1StorageVersionStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the StorageVersion\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified StorageVersion\",\n        \"operationId\": \"patchInternalApiserverV1alpha1StorageVersionStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified StorageVersion\",\n        \"operationId\": \"replaceInternalApiserverV1alpha1StorageVersionStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.apiserverinternal.v1alpha1.StorageVersion\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/internal.apiserver.k8s.io/v1alpha1/watch/storageversions\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of StorageVersion. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchInternalApiserverV1alpha1StorageVersionList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/internal.apiserver.k8s.io/v1alpha1/watch/storageversions/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind StorageVersion. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchInternalApiserverV1alpha1StorageVersion\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"internalApiserver_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"internal.apiserver.k8s.io\",\n          \"kind\": \"StorageVersion\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the StorageVersion\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getNetworkingAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking\"\n        ]\n      }\n    },\n    \"/apis/networking.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getNetworkingV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ]\n      }\n    },\n    \"/apis/networking.k8s.io/v1/ingressclasses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of IngressClass\",\n        \"operationId\": \"deleteNetworkingV1CollectionIngressClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind IngressClass\",\n        \"operationId\": \"listNetworkingV1IngressClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClassList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create an IngressClass\",\n        \"operationId\": \"createNetworkingV1IngressClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1/ingressclasses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete an IngressClass\",\n        \"operationId\": \"deleteNetworkingV1IngressClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified IngressClass\",\n        \"operationId\": \"readNetworkingV1IngressClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the IngressClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified IngressClass\",\n        \"operationId\": \"patchNetworkingV1IngressClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified IngressClass\",\n        \"operationId\": \"replaceNetworkingV1IngressClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1/ingresses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Ingress\",\n        \"operationId\": \"listNetworkingV1IngressForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Ingress\",\n        \"operationId\": \"deleteNetworkingV1CollectionNamespacedIngress\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Ingress\",\n        \"operationId\": \"listNetworkingV1NamespacedIngress\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.IngressList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create an Ingress\",\n        \"operationId\": \"createNetworkingV1NamespacedIngress\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete an Ingress\",\n        \"operationId\": \"deleteNetworkingV1NamespacedIngress\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Ingress\",\n        \"operationId\": \"readNetworkingV1NamespacedIngress\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Ingress\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Ingress\",\n        \"operationId\": \"patchNetworkingV1NamespacedIngress\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Ingress\",\n        \"operationId\": \"replaceNetworkingV1NamespacedIngress\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified Ingress\",\n        \"operationId\": \"readNetworkingV1NamespacedIngressStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Ingress\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified Ingress\",\n        \"operationId\": \"patchNetworkingV1NamespacedIngressStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified Ingress\",\n        \"operationId\": \"replaceNetworkingV1NamespacedIngressStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.Ingress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of NetworkPolicy\",\n        \"operationId\": \"deleteNetworkingV1CollectionNamespacedNetworkPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind NetworkPolicy\",\n        \"operationId\": \"listNetworkingV1NamespacedNetworkPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicyList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a NetworkPolicy\",\n        \"operationId\": \"createNetworkingV1NamespacedNetworkPolicy\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a NetworkPolicy\",\n        \"operationId\": \"deleteNetworkingV1NamespacedNetworkPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified NetworkPolicy\",\n        \"operationId\": \"readNetworkingV1NamespacedNetworkPolicy\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the NetworkPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified NetworkPolicy\",\n        \"operationId\": \"patchNetworkingV1NamespacedNetworkPolicy\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified NetworkPolicy\",\n        \"operationId\": \"replaceNetworkingV1NamespacedNetworkPolicy\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicy\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1/networkpolicies\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind NetworkPolicy\",\n        \"operationId\": \"listNetworkingV1NetworkPolicyForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1.NetworkPolicyList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/watch/ingressclasses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of IngressClass. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchNetworkingV1IngressClassList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/watch/ingressclasses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind IngressClass. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchNetworkingV1IngressClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IngressClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the IngressClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/watch/ingresses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Ingress. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchNetworkingV1IngressListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/watch/namespaces/{namespace}/ingresses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Ingress. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchNetworkingV1NamespacedIngressList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/watch/namespaces/{namespace}/ingresses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Ingress. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchNetworkingV1NamespacedIngress\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"Ingress\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Ingress\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/watch/namespaces/{namespace}/networkpolicies\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of NetworkPolicy. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchNetworkingV1NamespacedNetworkPolicyList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/watch/namespaces/{namespace}/networkpolicies/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind NetworkPolicy. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchNetworkingV1NamespacedNetworkPolicy\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the NetworkPolicy\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1/watch/networkpolicies\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of NetworkPolicy. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchNetworkingV1NetworkPolicyListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"NetworkPolicy\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1beta1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getNetworkingV1beta1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ]\n      }\n    },\n    \"/apis/networking.k8s.io/v1beta1/ipaddresses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of IPAddress\",\n        \"operationId\": \"deleteNetworkingV1beta1CollectionIPAddress\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind IPAddress\",\n        \"operationId\": \"listNetworkingV1beta1IPAddress\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddressList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create an IPAddress\",\n        \"operationId\": \"createNetworkingV1beta1IPAddress\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1beta1/ipaddresses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete an IPAddress\",\n        \"operationId\": \"deleteNetworkingV1beta1IPAddress\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified IPAddress\",\n        \"operationId\": \"readNetworkingV1beta1IPAddress\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the IPAddress\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified IPAddress\",\n        \"operationId\": \"patchNetworkingV1beta1IPAddress\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified IPAddress\",\n        \"operationId\": \"replaceNetworkingV1beta1IPAddress\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.IPAddress\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1beta1/servicecidrs\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ServiceCIDR\",\n        \"operationId\": \"deleteNetworkingV1beta1CollectionServiceCIDR\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ServiceCIDR\",\n        \"operationId\": \"listNetworkingV1beta1ServiceCIDR\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDRList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ServiceCIDR\",\n        \"operationId\": \"createNetworkingV1beta1ServiceCIDR\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1beta1/servicecidrs/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ServiceCIDR\",\n        \"operationId\": \"deleteNetworkingV1beta1ServiceCIDR\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ServiceCIDR\",\n        \"operationId\": \"readNetworkingV1beta1ServiceCIDR\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ServiceCIDR\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ServiceCIDR\",\n        \"operationId\": \"patchNetworkingV1beta1ServiceCIDR\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ServiceCIDR\",\n        \"operationId\": \"replaceNetworkingV1beta1ServiceCIDR\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1beta1/servicecidrs/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified ServiceCIDR\",\n        \"operationId\": \"readNetworkingV1beta1ServiceCIDRStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ServiceCIDR\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified ServiceCIDR\",\n        \"operationId\": \"patchNetworkingV1beta1ServiceCIDRStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified ServiceCIDR\",\n        \"operationId\": \"replaceNetworkingV1beta1ServiceCIDRStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.networking.v1beta1.ServiceCIDR\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/networking.k8s.io/v1beta1/watch/ipaddresses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of IPAddress. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchNetworkingV1beta1IPAddressList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1beta1/watch/ipaddresses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind IPAddress. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchNetworkingV1beta1IPAddress\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"IPAddress\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the IPAddress\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1beta1/watch/servicecidrs\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ServiceCIDR. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchNetworkingV1beta1ServiceCIDRList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/networking.k8s.io/v1beta1/watch/servicecidrs/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ServiceCIDR. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchNetworkingV1beta1ServiceCIDR\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"networking_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"networking.k8s.io\",\n          \"kind\": \"ServiceCIDR\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ServiceCIDR\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/node.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getNodeAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node\"\n        ]\n      }\n    },\n    \"/apis/node.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getNodeV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ]\n      }\n    },\n    \"/apis/node.k8s.io/v1/runtimeclasses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of RuntimeClass\",\n        \"operationId\": \"deleteNodeV1CollectionRuntimeClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind RuntimeClass\",\n        \"operationId\": \"listNodeV1RuntimeClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClassList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a RuntimeClass\",\n        \"operationId\": \"createNodeV1RuntimeClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/node.k8s.io/v1/runtimeclasses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a RuntimeClass\",\n        \"operationId\": \"deleteNodeV1RuntimeClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified RuntimeClass\",\n        \"operationId\": \"readNodeV1RuntimeClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the RuntimeClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified RuntimeClass\",\n        \"operationId\": \"patchNodeV1RuntimeClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified RuntimeClass\",\n        \"operationId\": \"replaceNodeV1RuntimeClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.node.v1.RuntimeClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/node.k8s.io/v1/watch/runtimeclasses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of RuntimeClass. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchNodeV1RuntimeClassList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/node.k8s.io/v1/watch/runtimeclasses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind RuntimeClass. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchNodeV1RuntimeClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"node_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"node.k8s.io\",\n          \"kind\": \"RuntimeClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the RuntimeClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/policy/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getPolicyAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy\"\n        ]\n      }\n    },\n    \"/apis/policy/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getPolicyV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ]\n      }\n    },\n    \"/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of PodDisruptionBudget\",\n        \"operationId\": \"deletePolicyV1CollectionNamespacedPodDisruptionBudget\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PodDisruptionBudget\",\n        \"operationId\": \"listPolicyV1NamespacedPodDisruptionBudget\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a PodDisruptionBudget\",\n        \"operationId\": \"createPolicyV1NamespacedPodDisruptionBudget\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a PodDisruptionBudget\",\n        \"operationId\": \"deletePolicyV1NamespacedPodDisruptionBudget\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified PodDisruptionBudget\",\n        \"operationId\": \"readPolicyV1NamespacedPodDisruptionBudget\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PodDisruptionBudget\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified PodDisruptionBudget\",\n        \"operationId\": \"patchPolicyV1NamespacedPodDisruptionBudget\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified PodDisruptionBudget\",\n        \"operationId\": \"replacePolicyV1NamespacedPodDisruptionBudget\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified PodDisruptionBudget\",\n        \"operationId\": \"readPolicyV1NamespacedPodDisruptionBudgetStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PodDisruptionBudget\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified PodDisruptionBudget\",\n        \"operationId\": \"patchPolicyV1NamespacedPodDisruptionBudgetStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified PodDisruptionBudget\",\n        \"operationId\": \"replacePolicyV1NamespacedPodDisruptionBudgetStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/policy/v1/poddisruptionbudgets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PodDisruptionBudget\",\n        \"operationId\": \"listPolicyV1PodDisruptionBudgetForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PodDisruptionBudget. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchPolicyV1NamespacedPodDisruptionBudgetList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind PodDisruptionBudget. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchPolicyV1NamespacedPodDisruptionBudget\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the PodDisruptionBudget\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/policy/v1/watch/poddisruptionbudgets\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PodDisruptionBudget. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchPolicyV1PodDisruptionBudgetListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"policy_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"policy\",\n          \"kind\": \"PodDisruptionBudget\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getRbacAuthorizationAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization\"\n        ]\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getRbacAuthorizationV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ]\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/clusterrolebindings\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ClusterRoleBinding\",\n        \"operationId\": \"deleteRbacAuthorizationV1CollectionClusterRoleBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ClusterRoleBinding\",\n        \"operationId\": \"listRbacAuthorizationV1ClusterRoleBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBindingList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ClusterRoleBinding\",\n        \"operationId\": \"createRbacAuthorizationV1ClusterRoleBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ClusterRoleBinding\",\n        \"operationId\": \"deleteRbacAuthorizationV1ClusterRoleBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ClusterRoleBinding\",\n        \"operationId\": \"readRbacAuthorizationV1ClusterRoleBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ClusterRoleBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ClusterRoleBinding\",\n        \"operationId\": \"patchRbacAuthorizationV1ClusterRoleBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ClusterRoleBinding\",\n        \"operationId\": \"replaceRbacAuthorizationV1ClusterRoleBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/clusterroles\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ClusterRole\",\n        \"operationId\": \"deleteRbacAuthorizationV1CollectionClusterRole\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ClusterRole\",\n        \"operationId\": \"listRbacAuthorizationV1ClusterRole\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRoleList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ClusterRole\",\n        \"operationId\": \"createRbacAuthorizationV1ClusterRole\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/clusterroles/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ClusterRole\",\n        \"operationId\": \"deleteRbacAuthorizationV1ClusterRole\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ClusterRole\",\n        \"operationId\": \"readRbacAuthorizationV1ClusterRole\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ClusterRole\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ClusterRole\",\n        \"operationId\": \"patchRbacAuthorizationV1ClusterRole\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ClusterRole\",\n        \"operationId\": \"replaceRbacAuthorizationV1ClusterRole\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.ClusterRole\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of RoleBinding\",\n        \"operationId\": \"deleteRbacAuthorizationV1CollectionNamespacedRoleBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind RoleBinding\",\n        \"operationId\": \"listRbacAuthorizationV1NamespacedRoleBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBindingList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a RoleBinding\",\n        \"operationId\": \"createRbacAuthorizationV1NamespacedRoleBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a RoleBinding\",\n        \"operationId\": \"deleteRbacAuthorizationV1NamespacedRoleBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified RoleBinding\",\n        \"operationId\": \"readRbacAuthorizationV1NamespacedRoleBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the RoleBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified RoleBinding\",\n        \"operationId\": \"patchRbacAuthorizationV1NamespacedRoleBinding\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified RoleBinding\",\n        \"operationId\": \"replaceRbacAuthorizationV1NamespacedRoleBinding\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBinding\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of Role\",\n        \"operationId\": \"deleteRbacAuthorizationV1CollectionNamespacedRole\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Role\",\n        \"operationId\": \"listRbacAuthorizationV1NamespacedRole\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a Role\",\n        \"operationId\": \"createRbacAuthorizationV1NamespacedRole\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a Role\",\n        \"operationId\": \"deleteRbacAuthorizationV1NamespacedRole\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified Role\",\n        \"operationId\": \"readRbacAuthorizationV1NamespacedRole\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the Role\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified Role\",\n        \"operationId\": \"patchRbacAuthorizationV1NamespacedRole\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified Role\",\n        \"operationId\": \"replaceRbacAuthorizationV1NamespacedRole\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.Role\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/rolebindings\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind RoleBinding\",\n        \"operationId\": \"listRbacAuthorizationV1RoleBindingForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleBindingList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/roles\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind Role\",\n        \"operationId\": \"listRbacAuthorizationV1RoleForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.rbac.v1.RoleList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/clusterrolebindings\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ClusterRoleBinding. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchRbacAuthorizationV1ClusterRoleBindingList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/clusterrolebindings/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ClusterRoleBinding. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchRbacAuthorizationV1ClusterRoleBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ClusterRoleBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/clusterroles\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ClusterRole. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchRbacAuthorizationV1ClusterRoleList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/clusterroles/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ClusterRole. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchRbacAuthorizationV1ClusterRole\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"ClusterRole\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ClusterRole\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/rolebindings\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of RoleBinding. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchRbacAuthorizationV1NamespacedRoleBindingList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/rolebindings/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind RoleBinding. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchRbacAuthorizationV1NamespacedRoleBinding\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the RoleBinding\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/roles\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Role. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchRbacAuthorizationV1NamespacedRoleList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/roles/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind Role. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchRbacAuthorizationV1NamespacedRole\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the Role\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/rolebindings\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of RoleBinding. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchRbacAuthorizationV1RoleBindingListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"RoleBinding\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/rbac.authorization.k8s.io/v1/watch/roles\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of Role. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchRbacAuthorizationV1RoleListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"rbacAuthorization_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"rbac.authorization.k8s.io\",\n          \"kind\": \"Role\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getResourceAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource\"\n        ]\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getResourceV1alpha3APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ]\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/deviceclasses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of DeviceClass\",\n        \"operationId\": \"deleteResourceV1alpha3CollectionDeviceClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind DeviceClass\",\n        \"operationId\": \"listResourceV1alpha3DeviceClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClassList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a DeviceClass\",\n        \"operationId\": \"createResourceV1alpha3DeviceClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/deviceclasses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a DeviceClass\",\n        \"operationId\": \"deleteResourceV1alpha3DeviceClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified DeviceClass\",\n        \"operationId\": \"readResourceV1alpha3DeviceClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the DeviceClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified DeviceClass\",\n        \"operationId\": \"patchResourceV1alpha3DeviceClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified DeviceClass\",\n        \"operationId\": \"replaceResourceV1alpha3DeviceClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.DeviceClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of PodSchedulingContext\",\n        \"operationId\": \"deleteResourceV1alpha3CollectionNamespacedPodSchedulingContext\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PodSchedulingContext\",\n        \"operationId\": \"listResourceV1alpha3NamespacedPodSchedulingContext\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContextList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a PodSchedulingContext\",\n        \"operationId\": \"createResourceV1alpha3NamespacedPodSchedulingContext\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a PodSchedulingContext\",\n        \"operationId\": \"deleteResourceV1alpha3NamespacedPodSchedulingContext\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified PodSchedulingContext\",\n        \"operationId\": \"readResourceV1alpha3NamespacedPodSchedulingContext\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PodSchedulingContext\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified PodSchedulingContext\",\n        \"operationId\": \"patchResourceV1alpha3NamespacedPodSchedulingContext\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified PodSchedulingContext\",\n        \"operationId\": \"replaceResourceV1alpha3NamespacedPodSchedulingContext\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified PodSchedulingContext\",\n        \"operationId\": \"readResourceV1alpha3NamespacedPodSchedulingContextStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PodSchedulingContext\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified PodSchedulingContext\",\n        \"operationId\": \"patchResourceV1alpha3NamespacedPodSchedulingContextStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified PodSchedulingContext\",\n        \"operationId\": \"replaceResourceV1alpha3NamespacedPodSchedulingContextStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContext\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ResourceClaim\",\n        \"operationId\": \"deleteResourceV1alpha3CollectionNamespacedResourceClaim\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ResourceClaim\",\n        \"operationId\": \"listResourceV1alpha3NamespacedResourceClaim\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ResourceClaim\",\n        \"operationId\": \"createResourceV1alpha3NamespacedResourceClaim\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ResourceClaim\",\n        \"operationId\": \"deleteResourceV1alpha3NamespacedResourceClaim\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ResourceClaim\",\n        \"operationId\": \"readResourceV1alpha3NamespacedResourceClaim\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ResourceClaim\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ResourceClaim\",\n        \"operationId\": \"patchResourceV1alpha3NamespacedResourceClaim\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ResourceClaim\",\n        \"operationId\": \"replaceResourceV1alpha3NamespacedResourceClaim\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified ResourceClaim\",\n        \"operationId\": \"readResourceV1alpha3NamespacedResourceClaimStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ResourceClaim\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified ResourceClaim\",\n        \"operationId\": \"patchResourceV1alpha3NamespacedResourceClaimStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified ResourceClaim\",\n        \"operationId\": \"replaceResourceV1alpha3NamespacedResourceClaimStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaim\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ResourceClaimTemplate\",\n        \"operationId\": \"deleteResourceV1alpha3CollectionNamespacedResourceClaimTemplate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ResourceClaimTemplate\",\n        \"operationId\": \"listResourceV1alpha3NamespacedResourceClaimTemplate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ResourceClaimTemplate\",\n        \"operationId\": \"createResourceV1alpha3NamespacedResourceClaimTemplate\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ResourceClaimTemplate\",\n        \"operationId\": \"deleteResourceV1alpha3NamespacedResourceClaimTemplate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ResourceClaimTemplate\",\n        \"operationId\": \"readResourceV1alpha3NamespacedResourceClaimTemplate\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ResourceClaimTemplate\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ResourceClaimTemplate\",\n        \"operationId\": \"patchResourceV1alpha3NamespacedResourceClaimTemplate\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ResourceClaimTemplate\",\n        \"operationId\": \"replaceResourceV1alpha3NamespacedResourceClaimTemplate\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplate\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/podschedulingcontexts\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PodSchedulingContext\",\n        \"operationId\": \"listResourceV1alpha3PodSchedulingContextForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.PodSchedulingContextList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/resourceclaims\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ResourceClaim\",\n        \"operationId\": \"listResourceV1alpha3ResourceClaimForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/resourceclaimtemplates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ResourceClaimTemplate\",\n        \"operationId\": \"listResourceV1alpha3ResourceClaimTemplateForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceClaimTemplateList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/resourceslices\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of ResourceSlice\",\n        \"operationId\": \"deleteResourceV1alpha3CollectionResourceSlice\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind ResourceSlice\",\n        \"operationId\": \"listResourceV1alpha3ResourceSlice\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSliceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a ResourceSlice\",\n        \"operationId\": \"createResourceV1alpha3ResourceSlice\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/resourceslices/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a ResourceSlice\",\n        \"operationId\": \"deleteResourceV1alpha3ResourceSlice\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified ResourceSlice\",\n        \"operationId\": \"readResourceV1alpha3ResourceSlice\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the ResourceSlice\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified ResourceSlice\",\n        \"operationId\": \"patchResourceV1alpha3ResourceSlice\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified ResourceSlice\",\n        \"operationId\": \"replaceResourceV1alpha3ResourceSlice\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.resource.v1alpha3.ResourceSlice\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      }\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/deviceclasses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of DeviceClass. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchResourceV1alpha3DeviceClassList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/deviceclasses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind DeviceClass. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchResourceV1alpha3DeviceClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"DeviceClass\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the DeviceClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/podschedulingcontexts\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PodSchedulingContext. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchResourceV1alpha3NamespacedPodSchedulingContextList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/podschedulingcontexts/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind PodSchedulingContext. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchResourceV1alpha3NamespacedPodSchedulingContext\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the PodSchedulingContext\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/resourceclaims\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ResourceClaim. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchResourceV1alpha3NamespacedResourceClaimList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/resourceclaims/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ResourceClaim. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchResourceV1alpha3NamespacedResourceClaim\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ResourceClaim\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/resourceclaimtemplates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ResourceClaimTemplate. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchResourceV1alpha3NamespacedResourceClaimTemplateList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/namespaces/{namespace}/resourceclaimtemplates/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ResourceClaimTemplate. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchResourceV1alpha3NamespacedResourceClaimTemplate\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ResourceClaimTemplate\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/podschedulingcontexts\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PodSchedulingContext. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchResourceV1alpha3PodSchedulingContextListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"PodSchedulingContext\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/resourceclaims\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ResourceClaim. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchResourceV1alpha3ResourceClaimListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaim\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/resourceclaimtemplates\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ResourceClaimTemplate. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchResourceV1alpha3ResourceClaimTemplateListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceClaimTemplate\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/resourceslices\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of ResourceSlice. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchResourceV1alpha3ResourceSliceList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/resource.k8s.io/v1alpha3/watch/resourceslices/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind ResourceSlice. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchResourceV1alpha3ResourceSlice\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"resource_v1alpha3\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"resource.k8s.io\",\n          \"kind\": \"ResourceSlice\",\n          \"version\": \"v1alpha3\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the ResourceSlice\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/scheduling.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getSchedulingAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling\"\n        ]\n      }\n    },\n    \"/apis/scheduling.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getSchedulingV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ]\n      }\n    },\n    \"/apis/scheduling.k8s.io/v1/priorityclasses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of PriorityClass\",\n        \"operationId\": \"deleteSchedulingV1CollectionPriorityClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind PriorityClass\",\n        \"operationId\": \"listSchedulingV1PriorityClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClassList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a PriorityClass\",\n        \"operationId\": \"createSchedulingV1PriorityClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/scheduling.k8s.io/v1/priorityclasses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a PriorityClass\",\n        \"operationId\": \"deleteSchedulingV1PriorityClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified PriorityClass\",\n        \"operationId\": \"readSchedulingV1PriorityClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the PriorityClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified PriorityClass\",\n        \"operationId\": \"patchSchedulingV1PriorityClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified PriorityClass\",\n        \"operationId\": \"replaceSchedulingV1PriorityClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.scheduling.v1.PriorityClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/scheduling.k8s.io/v1/watch/priorityclasses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of PriorityClass. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchSchedulingV1PriorityClassList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/scheduling.k8s.io/v1/watch/priorityclasses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind PriorityClass. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchSchedulingV1PriorityClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"scheduling_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"scheduling.k8s.io\",\n          \"kind\": \"PriorityClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the PriorityClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getStorageAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage\"\n        ]\n      }\n    },\n    \"/apis/storage.k8s.io/v1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getStorageV1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ]\n      }\n    },\n    \"/apis/storage.k8s.io/v1/csidrivers\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of CSIDriver\",\n        \"operationId\": \"deleteStorageV1CollectionCSIDriver\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind CSIDriver\",\n        \"operationId\": \"listStorageV1CSIDriver\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriverList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a CSIDriver\",\n        \"operationId\": \"createStorageV1CSIDriver\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/csidrivers/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a CSIDriver\",\n        \"operationId\": \"deleteStorageV1CSIDriver\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified CSIDriver\",\n        \"operationId\": \"readStorageV1CSIDriver\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CSIDriver\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified CSIDriver\",\n        \"operationId\": \"patchStorageV1CSIDriver\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified CSIDriver\",\n        \"operationId\": \"replaceStorageV1CSIDriver\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIDriver\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/csinodes\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of CSINode\",\n        \"operationId\": \"deleteStorageV1CollectionCSINode\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind CSINode\",\n        \"operationId\": \"listStorageV1CSINode\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINodeList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a CSINode\",\n        \"operationId\": \"createStorageV1CSINode\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/csinodes/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a CSINode\",\n        \"operationId\": \"deleteStorageV1CSINode\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified CSINode\",\n        \"operationId\": \"readStorageV1CSINode\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CSINode\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified CSINode\",\n        \"operationId\": \"patchStorageV1CSINode\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified CSINode\",\n        \"operationId\": \"replaceStorageV1CSINode\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSINode\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/csistoragecapacities\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind CSIStorageCapacity\",\n        \"operationId\": \"listStorageV1CSIStorageCapacityForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacityList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of CSIStorageCapacity\",\n        \"operationId\": \"deleteStorageV1CollectionNamespacedCSIStorageCapacity\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind CSIStorageCapacity\",\n        \"operationId\": \"listStorageV1NamespacedCSIStorageCapacity\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacityList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a CSIStorageCapacity\",\n        \"operationId\": \"createStorageV1NamespacedCSIStorageCapacity\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a CSIStorageCapacity\",\n        \"operationId\": \"deleteStorageV1NamespacedCSIStorageCapacity\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified CSIStorageCapacity\",\n        \"operationId\": \"readStorageV1NamespacedCSIStorageCapacity\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the CSIStorageCapacity\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified CSIStorageCapacity\",\n        \"operationId\": \"patchStorageV1NamespacedCSIStorageCapacity\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified CSIStorageCapacity\",\n        \"operationId\": \"replaceStorageV1NamespacedCSIStorageCapacity\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/storageclasses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of StorageClass\",\n        \"operationId\": \"deleteStorageV1CollectionStorageClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind StorageClass\",\n        \"operationId\": \"listStorageV1StorageClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClassList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a StorageClass\",\n        \"operationId\": \"createStorageV1StorageClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/storageclasses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a StorageClass\",\n        \"operationId\": \"deleteStorageV1StorageClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified StorageClass\",\n        \"operationId\": \"readStorageV1StorageClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the StorageClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified StorageClass\",\n        \"operationId\": \"patchStorageV1StorageClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified StorageClass\",\n        \"operationId\": \"replaceStorageV1StorageClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.StorageClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/volumeattachments\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of VolumeAttachment\",\n        \"operationId\": \"deleteStorageV1CollectionVolumeAttachment\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind VolumeAttachment\",\n        \"operationId\": \"listStorageV1VolumeAttachment\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachmentList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a VolumeAttachment\",\n        \"operationId\": \"createStorageV1VolumeAttachment\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/volumeattachments/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a VolumeAttachment\",\n        \"operationId\": \"deleteStorageV1VolumeAttachment\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified VolumeAttachment\",\n        \"operationId\": \"readStorageV1VolumeAttachment\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the VolumeAttachment\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified VolumeAttachment\",\n        \"operationId\": \"patchStorageV1VolumeAttachment\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified VolumeAttachment\",\n        \"operationId\": \"replaceStorageV1VolumeAttachment\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/volumeattachments/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified VolumeAttachment\",\n        \"operationId\": \"readStorageV1VolumeAttachmentStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the VolumeAttachment\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified VolumeAttachment\",\n        \"operationId\": \"patchStorageV1VolumeAttachmentStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified VolumeAttachment\",\n        \"operationId\": \"replaceStorageV1VolumeAttachmentStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1.VolumeAttachment\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1/watch/csidrivers\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of CSIDriver. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStorageV1CSIDriverList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/csidrivers/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind CSIDriver. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchStorageV1CSIDriver\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIDriver\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the CSIDriver\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/csinodes\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of CSINode. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStorageV1CSINodeList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/csinodes/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind CSINode. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchStorageV1CSINode\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSINode\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the CSINode\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/csistoragecapacities\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of CSIStorageCapacity. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStorageV1CSIStorageCapacityListForAllNamespaces\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/namespaces/{namespace}/csistoragecapacities\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of CSIStorageCapacity. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStorageV1NamespacedCSIStorageCapacityList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/namespaces/{namespace}/csistoragecapacities/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind CSIStorageCapacity. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchStorageV1NamespacedCSIStorageCapacity\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"CSIStorageCapacity\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the CSIStorageCapacity\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/namespace-vgWSWtn3\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/storageclasses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of StorageClass. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStorageV1StorageClassList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/storageclasses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind StorageClass. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchStorageV1StorageClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"StorageClass\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the StorageClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/volumeattachments\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of VolumeAttachment. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStorageV1VolumeAttachmentList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1/watch/volumeattachments/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind VolumeAttachment. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchStorageV1VolumeAttachment\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttachment\",\n          \"version\": \"v1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the VolumeAttachment\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1alpha1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getStorageV1alpha1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ]\n      }\n    },\n    \"/apis/storage.k8s.io/v1alpha1/volumeattributesclasses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of VolumeAttributesClass\",\n        \"operationId\": \"deleteStorageV1alpha1CollectionVolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind VolumeAttributesClass\",\n        \"operationId\": \"listStorageV1alpha1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClassList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a VolumeAttributesClass\",\n        \"operationId\": \"createStorageV1alpha1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1alpha1/volumeattributesclasses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a VolumeAttributesClass\",\n        \"operationId\": \"deleteStorageV1alpha1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified VolumeAttributesClass\",\n        \"operationId\": \"readStorageV1alpha1VolumeAttributesClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the VolumeAttributesClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified VolumeAttributesClass\",\n        \"operationId\": \"patchStorageV1alpha1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified VolumeAttributesClass\",\n        \"operationId\": \"replaceStorageV1alpha1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1alpha1/watch/volumeattributesclasses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of VolumeAttributesClass. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStorageV1alpha1VolumeAttributesClassList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1alpha1/watch/volumeattributesclasses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind VolumeAttributesClass. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchStorageV1alpha1VolumeAttributesClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the VolumeAttributesClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1beta1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getStorageV1beta1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ]\n      }\n    },\n    \"/apis/storage.k8s.io/v1beta1/volumeattributesclasses\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of VolumeAttributesClass\",\n        \"operationId\": \"deleteStorageV1beta1CollectionVolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind VolumeAttributesClass\",\n        \"operationId\": \"listStorageV1beta1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClassList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a VolumeAttributesClass\",\n        \"operationId\": \"createStorageV1beta1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1beta1/volumeattributesclasses/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a VolumeAttributesClass\",\n        \"operationId\": \"deleteStorageV1beta1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified VolumeAttributesClass\",\n        \"operationId\": \"readStorageV1beta1VolumeAttributesClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the VolumeAttributesClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified VolumeAttributesClass\",\n        \"operationId\": \"patchStorageV1beta1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified VolumeAttributesClass\",\n        \"operationId\": \"replaceStorageV1beta1VolumeAttributesClass\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storage.v1beta1.VolumeAttributesClass\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      }\n    },\n    \"/apis/storage.k8s.io/v1beta1/watch/volumeattributesclasses\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of VolumeAttributesClass. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStorageV1beta1VolumeAttributesClassList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storage.k8s.io/v1beta1/watch/volumeattributesclasses/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind VolumeAttributesClass. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchStorageV1beta1VolumeAttributesClass\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storage_v1beta1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storage.k8s.io\",\n          \"kind\": \"VolumeAttributesClass\",\n          \"version\": \"v1beta1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the VolumeAttributesClass\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storagemigration.k8s.io/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get information of a group\",\n        \"operationId\": \"getStoragemigrationAPIGroup\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration\"\n        ]\n      }\n    },\n    \"/apis/storagemigration.k8s.io/v1alpha1/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"description\": \"get available resources\",\n        \"operationId\": \"getStoragemigrationV1alpha1APIResources\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ]\n      }\n    },\n    \"/apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete collection of StorageVersionMigration\",\n        \"operationId\": \"deleteStoragemigrationV1alpha1CollectionStorageVersionMigration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"deletecollection\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"list or watch objects of kind StorageVersionMigration\",\n        \"operationId\": \"listStoragemigrationV1alpha1StorageVersionMigration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n          },\n          {\n            \"$ref\": \"#/parameters/continue-QfD61s0i\"\n          },\n          {\n            \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n          },\n          {\n            \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n          },\n          {\n            \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n          },\n          {\n            \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n          },\n          {\n            \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n          },\n          {\n            \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n          },\n          {\n            \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigrationList\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"list\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"post\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"create a StorageVersionMigration\",\n        \"operationId\": \"createStoragemigrationV1alpha1StorageVersionMigration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"post\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}\": {\n      \"delete\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"delete a StorageVersionMigration\",\n        \"operationId\": \"deleteStoragemigrationV1alpha1StorageVersionMigration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-2Y1dVQaQ\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/gracePeriodSeconds--K5HaBOS\"\n          },\n          {\n            \"$ref\": \"#/parameters/orphanDependents-uRB25kX5\"\n          },\n          {\n            \"$ref\": \"#/parameters/propagationPolicy-6jk3prlO\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"delete\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read the specified StorageVersionMigration\",\n        \"operationId\": \"readStoragemigrationV1alpha1StorageVersionMigration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the StorageVersionMigration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update the specified StorageVersionMigration\",\n        \"operationId\": \"patchStoragemigrationV1alpha1StorageVersionMigration\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace the specified StorageVersionMigration\",\n        \"operationId\": \"replaceStoragemigrationV1alpha1StorageVersionMigration\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/storagemigration.k8s.io/v1alpha1/storageversionmigrations/{name}/status\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"read status of the specified StorageVersionMigration\",\n        \"operationId\": \"readStoragemigrationV1alpha1StorageVersionMigrationStatus\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"get\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"description\": \"name of the StorageVersionMigration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        }\n      ],\n      \"patch\": {\n        \"consumes\": [\n          \"application/json-patch+json\",\n          \"application/merge-patch+json\",\n          \"application/strategic-merge-patch+json\",\n          \"application/apply-patch+yaml\"\n        ],\n        \"description\": \"partially update status of the specified StorageVersionMigration\",\n        \"operationId\": \"patchStoragemigrationV1alpha1StorageVersionMigrationStatus\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/body-78PwaGsr\"\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-7c6nTn1T\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/force-tOGGb0Yi\"\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"patch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"put\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"replace status of the specified StorageVersionMigration\",\n        \"operationId\": \"replaceStoragemigrationV1alpha1StorageVersionMigrationStatus\",\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          {\n            \"description\": \"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed\",\n            \"in\": \"query\",\n            \"name\": \"dryRun\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          },\n          {\n            \"$ref\": \"#/parameters/fieldManager-Qy4HdaTW\"\n          },\n          {\n            \"description\": \"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.\",\n            \"in\": \"query\",\n            \"name\": \"fieldValidation\",\n            \"type\": \"string\",\n            \"uniqueItems\": true\n          }\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"201\": {\n            \"description\": \"Created\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.api.storagemigration.v1alpha1.StorageVersionMigration\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"put\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      }\n    },\n    \"/apis/storagemigration.k8s.io/v1alpha1/watch/storageversionmigrations\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch individual changes to a list of StorageVersionMigration. deprecated: use the 'watch' parameter with a list operation instead.\",\n        \"operationId\": \"watchStoragemigrationV1alpha1StorageVersionMigrationList\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watchlist\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/apis/storagemigration.k8s.io/v1alpha1/watch/storageversionmigrations/{name}\": {\n      \"get\": {\n        \"consumes\": [\n          \"*/*\"\n        ],\n        \"description\": \"watch changes to an object of kind StorageVersionMigration. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.\",\n        \"operationId\": \"watchStoragemigrationV1alpha1StorageVersionMigration\",\n        \"produces\": [\n          \"application/json\",\n          \"application/yaml\",\n          \"application/vnd.kubernetes.protobuf\",\n          \"application/json;stream=watch\",\n          \"application/vnd.kubernetes.protobuf;stream=watch\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"storagemigration_v1alpha1\"\n        ],\n        \"x-kubernetes-action\": \"watch\",\n        \"x-kubernetes-group-version-kind\": {\n          \"group\": \"storagemigration.k8s.io\",\n          \"kind\": \"StorageVersionMigration\",\n          \"version\": \"v1alpha1\"\n        }\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/allowWatchBookmarks-HC2hJt-J\"\n        },\n        {\n          \"$ref\": \"#/parameters/continue-QfD61s0i\"\n        },\n        {\n          \"$ref\": \"#/parameters/fieldSelector-xIcQKXFG\"\n        },\n        {\n          \"$ref\": \"#/parameters/labelSelector-5Zw57w4C\"\n        },\n        {\n          \"$ref\": \"#/parameters/limit-1NfNmdNH\"\n        },\n        {\n          \"description\": \"name of the StorageVersionMigration\",\n          \"in\": \"path\",\n          \"name\": \"name\",\n          \"required\": true,\n          \"type\": \"string\",\n          \"uniqueItems\": true\n        },\n        {\n          \"$ref\": \"#/parameters/pretty-tJGM1-ng\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersion-5WAnf1kx\"\n        },\n        {\n          \"$ref\": \"#/parameters/resourceVersionMatch-t8XhRHeC\"\n        },\n        {\n          \"$ref\": \"#/parameters/sendInitialEvents-rLXlEK_k\"\n        },\n        {\n          \"$ref\": \"#/parameters/timeoutSeconds-yvYezaOC\"\n        },\n        {\n          \"$ref\": \"#/parameters/watch-XNNPZGbK\"\n        }\n      ]\n    },\n    \"/logs/\": {\n      \"get\": {\n        \"operationId\": \"logFileListHandler\",\n        \"responses\": {\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"logs\"\n        ]\n      }\n    },\n    \"/logs/{logpath}\": {\n      \"get\": {\n        \"operationId\": \"logFileHandler\",\n        \"responses\": {\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"logs\"\n        ]\n      },\n      \"parameters\": [\n        {\n          \"$ref\": \"#/parameters/logpath-Noq7euwC\"\n        }\n      ]\n    },\n    \"/openid/v1/jwks/\": {\n      \"get\": {\n        \"description\": \"get service account issuer OpenID JSON Web Key Set (contains public token verification keys)\",\n        \"operationId\": \"getServiceAccountIssuerOpenIDKeyset\",\n        \"produces\": [\n          \"application/jwk-set+json\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"openid\"\n        ]\n      }\n    },\n    \"/version/\": {\n      \"get\": {\n        \"consumes\": [\n          \"application/json\"\n        ],\n        \"description\": \"get the code version\",\n        \"operationId\": \"getCodeVersion\",\n        \"produces\": [\n          \"application/json\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/io.k8s.apimachinery.pkg.version.Info\"\n            }\n          },\n          \"401\": {\n            \"description\": \"Unauthorized\"\n          }\n        },\n        \"schemes\": [\n          \"https\"\n        ],\n        \"tags\": [\n          \"version\"\n        ]\n      }\n    }\n  },\n  \"security\": [\n    {\n      \"BearerToken\": []\n    }\n  ],\n  \"securityDefinitions\": {\n    \"BearerToken\": {\n      \"description\": \"Bearer Token authentication\",\n      \"in\": \"header\",\n      \"name\": \"authorization\",\n      \"type\": \"apiKey\"\n    }\n  },\n  \"swagger\": \"2.0\"\n}\n"
  },
  {
    "path": "src/Swagger/kube-swagger.yml",
    "content": "swagger: '2.0'\ninfo:\n  title: Kubernetes\n  version: v1.11.2\npaths:\n  /api/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available API versions\n      operationId: getCoreAPIVersions\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core\n  /api/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getCoreV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n  /api/v1/componentstatuses:\n    get:\n      consumes:\n      - '*/*'\n      description: list objects of kind ComponentStatus\n      operationId: listCoreV1ComponentStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ComponentStatusList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ComponentStatus\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/componentstatuses/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ComponentStatus\n      operationId: readCoreV1ComponentStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ComponentStatus'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ComponentStatus\n        version: v1\n    parameters:\n    - description: name of the ComponentStatus\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n  /api/v1/configmaps:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ConfigMap\n      operationId: listCoreV1ConfigMapForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/endpoints:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Endpoints\n      operationId: listCoreV1EndpointsForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.EndpointsList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/events:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Event\n      operationId: listCoreV1EventForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.EventList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/limitranges:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind LimitRange\n      operationId: listCoreV1LimitRangeForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRangeList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/namespaces:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Namespace\n      operationId: listCoreV1Namespace\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.NamespaceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Namespace\n      operationId: createCoreV1Namespace\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n  /api/v1/namespaces/{namespace}/bindings:\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Binding\n      operationId: createCoreV1NamespacedBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Binding\n        version: v1\n  /api/v1/namespaces/{namespace}/configmaps:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ConfigMap\n      operationId: deleteCoreV1CollectionNamespacedConfigMap\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ConfigMap\n      operationId: listCoreV1NamespacedConfigMap\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ConfigMap\n      operationId: createCoreV1NamespacedConfigMap\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n  /api/v1/namespaces/{namespace}/configmaps/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ConfigMap\n      operationId: deleteCoreV1NamespacedConfigMap\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ConfigMap\n      operationId: readCoreV1NamespacedConfigMap\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    parameters:\n    - description: name of the ConfigMap\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ConfigMap\n      operationId: patchCoreV1NamespacedConfigMap\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ConfigMap\n      operationId: replaceCoreV1NamespacedConfigMap\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n  /api/v1/namespaces/{namespace}/endpoints:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Endpoints\n      operationId: deleteCoreV1CollectionNamespacedEndpoints\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Endpoints\n      operationId: listCoreV1NamespacedEndpoints\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.EndpointsList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create Endpoints\n      operationId: createCoreV1NamespacedEndpoints\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n  /api/v1/namespaces/{namespace}/endpoints/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete Endpoints\n      operationId: deleteCoreV1NamespacedEndpoints\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Endpoints\n      operationId: readCoreV1NamespacedEndpoints\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    parameters:\n    - description: name of the Endpoints\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Endpoints\n      operationId: patchCoreV1NamespacedEndpoints\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Endpoints\n      operationId: replaceCoreV1NamespacedEndpoints\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n  /api/v1/namespaces/{namespace}/events:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Event\n      operationId: deleteCoreV1CollectionNamespacedEvent\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Event\n      operationId: listCoreV1NamespacedEvent\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.EventList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create an Event\n      operationId: createCoreV1NamespacedEvent\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Event'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Event'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Event'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Event'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n  /api/v1/namespaces/{namespace}/events/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete an Event\n      operationId: deleteCoreV1NamespacedEvent\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Event\n      operationId: readCoreV1NamespacedEvent\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Event'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    parameters:\n    - description: name of the Event\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Event\n      operationId: patchCoreV1NamespacedEvent\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Event'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Event\n      operationId: replaceCoreV1NamespacedEvent\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Event'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Event'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Event'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n  /api/v1/namespaces/{namespace}/limitranges:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of LimitRange\n      operationId: deleteCoreV1CollectionNamespacedLimitRange\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind LimitRange\n      operationId: listCoreV1NamespacedLimitRange\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRangeList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a LimitRange\n      operationId: createCoreV1NamespacedLimitRange\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n  /api/v1/namespaces/{namespace}/limitranges/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a LimitRange\n      operationId: deleteCoreV1NamespacedLimitRange\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified LimitRange\n      operationId: readCoreV1NamespacedLimitRange\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    parameters:\n    - description: name of the LimitRange\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified LimitRange\n      operationId: patchCoreV1NamespacedLimitRange\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified LimitRange\n      operationId: replaceCoreV1NamespacedLimitRange\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n  /api/v1/namespaces/{namespace}/persistentvolumeclaims:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PersistentVolumeClaim\n      operationId: deleteCoreV1CollectionNamespacedPersistentVolumeClaim\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PersistentVolumeClaim\n      operationId: listCoreV1NamespacedPersistentVolumeClaim\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PersistentVolumeClaim\n      operationId: createCoreV1NamespacedPersistentVolumeClaim\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n  /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PersistentVolumeClaim\n      operationId: deleteCoreV1NamespacedPersistentVolumeClaim\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PersistentVolumeClaim\n      operationId: readCoreV1NamespacedPersistentVolumeClaim\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    parameters:\n    - description: name of the PersistentVolumeClaim\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PersistentVolumeClaim\n      operationId: patchCoreV1NamespacedPersistentVolumeClaim\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PersistentVolumeClaim\n      operationId: replaceCoreV1NamespacedPersistentVolumeClaim\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n  /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified PersistentVolumeClaim\n      operationId: readCoreV1NamespacedPersistentVolumeClaimStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    parameters:\n    - description: name of the PersistentVolumeClaim\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified PersistentVolumeClaim\n      operationId: patchCoreV1NamespacedPersistentVolumeClaimStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified PersistentVolumeClaim\n      operationId: replaceCoreV1NamespacedPersistentVolumeClaimStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n  /api/v1/namespaces/{namespace}/pods:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Pod\n      operationId: deleteCoreV1CollectionNamespacedPod\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Pod\n      operationId: listCoreV1NamespacedPod\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Pod\n      operationId: createCoreV1NamespacedPod\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n  /api/v1/namespaces/{namespace}/pods/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Pod\n      operationId: deleteCoreV1NamespacedPod\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Pod\n      operationId: readCoreV1NamespacedPod\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Pod\n      operationId: patchCoreV1NamespacedPod\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Pod\n      operationId: replaceCoreV1NamespacedPod\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n  /api/v1/namespaces/{namespace}/pods/{name}/attach:\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to attach of Pod\n      operationId: connectCoreV1GetNamespacedPodAttach\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: The container in which to execute the command. Defaults to only\n        container if there is only one container in the pod.\n      in: query\n      name: container\n      type: string\n      uniqueItems: true\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: Stderr if true indicates that stderr is to be redirected for the\n        attach call. Defaults to true.\n      in: query\n      name: stderr\n      type: boolean\n      uniqueItems: true\n    - description: Stdin if true, redirects the standard input stream of the pod for\n        this call. Defaults to false.\n      in: query\n      name: stdin\n      type: boolean\n      uniqueItems: true\n    - description: Stdout if true indicates that stdout is to be redirected for the\n        attach call. Defaults to true.\n      in: query\n      name: stdout\n      type: boolean\n      uniqueItems: true\n    - description: TTY if true indicates that a tty will be allocated for the attach\n        call. This is passed through the container runtime so the tty is allocated\n        on the worker node by the container runtime. Defaults to false.\n      in: query\n      name: tty\n      type: boolean\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to attach of Pod\n      operationId: connectCoreV1PostNamespacedPodAttach\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n  /api/v1/namespaces/{namespace}/pods/{name}/binding:\n    parameters:\n    - description: name of the Binding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create binding of a Pod\n      operationId: createCoreV1NamespacedPodBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Binding\n        version: v1\n  /api/v1/namespaces/{namespace}/pods/{name}/eviction:\n    parameters:\n    - description: name of the Eviction\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create eviction of a Pod\n      operationId: createCoreV1NamespacedPodEviction\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.Eviction'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.Eviction'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.Eviction'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.Eviction'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: Eviction\n        version: v1beta1\n  /api/v1/namespaces/{namespace}/pods/{name}/exec:\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to exec of Pod\n      operationId: connectCoreV1GetNamespacedPodExec\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: Command is the remote command to execute. argv array. Not executed\n        within a shell.\n      in: query\n      name: command\n      type: string\n      uniqueItems: true\n    - description: Container in which to execute the command. Defaults to only container\n        if there is only one container in the pod.\n      in: query\n      name: container\n      type: string\n      uniqueItems: true\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: Redirect the standard error stream of the pod for this call. Defaults\n        to true.\n      in: query\n      name: stderr\n      type: boolean\n      uniqueItems: true\n    - description: Redirect the standard input stream of the pod for this call. Defaults\n        to false.\n      in: query\n      name: stdin\n      type: boolean\n      uniqueItems: true\n    - description: Redirect the standard output stream of the pod for this call. Defaults\n        to true.\n      in: query\n      name: stdout\n      type: boolean\n      uniqueItems: true\n    - description: TTY if true indicates that a tty will be allocated for the exec\n        call. Defaults to false.\n      in: query\n      name: tty\n      type: boolean\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to exec of Pod\n      operationId: connectCoreV1PostNamespacedPodExec\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n  /api/v1/namespaces/{namespace}/pods/{name}/log:\n    get:\n      consumes:\n      - '*/*'\n      description: read log of the specified Pod\n      operationId: readCoreV1NamespacedPodLog\n      produces:\n      - text/plain\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: The container for which to stream logs. Defaults to only container\n        if there is one container in the pod.\n      in: query\n      name: container\n      type: string\n      uniqueItems: true\n    - description: Follow the log stream of the pod. Defaults to false.\n      in: query\n      name: follow\n      type: boolean\n      uniqueItems: true\n    - description: If set, the number of bytes to read from the server before terminating\n        the log output. This may not display a complete final line of logging, and\n        may return slightly more or slightly less than the specified limit.\n      in: query\n      name: limitBytes\n      type: integer\n      uniqueItems: true\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: Return previous terminated container logs. Defaults to false.\n      in: query\n      name: previous\n      type: boolean\n      uniqueItems: true\n    - description: A relative time in seconds before the current time from which to\n        show logs. If this value precedes the time a pod was started, only logs since\n        the pod start will be returned. If this value is in the future, no logs will\n        be returned. Only one of sinceSeconds or sinceTime may be specified.\n      in: query\n      name: sinceSeconds\n      type: integer\n      uniqueItems: true\n    - description: If set, the number of lines from the end of the logs to show. If\n        not specified, logs are shown from the creation of the container or sinceSeconds\n        or sinceTime\n      in: query\n      name: tailLines\n      type: integer\n      uniqueItems: true\n    - description: If true, add an RFC3339 or RFC3339Nano timestamp at the beginning\n        of every line of log output. Defaults to false.\n      in: query\n      name: timestamps\n      type: boolean\n      uniqueItems: true\n  /api/v1/namespaces/{namespace}/pods/{name}/portforward:\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to portforward of Pod\n      operationId: connectCoreV1GetNamespacedPodPortforward\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: List of ports to forward Required when using WebSockets\n      in: query\n      name: ports\n      type: integer\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to portforward of Pod\n      operationId: connectCoreV1PostNamespacedPodPortforward\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n  /api/v1/namespaces/{namespace}/pods/{name}/proxy:\n    delete:\n      consumes:\n      - '*/*'\n      description: connect DELETE requests to proxy of Pod\n      operationId: connectCoreV1DeleteNamespacedPodProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to proxy of Pod\n      operationId: connectCoreV1GetNamespacedPodProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    head:\n      consumes:\n      - '*/*'\n      description: connect HEAD requests to proxy of Pod\n      operationId: connectCoreV1HeadNamespacedPodProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    options:\n      consumes:\n      - '*/*'\n      description: connect OPTIONS requests to proxy of Pod\n      operationId: connectCoreV1OptionsNamespacedPodProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: Path is the URL path to use for the current proxy request to pod.\n      in: query\n      name: path\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - '*/*'\n      description: connect PATCH requests to proxy of Pod\n      operationId: connectCoreV1PatchNamespacedPodProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to proxy of Pod\n      operationId: connectCoreV1PostNamespacedPodProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: connect PUT requests to proxy of Pod\n      operationId: connectCoreV1PutNamespacedPodProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n  /api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}:\n    delete:\n      consumes:\n      - '*/*'\n      description: connect DELETE requests to proxy of Pod\n      operationId: connectCoreV1DeleteNamespacedPodProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to proxy of Pod\n      operationId: connectCoreV1GetNamespacedPodProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    head:\n      consumes:\n      - '*/*'\n      description: connect HEAD requests to proxy of Pod\n      operationId: connectCoreV1HeadNamespacedPodProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    options:\n      consumes:\n      - '*/*'\n      description: connect OPTIONS requests to proxy of Pod\n      operationId: connectCoreV1OptionsNamespacedPodProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: path to the resource\n      in: path\n      name: path\n      required: true\n      type: string\n      uniqueItems: true\n    - description: Path is the URL path to use for the current proxy request to pod.\n      in: query\n      name: path\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - '*/*'\n      description: connect PATCH requests to proxy of Pod\n      operationId: connectCoreV1PatchNamespacedPodProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to proxy of Pod\n      operationId: connectCoreV1PostNamespacedPodProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: connect PUT requests to proxy of Pod\n      operationId: connectCoreV1PutNamespacedPodProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n  /api/v1/namespaces/{namespace}/pods/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Pod\n      operationId: readCoreV1NamespacedPodStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Pod\n      operationId: patchCoreV1NamespacedPodStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Pod\n      operationId: replaceCoreV1NamespacedPodStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n  /api/v1/namespaces/{namespace}/podtemplates:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PodTemplate\n      operationId: deleteCoreV1CollectionNamespacedPodTemplate\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PodTemplate\n      operationId: listCoreV1NamespacedPodTemplate\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PodTemplate\n      operationId: createCoreV1NamespacedPodTemplate\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n  /api/v1/namespaces/{namespace}/podtemplates/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PodTemplate\n      operationId: deleteCoreV1NamespacedPodTemplate\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PodTemplate\n      operationId: readCoreV1NamespacedPodTemplate\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    parameters:\n    - description: name of the PodTemplate\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PodTemplate\n      operationId: patchCoreV1NamespacedPodTemplate\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PodTemplate\n      operationId: replaceCoreV1NamespacedPodTemplate\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n  /api/v1/namespaces/{namespace}/replicationcontrollers:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ReplicationController\n      operationId: deleteCoreV1CollectionNamespacedReplicationController\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ReplicationController\n      operationId: listCoreV1NamespacedReplicationController\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ReplicationController\n      operationId: createCoreV1NamespacedReplicationController\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n  /api/v1/namespaces/{namespace}/replicationcontrollers/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ReplicationController\n      operationId: deleteCoreV1NamespacedReplicationController\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ReplicationController\n      operationId: readCoreV1NamespacedReplicationController\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    parameters:\n    - description: name of the ReplicationController\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ReplicationController\n      operationId: patchCoreV1NamespacedReplicationController\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ReplicationController\n      operationId: replaceCoreV1NamespacedReplicationController\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n  /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified ReplicationController\n      operationId: readCoreV1NamespacedReplicationControllerScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified ReplicationController\n      operationId: patchCoreV1NamespacedReplicationControllerScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified ReplicationController\n      operationId: replaceCoreV1NamespacedReplicationControllerScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n  /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified ReplicationController\n      operationId: readCoreV1NamespacedReplicationControllerStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    parameters:\n    - description: name of the ReplicationController\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified ReplicationController\n      operationId: patchCoreV1NamespacedReplicationControllerStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified ReplicationController\n      operationId: replaceCoreV1NamespacedReplicationControllerStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n  /api/v1/namespaces/{namespace}/resourcequotas:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ResourceQuota\n      operationId: deleteCoreV1CollectionNamespacedResourceQuota\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ResourceQuota\n      operationId: listCoreV1NamespacedResourceQuota\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuotaList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ResourceQuota\n      operationId: createCoreV1NamespacedResourceQuota\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n  /api/v1/namespaces/{namespace}/resourcequotas/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ResourceQuota\n      operationId: deleteCoreV1NamespacedResourceQuota\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ResourceQuota\n      operationId: readCoreV1NamespacedResourceQuota\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    parameters:\n    - description: name of the ResourceQuota\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ResourceQuota\n      operationId: patchCoreV1NamespacedResourceQuota\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ResourceQuota\n      operationId: replaceCoreV1NamespacedResourceQuota\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n  /api/v1/namespaces/{namespace}/resourcequotas/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified ResourceQuota\n      operationId: readCoreV1NamespacedResourceQuotaStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    parameters:\n    - description: name of the ResourceQuota\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified ResourceQuota\n      operationId: patchCoreV1NamespacedResourceQuotaStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified ResourceQuota\n      operationId: replaceCoreV1NamespacedResourceQuotaStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n  /api/v1/namespaces/{namespace}/secrets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Secret\n      operationId: deleteCoreV1CollectionNamespacedSecret\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Secret\n      operationId: listCoreV1NamespacedSecret\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.SecretList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Secret\n      operationId: createCoreV1NamespacedSecret\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n  /api/v1/namespaces/{namespace}/secrets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Secret\n      operationId: deleteCoreV1NamespacedSecret\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Secret\n      operationId: readCoreV1NamespacedSecret\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    parameters:\n    - description: name of the Secret\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Secret\n      operationId: patchCoreV1NamespacedSecret\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Secret\n      operationId: replaceCoreV1NamespacedSecret\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n  /api/v1/namespaces/{namespace}/serviceaccounts:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ServiceAccount\n      operationId: deleteCoreV1CollectionNamespacedServiceAccount\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ServiceAccount\n      operationId: listCoreV1NamespacedServiceAccount\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccountList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ServiceAccount\n      operationId: createCoreV1NamespacedServiceAccount\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n  /api/v1/namespaces/{namespace}/serviceaccounts/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ServiceAccount\n      operationId: deleteCoreV1NamespacedServiceAccount\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ServiceAccount\n      operationId: readCoreV1NamespacedServiceAccount\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    parameters:\n    - description: name of the ServiceAccount\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ServiceAccount\n      operationId: patchCoreV1NamespacedServiceAccount\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ServiceAccount\n      operationId: replaceCoreV1NamespacedServiceAccount\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n  /api/v1/namespaces/{namespace}/services:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Service\n      operationId: listCoreV1NamespacedService\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Service\n      operationId: createCoreV1NamespacedService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Service'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n  /api/v1/namespaces/{namespace}/services/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Service\n      operationId: deleteCoreV1NamespacedService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Service\n      operationId: readCoreV1NamespacedService\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: name of the Service\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Service\n      operationId: patchCoreV1NamespacedService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Service\n      operationId: replaceCoreV1NamespacedService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Service'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n  /api/v1/namespaces/{namespace}/services/{name}/proxy:\n    delete:\n      consumes:\n      - '*/*'\n      description: connect DELETE requests to proxy of Service\n      operationId: connectCoreV1DeleteNamespacedServiceProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to proxy of Service\n      operationId: connectCoreV1GetNamespacedServiceProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    head:\n      consumes:\n      - '*/*'\n      description: connect HEAD requests to proxy of Service\n      operationId: connectCoreV1HeadNamespacedServiceProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    options:\n      consumes:\n      - '*/*'\n      description: connect OPTIONS requests to proxy of Service\n      operationId: connectCoreV1OptionsNamespacedServiceProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: name of the Service\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: Path is the part of URLs that include service endpoints, suffixes,\n        and parameters to use for the current proxy request to service. For example,\n        the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.\n        Path is _search?q=user:kimchy.\n      in: query\n      name: path\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - '*/*'\n      description: connect PATCH requests to proxy of Service\n      operationId: connectCoreV1PatchNamespacedServiceProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to proxy of Service\n      operationId: connectCoreV1PostNamespacedServiceProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: connect PUT requests to proxy of Service\n      operationId: connectCoreV1PutNamespacedServiceProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n  /api/v1/namespaces/{namespace}/services/{name}/proxy/{path}:\n    delete:\n      consumes:\n      - '*/*'\n      description: connect DELETE requests to proxy of Service\n      operationId: connectCoreV1DeleteNamespacedServiceProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to proxy of Service\n      operationId: connectCoreV1GetNamespacedServiceProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    head:\n      consumes:\n      - '*/*'\n      description: connect HEAD requests to proxy of Service\n      operationId: connectCoreV1HeadNamespacedServiceProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    options:\n      consumes:\n      - '*/*'\n      description: connect OPTIONS requests to proxy of Service\n      operationId: connectCoreV1OptionsNamespacedServiceProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: name of the Service\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: path to the resource\n      in: path\n      name: path\n      required: true\n      type: string\n      uniqueItems: true\n    - description: Path is the part of URLs that include service endpoints, suffixes,\n        and parameters to use for the current proxy request to service. For example,\n        the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.\n        Path is _search?q=user:kimchy.\n      in: query\n      name: path\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - '*/*'\n      description: connect PATCH requests to proxy of Service\n      operationId: connectCoreV1PatchNamespacedServiceProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to proxy of Service\n      operationId: connectCoreV1PostNamespacedServiceProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: connect PUT requests to proxy of Service\n      operationId: connectCoreV1PutNamespacedServiceProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n  /api/v1/namespaces/{namespace}/services/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Service\n      operationId: readCoreV1NamespacedServiceStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: name of the Service\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Service\n      operationId: patchCoreV1NamespacedServiceStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Service\n      operationId: replaceCoreV1NamespacedServiceStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Service'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n  /api/v1/namespaces/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Namespace\n      operationId: deleteCoreV1Namespace\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Namespace\n      operationId: readCoreV1Namespace\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n    parameters:\n    - description: name of the Namespace\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Namespace\n      operationId: patchCoreV1Namespace\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Namespace\n      operationId: replaceCoreV1Namespace\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n  /api/v1/namespaces/{name}/finalize:\n    parameters:\n    - description: name of the Namespace\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    put:\n      consumes:\n      - '*/*'\n      description: replace finalize of the specified Namespace\n      operationId: replaceCoreV1NamespaceFinalize\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n  /api/v1/namespaces/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Namespace\n      operationId: readCoreV1NamespaceStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n    parameters:\n    - description: name of the Namespace\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Namespace\n      operationId: patchCoreV1NamespaceStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Namespace\n      operationId: replaceCoreV1NamespaceStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n  /api/v1/nodes:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Node\n      operationId: deleteCoreV1CollectionNode\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Node\n      operationId: listCoreV1Node\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.NodeList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Node\n      operationId: createCoreV1Node\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Node'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n  /api/v1/nodes/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Node\n      operationId: deleteCoreV1Node\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Node\n      operationId: readCoreV1Node\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    parameters:\n    - description: name of the Node\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Node\n      operationId: patchCoreV1Node\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Node\n      operationId: replaceCoreV1Node\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Node'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n  /api/v1/nodes/{name}/proxy:\n    delete:\n      consumes:\n      - '*/*'\n      description: connect DELETE requests to proxy of Node\n      operationId: connectCoreV1DeleteNodeProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to proxy of Node\n      operationId: connectCoreV1GetNodeProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    head:\n      consumes:\n      - '*/*'\n      description: connect HEAD requests to proxy of Node\n      operationId: connectCoreV1HeadNodeProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    options:\n      consumes:\n      - '*/*'\n      description: connect OPTIONS requests to proxy of Node\n      operationId: connectCoreV1OptionsNodeProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    parameters:\n    - description: name of the Node\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: Path is the URL path to use for the current proxy request to node.\n      in: query\n      name: path\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - '*/*'\n      description: connect PATCH requests to proxy of Node\n      operationId: connectCoreV1PatchNodeProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to proxy of Node\n      operationId: connectCoreV1PostNodeProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: connect PUT requests to proxy of Node\n      operationId: connectCoreV1PutNodeProxy\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n  /api/v1/nodes/{name}/proxy/{path}:\n    delete:\n      consumes:\n      - '*/*'\n      description: connect DELETE requests to proxy of Node\n      operationId: connectCoreV1DeleteNodeProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: connect GET requests to proxy of Node\n      operationId: connectCoreV1GetNodeProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    head:\n      consumes:\n      - '*/*'\n      description: connect HEAD requests to proxy of Node\n      operationId: connectCoreV1HeadNodeProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    options:\n      consumes:\n      - '*/*'\n      description: connect OPTIONS requests to proxy of Node\n      operationId: connectCoreV1OptionsNodeProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    parameters:\n    - description: name of the Node\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: path to the resource\n      in: path\n      name: path\n      required: true\n      type: string\n      uniqueItems: true\n    - description: Path is the URL path to use for the current proxy request to node.\n      in: query\n      name: path\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - '*/*'\n      description: connect PATCH requests to proxy of Node\n      operationId: connectCoreV1PatchNodeProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    post:\n      consumes:\n      - '*/*'\n      description: connect POST requests to proxy of Node\n      operationId: connectCoreV1PostNodeProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: connect PUT requests to proxy of Node\n      operationId: connectCoreV1PutNodeProxyWithPath\n      produces:\n      - '*/*'\n      responses:\n        '200':\n          description: OK\n          schema:\n            type: string\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: connect\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n  /api/v1/nodes/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Node\n      operationId: readCoreV1NodeStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    parameters:\n    - description: name of the Node\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Node\n      operationId: patchCoreV1NodeStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Node\n      operationId: replaceCoreV1NodeStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.Node'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n  /api/v1/persistentvolumeclaims:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PersistentVolumeClaim\n      operationId: listCoreV1PersistentVolumeClaimForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/persistentvolumes:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PersistentVolume\n      operationId: deleteCoreV1CollectionPersistentVolume\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PersistentVolume\n      operationId: listCoreV1PersistentVolume\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PersistentVolume\n      operationId: createCoreV1PersistentVolume\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n  /api/v1/persistentvolumes/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PersistentVolume\n      operationId: deleteCoreV1PersistentVolume\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PersistentVolume\n      operationId: readCoreV1PersistentVolume\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    parameters:\n    - description: name of the PersistentVolume\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PersistentVolume\n      operationId: patchCoreV1PersistentVolume\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PersistentVolume\n      operationId: replaceCoreV1PersistentVolume\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n  /api/v1/persistentvolumes/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified PersistentVolume\n      operationId: readCoreV1PersistentVolumeStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    parameters:\n    - description: name of the PersistentVolume\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified PersistentVolume\n      operationId: patchCoreV1PersistentVolumeStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified PersistentVolume\n      operationId: replaceCoreV1PersistentVolumeStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n  /api/v1/pods:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Pod\n      operationId: listCoreV1PodForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/podtemplates:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PodTemplate\n      operationId: listCoreV1PodTemplateForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/replicationcontrollers:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ReplicationController\n      operationId: listCoreV1ReplicationControllerForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/resourcequotas:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ResourceQuota\n      operationId: listCoreV1ResourceQuotaForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuotaList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/secrets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Secret\n      operationId: listCoreV1SecretForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.SecretList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/serviceaccounts:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ServiceAccount\n      operationId: listCoreV1ServiceAccountForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccountList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/services:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Service\n      operationId: listCoreV1ServiceForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.core.v1.ServiceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/configmaps:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ConfigMap\n      operationId: watchCoreV1ConfigMapListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/endpoints:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Endpoints\n      operationId: watchCoreV1EndpointsListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/events:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Event\n      operationId: watchCoreV1EventListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/limitranges:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of LimitRange\n      operationId: watchCoreV1LimitRangeListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Namespace\n      operationId: watchCoreV1NamespaceList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/configmaps:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ConfigMap\n      operationId: watchCoreV1NamespacedConfigMapList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/configmaps/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ConfigMap\n      operationId: watchCoreV1NamespacedConfigMap\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ConfigMap\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ConfigMap\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/endpoints:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Endpoints\n      operationId: watchCoreV1NamespacedEndpointsList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/endpoints/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Endpoints\n      operationId: watchCoreV1NamespacedEndpoints\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Endpoints\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Endpoints\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/events:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Event\n      operationId: watchCoreV1NamespacedEventList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/events/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Event\n      operationId: watchCoreV1NamespacedEvent\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Event\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Event\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/limitranges:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of LimitRange\n      operationId: watchCoreV1NamespacedLimitRangeList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/limitranges/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind LimitRange\n      operationId: watchCoreV1NamespacedLimitRange\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: LimitRange\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the LimitRange\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/persistentvolumeclaims:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PersistentVolumeClaim\n      operationId: watchCoreV1NamespacedPersistentVolumeClaimList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PersistentVolumeClaim\n      operationId: watchCoreV1NamespacedPersistentVolumeClaim\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PersistentVolumeClaim\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/pods:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Pod\n      operationId: watchCoreV1NamespacedPodList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/pods/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Pod\n      operationId: watchCoreV1NamespacedPod\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Pod\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/podtemplates:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PodTemplate\n      operationId: watchCoreV1NamespacedPodTemplateList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/podtemplates/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PodTemplate\n      operationId: watchCoreV1NamespacedPodTemplate\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PodTemplate\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/replicationcontrollers:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ReplicationController\n      operationId: watchCoreV1NamespacedReplicationControllerList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ReplicationController\n      operationId: watchCoreV1NamespacedReplicationController\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ReplicationController\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/resourcequotas:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ResourceQuota\n      operationId: watchCoreV1NamespacedResourceQuotaList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/resourcequotas/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ResourceQuota\n      operationId: watchCoreV1NamespacedResourceQuota\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ResourceQuota\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/secrets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Secret\n      operationId: watchCoreV1NamespacedSecretList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/secrets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Secret\n      operationId: watchCoreV1NamespacedSecret\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Secret\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/serviceaccounts:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ServiceAccount\n      operationId: watchCoreV1NamespacedServiceAccountList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ServiceAccount\n      operationId: watchCoreV1NamespacedServiceAccount\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ServiceAccount\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/services:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Service\n      operationId: watchCoreV1NamespacedServiceList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{namespace}/services/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Service\n      operationId: watchCoreV1NamespacedService\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Service\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/namespaces/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Namespace\n      operationId: watchCoreV1Namespace\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Namespace\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Namespace\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/nodes:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Node\n      operationId: watchCoreV1NodeList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/nodes/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Node\n      operationId: watchCoreV1Node\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Node\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Node\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/persistentvolumeclaims:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PersistentVolumeClaim\n      operationId: watchCoreV1PersistentVolumeClaimListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolumeClaim\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/persistentvolumes:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PersistentVolume\n      operationId: watchCoreV1PersistentVolumeList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/persistentvolumes/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PersistentVolume\n      operationId: watchCoreV1PersistentVolume\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PersistentVolume\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PersistentVolume\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/pods:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Pod\n      operationId: watchCoreV1PodListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Pod\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/podtemplates:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PodTemplate\n      operationId: watchCoreV1PodTemplateListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: PodTemplate\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/replicationcontrollers:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ReplicationController\n      operationId: watchCoreV1ReplicationControllerListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ReplicationController\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/resourcequotas:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ResourceQuota\n      operationId: watchCoreV1ResourceQuotaListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ResourceQuota\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/secrets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Secret\n      operationId: watchCoreV1SecretListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Secret\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/serviceaccounts:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ServiceAccount\n      operationId: watchCoreV1ServiceAccountListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: ServiceAccount\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /api/v1/watch/services:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Service\n      operationId: watchCoreV1ServiceListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - core_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: ''\n        kind: Service\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available API versions\n      operationId: getAPIVersions\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apis\n  /apis/admissionregistration.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getAdmissionregistrationAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration\n  /apis/admissionregistration.k8s.io/v1alpha1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAdmissionregistrationV1alpha1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n  /apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of InitializerConfiguration\n      operationId: deleteAdmissionregistrationV1alpha1CollectionInitializerConfiguration\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind InitializerConfiguration\n      operationId: listAdmissionregistrationV1alpha1InitializerConfiguration\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfigurationList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create an InitializerConfiguration\n      operationId: createAdmissionregistrationV1alpha1InitializerConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n  /apis/admissionregistration.k8s.io/v1alpha1/initializerconfigurations/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete an InitializerConfiguration\n      operationId: deleteAdmissionregistrationV1alpha1InitializerConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified InitializerConfiguration\n      operationId: readAdmissionregistrationV1alpha1InitializerConfiguration\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n    parameters:\n    - description: name of the InitializerConfiguration\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified InitializerConfiguration\n      operationId: patchAdmissionregistrationV1alpha1InitializerConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified InitializerConfiguration\n      operationId: replaceAdmissionregistrationV1alpha1InitializerConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n  /apis/admissionregistration.k8s.io/v1alpha1/watch/initializerconfigurations:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of InitializerConfiguration\n      operationId: watchAdmissionregistrationV1alpha1InitializerConfigurationList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/admissionregistration.k8s.io/v1alpha1/watch/initializerconfigurations/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind InitializerConfiguration\n      operationId: watchAdmissionregistrationV1alpha1InitializerConfiguration\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: InitializerConfiguration\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the InitializerConfiguration\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/admissionregistration.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAdmissionregistrationV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n  /apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of MutatingWebhookConfiguration\n      operationId: deleteAdmissionregistrationV1beta1CollectionMutatingWebhookConfiguration\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind MutatingWebhookConfiguration\n      operationId: listAdmissionregistrationV1beta1MutatingWebhookConfiguration\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfigurationList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a MutatingWebhookConfiguration\n      operationId: createAdmissionregistrationV1beta1MutatingWebhookConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n  /apis/admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a MutatingWebhookConfiguration\n      operationId: deleteAdmissionregistrationV1beta1MutatingWebhookConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified MutatingWebhookConfiguration\n      operationId: readAdmissionregistrationV1beta1MutatingWebhookConfiguration\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n    parameters:\n    - description: name of the MutatingWebhookConfiguration\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified MutatingWebhookConfiguration\n      operationId: patchAdmissionregistrationV1beta1MutatingWebhookConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified MutatingWebhookConfiguration\n      operationId: replaceAdmissionregistrationV1beta1MutatingWebhookConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n  /apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ValidatingWebhookConfiguration\n      operationId: deleteAdmissionregistrationV1beta1CollectionValidatingWebhookConfiguration\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ValidatingWebhookConfiguration\n      operationId: listAdmissionregistrationV1beta1ValidatingWebhookConfiguration\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfigurationList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ValidatingWebhookConfiguration\n      operationId: createAdmissionregistrationV1beta1ValidatingWebhookConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n  /apis/admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ValidatingWebhookConfiguration\n      operationId: deleteAdmissionregistrationV1beta1ValidatingWebhookConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ValidatingWebhookConfiguration\n      operationId: readAdmissionregistrationV1beta1ValidatingWebhookConfiguration\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n    parameters:\n    - description: name of the ValidatingWebhookConfiguration\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ValidatingWebhookConfiguration\n      operationId: patchAdmissionregistrationV1beta1ValidatingWebhookConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ValidatingWebhookConfiguration\n      operationId: replaceAdmissionregistrationV1beta1ValidatingWebhookConfiguration\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n  /apis/admissionregistration.k8s.io/v1beta1/watch/mutatingwebhookconfigurations:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of MutatingWebhookConfiguration\n      operationId: watchAdmissionregistrationV1beta1MutatingWebhookConfigurationList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/admissionregistration.k8s.io/v1beta1/watch/mutatingwebhookconfigurations/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind MutatingWebhookConfiguration\n      operationId: watchAdmissionregistrationV1beta1MutatingWebhookConfiguration\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: MutatingWebhookConfiguration\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the MutatingWebhookConfiguration\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/admissionregistration.k8s.io/v1beta1/watch/validatingwebhookconfigurations:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ValidatingWebhookConfiguration\n      operationId: watchAdmissionregistrationV1beta1ValidatingWebhookConfigurationList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/admissionregistration.k8s.io/v1beta1/watch/validatingwebhookconfigurations/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ValidatingWebhookConfiguration\n      operationId: watchAdmissionregistrationV1beta1ValidatingWebhookConfiguration\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - admissionregistration_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: admissionregistration.k8s.io\n        kind: ValidatingWebhookConfiguration\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ValidatingWebhookConfiguration\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apiextensions.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getApiextensionsAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions\n  /apis/apiextensions.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getApiextensionsV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n  /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of CustomResourceDefinition\n      operationId: deleteApiextensionsV1beta1CollectionCustomResourceDefinition\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind CustomResourceDefinition\n      operationId: listApiextensionsV1beta1CustomResourceDefinition\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a CustomResourceDefinition\n      operationId: createApiextensionsV1beta1CustomResourceDefinition\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n  /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a CustomResourceDefinition\n      operationId: deleteApiextensionsV1beta1CustomResourceDefinition\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified CustomResourceDefinition\n      operationId: readApiextensionsV1beta1CustomResourceDefinition\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    parameters:\n    - description: name of the CustomResourceDefinition\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified CustomResourceDefinition\n      operationId: patchApiextensionsV1beta1CustomResourceDefinition\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified CustomResourceDefinition\n      operationId: replaceApiextensionsV1beta1CustomResourceDefinition\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n  /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified CustomResourceDefinition\n      operationId: readApiextensionsV1beta1CustomResourceDefinitionStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    parameters:\n    - description: name of the CustomResourceDefinition\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified CustomResourceDefinition\n      operationId: patchApiextensionsV1beta1CustomResourceDefinitionStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified CustomResourceDefinition\n      operationId: replaceApiextensionsV1beta1CustomResourceDefinitionStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n  /apis/apiextensions.k8s.io/v1beta1/watch/customresourcedefinitions:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of CustomResourceDefinition\n      operationId: watchApiextensionsV1beta1CustomResourceDefinitionList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apiextensions.k8s.io/v1beta1/watch/customresourcedefinitions/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind CustomResourceDefinition\n      operationId: watchApiextensionsV1beta1CustomResourceDefinition\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiextensions_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apiextensions.k8s.io\n        kind: CustomResourceDefinition\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the CustomResourceDefinition\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apiregistration.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getApiregistrationAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration\n  /apis/apiregistration.k8s.io/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getApiregistrationV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n  /apis/apiregistration.k8s.io/v1/apiservices:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of APIService\n      operationId: deleteApiregistrationV1CollectionAPIService\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind APIService\n      operationId: listApiregistrationV1APIService\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create an APIService\n      operationId: createApiregistrationV1APIService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n  /apis/apiregistration.k8s.io/v1/apiservices/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete an APIService\n      operationId: deleteApiregistrationV1APIService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified APIService\n      operationId: readApiregistrationV1APIService\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    parameters:\n    - description: name of the APIService\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified APIService\n      operationId: patchApiregistrationV1APIService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified APIService\n      operationId: replaceApiregistrationV1APIService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n  /apis/apiregistration.k8s.io/v1/apiservices/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified APIService\n      operationId: readApiregistrationV1APIServiceStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    parameters:\n    - description: name of the APIService\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified APIService\n      operationId: patchApiregistrationV1APIServiceStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified APIService\n      operationId: replaceApiregistrationV1APIServiceStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n  /apis/apiregistration.k8s.io/v1/watch/apiservices:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of APIService\n      operationId: watchApiregistrationV1APIServiceList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apiregistration.k8s.io/v1/watch/apiservices/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind APIService\n      operationId: watchApiregistrationV1APIService\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the APIService\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apiregistration.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getApiregistrationV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n  /apis/apiregistration.k8s.io/v1beta1/apiservices:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of APIService\n      operationId: deleteApiregistrationV1beta1CollectionAPIService\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind APIService\n      operationId: listApiregistrationV1beta1APIService\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIServiceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create an APIService\n      operationId: createApiregistrationV1beta1APIService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n  /apis/apiregistration.k8s.io/v1beta1/apiservices/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete an APIService\n      operationId: deleteApiregistrationV1beta1APIService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified APIService\n      operationId: readApiregistrationV1beta1APIService\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    parameters:\n    - description: name of the APIService\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified APIService\n      operationId: patchApiregistrationV1beta1APIService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified APIService\n      operationId: replaceApiregistrationV1beta1APIService\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n  /apis/apiregistration.k8s.io/v1beta1/apiservices/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified APIService\n      operationId: readApiregistrationV1beta1APIServiceStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    parameters:\n    - description: name of the APIService\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified APIService\n      operationId: patchApiregistrationV1beta1APIServiceStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified APIService\n      operationId: replaceApiregistrationV1beta1APIServiceStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n  /apis/apiregistration.k8s.io/v1beta1/watch/apiservices:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of APIService\n      operationId: watchApiregistrationV1beta1APIServiceList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apiregistration.k8s.io/v1beta1/watch/apiservices/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind APIService\n      operationId: watchApiregistrationV1beta1APIService\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apiregistration_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apiregistration.k8s.io\n        kind: APIService\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the APIService\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getAppsAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps\n  /apis/apps/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAppsV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n  /apis/apps/v1/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ControllerRevision\n      operationId: listAppsV1ControllerRevisionForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevisionList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind DaemonSet\n      operationId: listAppsV1DaemonSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Deployment\n      operationId: listAppsV1DeploymentForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DeploymentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/namespaces/{namespace}/controllerrevisions:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ControllerRevision\n      operationId: deleteAppsV1CollectionNamespacedControllerRevision\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ControllerRevision\n      operationId: listAppsV1NamespacedControllerRevision\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevisionList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ControllerRevision\n      operationId: createAppsV1NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ControllerRevision\n      operationId: deleteAppsV1NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ControllerRevision\n      operationId: readAppsV1NamespacedControllerRevision\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    parameters:\n    - description: name of the ControllerRevision\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ControllerRevision\n      operationId: patchAppsV1NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ControllerRevision\n      operationId: replaceAppsV1NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/daemonsets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of DaemonSet\n      operationId: deleteAppsV1CollectionNamespacedDaemonSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind DaemonSet\n      operationId: listAppsV1NamespacedDaemonSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a DaemonSet\n      operationId: createAppsV1NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a DaemonSet\n      operationId: deleteAppsV1NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified DaemonSet\n      operationId: readAppsV1NamespacedDaemonSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    parameters:\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified DaemonSet\n      operationId: patchAppsV1NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified DaemonSet\n      operationId: replaceAppsV1NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified DaemonSet\n      operationId: readAppsV1NamespacedDaemonSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    parameters:\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified DaemonSet\n      operationId: patchAppsV1NamespacedDaemonSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified DaemonSet\n      operationId: replaceAppsV1NamespacedDaemonSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/deployments:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Deployment\n      operationId: deleteAppsV1CollectionNamespacedDeployment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Deployment\n      operationId: listAppsV1NamespacedDeployment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.DeploymentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Deployment\n      operationId: createAppsV1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/deployments/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Deployment\n      operationId: deleteAppsV1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Deployment\n      operationId: readAppsV1NamespacedDeployment\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    parameters:\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Deployment\n      operationId: patchAppsV1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Deployment\n      operationId: replaceAppsV1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified Deployment\n      operationId: readAppsV1NamespacedDeploymentScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified Deployment\n      operationId: patchAppsV1NamespacedDeploymentScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified Deployment\n      operationId: replaceAppsV1NamespacedDeploymentScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Deployment\n      operationId: readAppsV1NamespacedDeploymentStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    parameters:\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Deployment\n      operationId: patchAppsV1NamespacedDeploymentStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Deployment\n      operationId: replaceAppsV1NamespacedDeploymentStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/replicasets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ReplicaSet\n      operationId: deleteAppsV1CollectionNamespacedReplicaSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ReplicaSet\n      operationId: listAppsV1NamespacedReplicaSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ReplicaSet\n      operationId: createAppsV1NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/replicasets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ReplicaSet\n      operationId: deleteAppsV1NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ReplicaSet\n      operationId: readAppsV1NamespacedReplicaSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    parameters:\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ReplicaSet\n      operationId: patchAppsV1NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ReplicaSet\n      operationId: replaceAppsV1NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified ReplicaSet\n      operationId: readAppsV1NamespacedReplicaSetScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified ReplicaSet\n      operationId: patchAppsV1NamespacedReplicaSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified ReplicaSet\n      operationId: replaceAppsV1NamespacedReplicaSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified ReplicaSet\n      operationId: readAppsV1NamespacedReplicaSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    parameters:\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified ReplicaSet\n      operationId: patchAppsV1NamespacedReplicaSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified ReplicaSet\n      operationId: replaceAppsV1NamespacedReplicaSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/statefulsets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of StatefulSet\n      operationId: deleteAppsV1CollectionNamespacedStatefulSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind StatefulSet\n      operationId: listAppsV1NamespacedStatefulSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a StatefulSet\n      operationId: createAppsV1NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a StatefulSet\n      operationId: deleteAppsV1NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified StatefulSet\n      operationId: readAppsV1NamespacedStatefulSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    parameters:\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified StatefulSet\n      operationId: patchAppsV1NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified StatefulSet\n      operationId: replaceAppsV1NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified StatefulSet\n      operationId: readAppsV1NamespacedStatefulSetScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified StatefulSet\n      operationId: patchAppsV1NamespacedStatefulSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified StatefulSet\n      operationId: replaceAppsV1NamespacedStatefulSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: Scale\n        version: v1\n  /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified StatefulSet\n      operationId: readAppsV1NamespacedStatefulSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    parameters:\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified StatefulSet\n      operationId: patchAppsV1NamespacedStatefulSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified StatefulSet\n      operationId: replaceAppsV1NamespacedStatefulSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n  /apis/apps/v1/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ReplicaSet\n      operationId: listAppsV1ReplicaSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind StatefulSet\n      operationId: listAppsV1StatefulSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ControllerRevision\n      operationId: watchAppsV1ControllerRevisionListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of DaemonSet\n      operationId: watchAppsV1DaemonSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Deployment\n      operationId: watchAppsV1DeploymentListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ControllerRevision\n      operationId: watchAppsV1NamespacedControllerRevisionList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ControllerRevision\n      operationId: watchAppsV1NamespacedControllerRevision\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ControllerRevision\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of DaemonSet\n      operationId: watchAppsV1NamespacedDaemonSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/daemonsets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind DaemonSet\n      operationId: watchAppsV1NamespacedDaemonSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Deployment\n      operationId: watchAppsV1NamespacedDeploymentList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/deployments/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Deployment\n      operationId: watchAppsV1NamespacedDeployment\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ReplicaSet\n      operationId: watchAppsV1NamespacedReplicaSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/replicasets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ReplicaSet\n      operationId: watchAppsV1NamespacedReplicaSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of StatefulSet\n      operationId: watchAppsV1NamespacedStatefulSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/namespaces/{namespace}/statefulsets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind StatefulSet\n      operationId: watchAppsV1NamespacedStatefulSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ReplicaSet\n      operationId: watchAppsV1ReplicaSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1/watch/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of StatefulSet\n      operationId: watchAppsV1StatefulSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAppsV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n  /apis/apps/v1beta1/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ControllerRevision\n      operationId: listAppsV1beta1ControllerRevisionForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevisionList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Deployment\n      operationId: listAppsV1beta1DeploymentForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ControllerRevision\n      operationId: deleteAppsV1beta1CollectionNamespacedControllerRevision\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ControllerRevision\n      operationId: listAppsV1beta1NamespacedControllerRevision\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevisionList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ControllerRevision\n      operationId: createAppsV1beta1NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/controllerrevisions/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ControllerRevision\n      operationId: deleteAppsV1beta1NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ControllerRevision\n      operationId: readAppsV1beta1NamespacedControllerRevision\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    parameters:\n    - description: name of the ControllerRevision\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ControllerRevision\n      operationId: patchAppsV1beta1NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ControllerRevision\n      operationId: replaceAppsV1beta1NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/deployments:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Deployment\n      operationId: deleteAppsV1beta1CollectionNamespacedDeployment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Deployment\n      operationId: listAppsV1beta1NamespacedDeployment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Deployment\n      operationId: createAppsV1beta1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Deployment\n      operationId: deleteAppsV1beta1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Deployment\n      operationId: readAppsV1beta1NamespacedDeployment\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Deployment\n      operationId: patchAppsV1beta1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Deployment\n      operationId: replaceAppsV1beta1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/rollback:\n    parameters:\n    - description: name of the DeploymentRollback\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create rollback of a Deployment\n      operationId: createAppsV1beta1NamespacedDeploymentRollback\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentRollback'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentRollback'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentRollback'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentRollback'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DeploymentRollback\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified Deployment\n      operationId: readAppsV1beta1NamespacedDeploymentScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified Deployment\n      operationId: patchAppsV1beta1NamespacedDeploymentScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified Deployment\n      operationId: replaceAppsV1beta1NamespacedDeploymentScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/deployments/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Deployment\n      operationId: readAppsV1beta1NamespacedDeploymentStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Deployment\n      operationId: patchAppsV1beta1NamespacedDeploymentStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Deployment\n      operationId: replaceAppsV1beta1NamespacedDeploymentStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/statefulsets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of StatefulSet\n      operationId: deleteAppsV1beta1CollectionNamespacedStatefulSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind StatefulSet\n      operationId: listAppsV1beta1NamespacedStatefulSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a StatefulSet\n      operationId: createAppsV1beta1NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a StatefulSet\n      operationId: deleteAppsV1beta1NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified StatefulSet\n      operationId: readAppsV1beta1NamespacedStatefulSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    parameters:\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified StatefulSet\n      operationId: patchAppsV1beta1NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified StatefulSet\n      operationId: replaceAppsV1beta1NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified StatefulSet\n      operationId: readAppsV1beta1NamespacedStatefulSetScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified StatefulSet\n      operationId: patchAppsV1beta1NamespacedStatefulSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified StatefulSet\n      operationId: replaceAppsV1beta1NamespacedStatefulSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta1\n  /apis/apps/v1beta1/namespaces/{namespace}/statefulsets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified StatefulSet\n      operationId: readAppsV1beta1NamespacedStatefulSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    parameters:\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified StatefulSet\n      operationId: patchAppsV1beta1NamespacedStatefulSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified StatefulSet\n      operationId: replaceAppsV1beta1NamespacedStatefulSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n  /apis/apps/v1beta1/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind StatefulSet\n      operationId: listAppsV1beta1StatefulSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ControllerRevision\n      operationId: watchAppsV1beta1ControllerRevisionListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Deployment\n      operationId: watchAppsV1beta1DeploymentListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/namespaces/{namespace}/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ControllerRevision\n      operationId: watchAppsV1beta1NamespacedControllerRevisionList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/namespaces/{namespace}/controllerrevisions/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ControllerRevision\n      operationId: watchAppsV1beta1NamespacedControllerRevision\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ControllerRevision\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/namespaces/{namespace}/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Deployment\n      operationId: watchAppsV1beta1NamespacedDeploymentList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/namespaces/{namespace}/deployments/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Deployment\n      operationId: watchAppsV1beta1NamespacedDeployment\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/namespaces/{namespace}/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of StatefulSet\n      operationId: watchAppsV1beta1NamespacedStatefulSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/namespaces/{namespace}/statefulsets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind StatefulSet\n      operationId: watchAppsV1beta1NamespacedStatefulSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta1/watch/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of StatefulSet\n      operationId: watchAppsV1beta1StatefulSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAppsV1beta2APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n  /apis/apps/v1beta2/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ControllerRevision\n      operationId: listAppsV1beta2ControllerRevisionForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevisionList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind DaemonSet\n      operationId: listAppsV1beta2DaemonSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Deployment\n      operationId: listAppsV1beta2DeploymentForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DeploymentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ControllerRevision\n      operationId: deleteAppsV1beta2CollectionNamespacedControllerRevision\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ControllerRevision\n      operationId: listAppsV1beta2NamespacedControllerRevision\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevisionList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ControllerRevision\n      operationId: createAppsV1beta2NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/controllerrevisions/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ControllerRevision\n      operationId: deleteAppsV1beta2NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ControllerRevision\n      operationId: readAppsV1beta2NamespacedControllerRevision\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    parameters:\n    - description: name of the ControllerRevision\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ControllerRevision\n      operationId: patchAppsV1beta2NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ControllerRevision\n      operationId: replaceAppsV1beta2NamespacedControllerRevision\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/daemonsets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of DaemonSet\n      operationId: deleteAppsV1beta2CollectionNamespacedDaemonSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind DaemonSet\n      operationId: listAppsV1beta2NamespacedDaemonSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a DaemonSet\n      operationId: createAppsV1beta2NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a DaemonSet\n      operationId: deleteAppsV1beta2NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified DaemonSet\n      operationId: readAppsV1beta2NamespacedDaemonSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    parameters:\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified DaemonSet\n      operationId: patchAppsV1beta2NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified DaemonSet\n      operationId: replaceAppsV1beta2NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/daemonsets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified DaemonSet\n      operationId: readAppsV1beta2NamespacedDaemonSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    parameters:\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified DaemonSet\n      operationId: patchAppsV1beta2NamespacedDaemonSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified DaemonSet\n      operationId: replaceAppsV1beta2NamespacedDaemonSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/deployments:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Deployment\n      operationId: deleteAppsV1beta2CollectionNamespacedDeployment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Deployment\n      operationId: listAppsV1beta2NamespacedDeployment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.DeploymentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Deployment\n      operationId: createAppsV1beta2NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Deployment\n      operationId: deleteAppsV1beta2NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Deployment\n      operationId: readAppsV1beta2NamespacedDeployment\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    parameters:\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Deployment\n      operationId: patchAppsV1beta2NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Deployment\n      operationId: replaceAppsV1beta2NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified Deployment\n      operationId: readAppsV1beta2NamespacedDeploymentScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified Deployment\n      operationId: patchAppsV1beta2NamespacedDeploymentScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified Deployment\n      operationId: replaceAppsV1beta2NamespacedDeploymentScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/deployments/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Deployment\n      operationId: readAppsV1beta2NamespacedDeploymentStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    parameters:\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Deployment\n      operationId: patchAppsV1beta2NamespacedDeploymentStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Deployment\n      operationId: replaceAppsV1beta2NamespacedDeploymentStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/replicasets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ReplicaSet\n      operationId: deleteAppsV1beta2CollectionNamespacedReplicaSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ReplicaSet\n      operationId: listAppsV1beta2NamespacedReplicaSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ReplicaSet\n      operationId: createAppsV1beta2NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ReplicaSet\n      operationId: deleteAppsV1beta2NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ReplicaSet\n      operationId: readAppsV1beta2NamespacedReplicaSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    parameters:\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ReplicaSet\n      operationId: patchAppsV1beta2NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ReplicaSet\n      operationId: replaceAppsV1beta2NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified ReplicaSet\n      operationId: readAppsV1beta2NamespacedReplicaSetScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified ReplicaSet\n      operationId: patchAppsV1beta2NamespacedReplicaSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified ReplicaSet\n      operationId: replaceAppsV1beta2NamespacedReplicaSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/replicasets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified ReplicaSet\n      operationId: readAppsV1beta2NamespacedReplicaSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    parameters:\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified ReplicaSet\n      operationId: patchAppsV1beta2NamespacedReplicaSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified ReplicaSet\n      operationId: replaceAppsV1beta2NamespacedReplicaSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/statefulsets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of StatefulSet\n      operationId: deleteAppsV1beta2CollectionNamespacedStatefulSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind StatefulSet\n      operationId: listAppsV1beta2NamespacedStatefulSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a StatefulSet\n      operationId: createAppsV1beta2NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a StatefulSet\n      operationId: deleteAppsV1beta2NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified StatefulSet\n      operationId: readAppsV1beta2NamespacedStatefulSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    parameters:\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified StatefulSet\n      operationId: patchAppsV1beta2NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified StatefulSet\n      operationId: replaceAppsV1beta2NamespacedStatefulSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified StatefulSet\n      operationId: readAppsV1beta2NamespacedStatefulSetScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified StatefulSet\n      operationId: patchAppsV1beta2NamespacedStatefulSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified StatefulSet\n      operationId: replaceAppsV1beta2NamespacedStatefulSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Scale\n        version: v1beta2\n  /apis/apps/v1beta2/namespaces/{namespace}/statefulsets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified StatefulSet\n      operationId: readAppsV1beta2NamespacedStatefulSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    parameters:\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified StatefulSet\n      operationId: patchAppsV1beta2NamespacedStatefulSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified StatefulSet\n      operationId: replaceAppsV1beta2NamespacedStatefulSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n  /apis/apps/v1beta2/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ReplicaSet\n      operationId: listAppsV1beta2ReplicaSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind StatefulSet\n      operationId: listAppsV1beta2StatefulSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ControllerRevision\n      operationId: watchAppsV1beta2ControllerRevisionListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of DaemonSet\n      operationId: watchAppsV1beta2DaemonSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Deployment\n      operationId: watchAppsV1beta2DeploymentListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/controllerrevisions:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ControllerRevision\n      operationId: watchAppsV1beta2NamespacedControllerRevisionList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/controllerrevisions/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ControllerRevision\n      operationId: watchAppsV1beta2NamespacedControllerRevision\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ControllerRevision\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ControllerRevision\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of DaemonSet\n      operationId: watchAppsV1beta2NamespacedDaemonSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/daemonsets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind DaemonSet\n      operationId: watchAppsV1beta2NamespacedDaemonSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: DaemonSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Deployment\n      operationId: watchAppsV1beta2NamespacedDeploymentList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/deployments/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Deployment\n      operationId: watchAppsV1beta2NamespacedDeployment\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: Deployment\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ReplicaSet\n      operationId: watchAppsV1beta2NamespacedReplicaSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/replicasets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ReplicaSet\n      operationId: watchAppsV1beta2NamespacedReplicaSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of StatefulSet\n      operationId: watchAppsV1beta2NamespacedStatefulSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/namespaces/{namespace}/statefulsets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind StatefulSet\n      operationId: watchAppsV1beta2NamespacedStatefulSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the StatefulSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ReplicaSet\n      operationId: watchAppsV1beta2ReplicaSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: ReplicaSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/apps/v1beta2/watch/statefulsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of StatefulSet\n      operationId: watchAppsV1beta2StatefulSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - apps_v1beta2\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: apps\n        kind: StatefulSet\n        version: v1beta2\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/authentication.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getAuthenticationAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authentication\n  /apis/authentication.k8s.io/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAuthenticationV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authentication_v1\n  /apis/authentication.k8s.io/v1/tokenreviews:\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a TokenReview\n      operationId: createAuthenticationV1TokenReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authentication_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authentication.k8s.io\n        kind: TokenReview\n        version: v1\n  /apis/authentication.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAuthenticationV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authentication_v1beta1\n  /apis/authentication.k8s.io/v1beta1/tokenreviews:\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a TokenReview\n      operationId: createAuthenticationV1beta1TokenReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authentication_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authentication.k8s.io\n        kind: TokenReview\n        version: v1beta1\n  /apis/authorization.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getAuthorizationAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization\n  /apis/authorization.k8s.io/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAuthorizationV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1\n  /apis/authorization.k8s.io/v1/namespaces/{namespace}/localsubjectaccessreviews:\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a LocalSubjectAccessReview\n      operationId: createAuthorizationV1NamespacedLocalSubjectAccessReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authorization.k8s.io\n        kind: LocalSubjectAccessReview\n        version: v1\n  /apis/authorization.k8s.io/v1/selfsubjectaccessreviews:\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a SelfSubjectAccessReview\n      operationId: createAuthorizationV1SelfSubjectAccessReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authorization.k8s.io\n        kind: SelfSubjectAccessReview\n        version: v1\n  /apis/authorization.k8s.io/v1/selfsubjectrulesreviews:\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a SelfSubjectRulesReview\n      operationId: createAuthorizationV1SelfSubjectRulesReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authorization.k8s.io\n        kind: SelfSubjectRulesReview\n        version: v1\n  /apis/authorization.k8s.io/v1/subjectaccessreviews:\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a SubjectAccessReview\n      operationId: createAuthorizationV1SubjectAccessReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authorization.k8s.io\n        kind: SubjectAccessReview\n        version: v1\n  /apis/authorization.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAuthorizationV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1beta1\n  /apis/authorization.k8s.io/v1beta1/namespaces/{namespace}/localsubjectaccessreviews:\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a LocalSubjectAccessReview\n      operationId: createAuthorizationV1beta1NamespacedLocalSubjectAccessReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authorization.k8s.io\n        kind: LocalSubjectAccessReview\n        version: v1beta1\n  /apis/authorization.k8s.io/v1beta1/selfsubjectaccessreviews:\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a SelfSubjectAccessReview\n      operationId: createAuthorizationV1beta1SelfSubjectAccessReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authorization.k8s.io\n        kind: SelfSubjectAccessReview\n        version: v1beta1\n  /apis/authorization.k8s.io/v1beta1/selfsubjectrulesreviews:\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a SelfSubjectRulesReview\n      operationId: createAuthorizationV1beta1SelfSubjectRulesReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectRulesReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectRulesReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectRulesReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectRulesReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authorization.k8s.io\n        kind: SelfSubjectRulesReview\n        version: v1beta1\n  /apis/authorization.k8s.io/v1beta1/subjectaccessreviews:\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a SubjectAccessReview\n      operationId: createAuthorizationV1beta1SubjectAccessReview\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReview'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReview'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReview'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReview'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - authorization_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: authorization.k8s.io\n        kind: SubjectAccessReview\n        version: v1beta1\n  /apis/autoscaling/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getAutoscalingAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling\n  /apis/autoscaling/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAutoscalingV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n  /apis/autoscaling/v1/horizontalpodautoscalers:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind HorizontalPodAutoscaler\n      operationId: listAutoscalingV1HorizontalPodAutoscalerForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of HorizontalPodAutoscaler\n      operationId: deleteAutoscalingV1CollectionNamespacedHorizontalPodAutoscaler\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind HorizontalPodAutoscaler\n      operationId: listAutoscalingV1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a HorizontalPodAutoscaler\n      operationId: createAutoscalingV1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n  /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a HorizontalPodAutoscaler\n      operationId: deleteAutoscalingV1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified HorizontalPodAutoscaler\n      operationId: readAutoscalingV1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    parameters:\n    - description: name of the HorizontalPodAutoscaler\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified HorizontalPodAutoscaler\n      operationId: patchAutoscalingV1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified HorizontalPodAutoscaler\n      operationId: replaceAutoscalingV1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n  /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified HorizontalPodAutoscaler\n      operationId: readAutoscalingV1NamespacedHorizontalPodAutoscalerStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    parameters:\n    - description: name of the HorizontalPodAutoscaler\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified HorizontalPodAutoscaler\n      operationId: patchAutoscalingV1NamespacedHorizontalPodAutoscalerStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified HorizontalPodAutoscaler\n      operationId: replaceAutoscalingV1NamespacedHorizontalPodAutoscalerStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n  /apis/autoscaling/v1/watch/horizontalpodautoscalers:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of HorizontalPodAutoscaler\n      operationId: watchAutoscalingV1HorizontalPodAutoscalerListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of HorizontalPodAutoscaler\n      operationId: watchAutoscalingV1NamespacedHorizontalPodAutoscalerList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind HorizontalPodAutoscaler\n      operationId: watchAutoscalingV1NamespacedHorizontalPodAutoscaler\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the HorizontalPodAutoscaler\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/autoscaling/v2beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getAutoscalingV2beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n  /apis/autoscaling/v2beta1/horizontalpodautoscalers:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind HorizontalPodAutoscaler\n      operationId: listAutoscalingV2beta1HorizontalPodAutoscalerForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of HorizontalPodAutoscaler\n      operationId: deleteAutoscalingV2beta1CollectionNamespacedHorizontalPodAutoscaler\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind HorizontalPodAutoscaler\n      operationId: listAutoscalingV2beta1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a HorizontalPodAutoscaler\n      operationId: createAutoscalingV2beta1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n  /apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a HorizontalPodAutoscaler\n      operationId: deleteAutoscalingV2beta1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified HorizontalPodAutoscaler\n      operationId: readAutoscalingV2beta1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    parameters:\n    - description: name of the HorizontalPodAutoscaler\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified HorizontalPodAutoscaler\n      operationId: patchAutoscalingV2beta1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified HorizontalPodAutoscaler\n      operationId: replaceAutoscalingV2beta1NamespacedHorizontalPodAutoscaler\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n  /apis/autoscaling/v2beta1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified HorizontalPodAutoscaler\n      operationId: readAutoscalingV2beta1NamespacedHorizontalPodAutoscalerStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    parameters:\n    - description: name of the HorizontalPodAutoscaler\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified HorizontalPodAutoscaler\n      operationId: patchAutoscalingV2beta1NamespacedHorizontalPodAutoscalerStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified HorizontalPodAutoscaler\n      operationId: replaceAutoscalingV2beta1NamespacedHorizontalPodAutoscalerStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n  /apis/autoscaling/v2beta1/watch/horizontalpodautoscalers:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of HorizontalPodAutoscaler\n      operationId: watchAutoscalingV2beta1HorizontalPodAutoscalerListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/autoscaling/v2beta1/watch/namespaces/{namespace}/horizontalpodautoscalers:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of HorizontalPodAutoscaler\n      operationId: watchAutoscalingV2beta1NamespacedHorizontalPodAutoscalerList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/autoscaling/v2beta1/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind HorizontalPodAutoscaler\n      operationId: watchAutoscalingV2beta1NamespacedHorizontalPodAutoscaler\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - autoscaling_v2beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: autoscaling\n        kind: HorizontalPodAutoscaler\n        version: v2beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the HorizontalPodAutoscaler\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getBatchAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch\n  /apis/batch/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getBatchV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n  /apis/batch/v1/jobs:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Job\n      operationId: listBatchV1JobForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.JobList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v1/namespaces/{namespace}/jobs:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Job\n      operationId: deleteBatchV1CollectionNamespacedJob\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Job\n      operationId: listBatchV1NamespacedJob\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.JobList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Job\n      operationId: createBatchV1NamespacedJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n  /apis/batch/v1/namespaces/{namespace}/jobs/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Job\n      operationId: deleteBatchV1NamespacedJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Job\n      operationId: readBatchV1NamespacedJob\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    parameters:\n    - description: name of the Job\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Job\n      operationId: patchBatchV1NamespacedJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Job\n      operationId: replaceBatchV1NamespacedJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n  /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Job\n      operationId: readBatchV1NamespacedJobStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    parameters:\n    - description: name of the Job\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Job\n      operationId: patchBatchV1NamespacedJobStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Job\n      operationId: replaceBatchV1NamespacedJobStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n  /apis/batch/v1/watch/jobs:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Job\n      operationId: watchBatchV1JobListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v1/watch/namespaces/{namespace}/jobs:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Job\n      operationId: watchBatchV1NamespacedJobList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v1/watch/namespaces/{namespace}/jobs/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Job\n      operationId: watchBatchV1NamespacedJob\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: Job\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Job\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getBatchV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n  /apis/batch/v1beta1/cronjobs:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind CronJob\n      operationId: listBatchV1beta1CronJobForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJobList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v1beta1/namespaces/{namespace}/cronjobs:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of CronJob\n      operationId: deleteBatchV1beta1CollectionNamespacedCronJob\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind CronJob\n      operationId: listBatchV1beta1NamespacedCronJob\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJobList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a CronJob\n      operationId: createBatchV1beta1NamespacedCronJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n  /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a CronJob\n      operationId: deleteBatchV1beta1NamespacedCronJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified CronJob\n      operationId: readBatchV1beta1NamespacedCronJob\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    parameters:\n    - description: name of the CronJob\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified CronJob\n      operationId: patchBatchV1beta1NamespacedCronJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified CronJob\n      operationId: replaceBatchV1beta1NamespacedCronJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n  /apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified CronJob\n      operationId: readBatchV1beta1NamespacedCronJobStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    parameters:\n    - description: name of the CronJob\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified CronJob\n      operationId: patchBatchV1beta1NamespacedCronJobStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified CronJob\n      operationId: replaceBatchV1beta1NamespacedCronJobStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n  /apis/batch/v1beta1/watch/cronjobs:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of CronJob\n      operationId: watchBatchV1beta1CronJobListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v1beta1/watch/namespaces/{namespace}/cronjobs:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of CronJob\n      operationId: watchBatchV1beta1NamespacedCronJobList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v1beta1/watch/namespaces/{namespace}/cronjobs/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind CronJob\n      operationId: watchBatchV1beta1NamespacedCronJob\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the CronJob\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v2alpha1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getBatchV2alpha1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n  /apis/batch/v2alpha1/cronjobs:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind CronJob\n      operationId: listBatchV2alpha1CronJobForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJobList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of CronJob\n      operationId: deleteBatchV2alpha1CollectionNamespacedCronJob\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind CronJob\n      operationId: listBatchV2alpha1NamespacedCronJob\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJobList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a CronJob\n      operationId: createBatchV2alpha1NamespacedCronJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n  /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a CronJob\n      operationId: deleteBatchV2alpha1NamespacedCronJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified CronJob\n      operationId: readBatchV2alpha1NamespacedCronJob\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    parameters:\n    - description: name of the CronJob\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified CronJob\n      operationId: patchBatchV2alpha1NamespacedCronJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified CronJob\n      operationId: replaceBatchV2alpha1NamespacedCronJob\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n  /apis/batch/v2alpha1/namespaces/{namespace}/cronjobs/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified CronJob\n      operationId: readBatchV2alpha1NamespacedCronJobStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    parameters:\n    - description: name of the CronJob\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified CronJob\n      operationId: patchBatchV2alpha1NamespacedCronJobStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified CronJob\n      operationId: replaceBatchV2alpha1NamespacedCronJobStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n  /apis/batch/v2alpha1/watch/cronjobs:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of CronJob\n      operationId: watchBatchV2alpha1CronJobListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v2alpha1/watch/namespaces/{namespace}/cronjobs:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of CronJob\n      operationId: watchBatchV2alpha1NamespacedCronJobList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/batch/v2alpha1/watch/namespaces/{namespace}/cronjobs/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind CronJob\n      operationId: watchBatchV2alpha1NamespacedCronJob\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - batch_v2alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: batch\n        kind: CronJob\n        version: v2alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the CronJob\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/certificates.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getCertificatesAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates\n  /apis/certificates.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getCertificatesV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n  /apis/certificates.k8s.io/v1beta1/certificatesigningrequests:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of CertificateSigningRequest\n      operationId: deleteCertificatesV1beta1CollectionCertificateSigningRequest\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind CertificateSigningRequest\n      operationId: listCertificatesV1beta1CertificateSigningRequest\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a CertificateSigningRequest\n      operationId: createCertificatesV1beta1CertificateSigningRequest\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n  /apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a CertificateSigningRequest\n      operationId: deleteCertificatesV1beta1CertificateSigningRequest\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified CertificateSigningRequest\n      operationId: readCertificatesV1beta1CertificateSigningRequest\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    parameters:\n    - description: name of the CertificateSigningRequest\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified CertificateSigningRequest\n      operationId: patchCertificatesV1beta1CertificateSigningRequest\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified CertificateSigningRequest\n      operationId: replaceCertificatesV1beta1CertificateSigningRequest\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n  /apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}/approval:\n    parameters:\n    - description: name of the CertificateSigningRequest\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    put:\n      consumes:\n      - '*/*'\n      description: replace approval of the specified CertificateSigningRequest\n      operationId: replaceCertificatesV1beta1CertificateSigningRequestApproval\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n  /apis/certificates.k8s.io/v1beta1/certificatesigningrequests/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified CertificateSigningRequest\n      operationId: readCertificatesV1beta1CertificateSigningRequestStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    parameters:\n    - description: name of the CertificateSigningRequest\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified CertificateSigningRequest\n      operationId: patchCertificatesV1beta1CertificateSigningRequestStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified CertificateSigningRequest\n      operationId: replaceCertificatesV1beta1CertificateSigningRequestStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n  /apis/certificates.k8s.io/v1beta1/watch/certificatesigningrequests:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of CertificateSigningRequest\n      operationId: watchCertificatesV1beta1CertificateSigningRequestList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/certificates.k8s.io/v1beta1/watch/certificatesigningrequests/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind CertificateSigningRequest\n      operationId: watchCertificatesV1beta1CertificateSigningRequest\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - certificates_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: certificates.k8s.io\n        kind: CertificateSigningRequest\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the CertificateSigningRequest\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/events.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getEventsAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events\n  /apis/events.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getEventsV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n  /apis/events.k8s.io/v1beta1/events:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Event\n      operationId: listEventsV1beta1EventForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.EventList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/events.k8s.io/v1beta1/namespaces/{namespace}/events:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Event\n      operationId: deleteEventsV1beta1CollectionNamespacedEvent\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Event\n      operationId: listEventsV1beta1NamespacedEvent\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.EventList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create an Event\n      operationId: createEventsV1beta1NamespacedEvent\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n  /apis/events.k8s.io/v1beta1/namespaces/{namespace}/events/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete an Event\n      operationId: deleteEventsV1beta1NamespacedEvent\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Event\n      operationId: readEventsV1beta1NamespacedEvent\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    parameters:\n    - description: name of the Event\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Event\n      operationId: patchEventsV1beta1NamespacedEvent\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Event\n      operationId: replaceEventsV1beta1NamespacedEvent\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n  /apis/events.k8s.io/v1beta1/watch/events:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Event\n      operationId: watchEventsV1beta1EventListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/events.k8s.io/v1beta1/watch/namespaces/{namespace}/events:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Event\n      operationId: watchEventsV1beta1NamespacedEventList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/events.k8s.io/v1beta1/watch/namespaces/{namespace}/events/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Event\n      operationId: watchEventsV1beta1NamespacedEvent\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - events_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: events.k8s.io\n        kind: Event\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Event\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getExtensionsAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions\n  /apis/extensions/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getExtensionsV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n  /apis/extensions/v1beta1/thirdpartyresources:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ThirdPartyResource\n      operationId: deleteExtensionsV1beta1CollectionThirdPartyResource\n      parameters:\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ThirdPartyResource\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ThirdPartyResource\n      operationId: listExtensionsV1beta1ThirdPartyResource\n      parameters:\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ThirdPartyResource\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ThirdPartyResource\n      operationId: createExtensionsV1beta1ThirdPartyResource\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ThirdPartyResource\n        version: v1beta1\n  /apis/extensions/v1beta1/thirdpartyresources/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ThirdPartyResource\n      operationId: deleteExtensionsV1beta1ThirdPartyResource\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy.\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ThirdPartyResource\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ThirdPartyResource\n      operationId: readExtensionsV1beta1ThirdPartyResource\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ThirdPartyResource\n        version: v1beta1\n    parameters:\n    - description: name of the ThirdPartyResource\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ThirdPartyResource\n      operationId: patchExtensionsV1beta1ThirdPartyResource\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ThirdPartyResource\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ThirdPartyResource\n      operationId: replaceExtensionsV1beta1ThirdPartyResource\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ThirdPartyResource\n        version: v1beta1\n  /apis/extensions/v1beta1/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind DaemonSet\n      operationId: listExtensionsV1beta1DaemonSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Deployment\n      operationId: listExtensionsV1beta1DeploymentForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/ingresses:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Ingress\n      operationId: listExtensionsV1beta1IngressForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of DaemonSet\n      operationId: deleteExtensionsV1beta1CollectionNamespacedDaemonSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind DaemonSet\n      operationId: listExtensionsV1beta1NamespacedDaemonSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a DaemonSet\n      operationId: createExtensionsV1beta1NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a DaemonSet\n      operationId: deleteExtensionsV1beta1NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified DaemonSet\n      operationId: readExtensionsV1beta1NamespacedDaemonSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    parameters:\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified DaemonSet\n      operationId: patchExtensionsV1beta1NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified DaemonSet\n      operationId: replaceExtensionsV1beta1NamespacedDaemonSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/daemonsets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified DaemonSet\n      operationId: readExtensionsV1beta1NamespacedDaemonSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    parameters:\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified DaemonSet\n      operationId: patchExtensionsV1beta1NamespacedDaemonSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified DaemonSet\n      operationId: replaceExtensionsV1beta1NamespacedDaemonSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/deployments:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Deployment\n      operationId: deleteExtensionsV1beta1CollectionNamespacedDeployment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Deployment\n      operationId: listExtensionsV1beta1NamespacedDeployment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Deployment\n      operationId: createExtensionsV1beta1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Deployment\n      operationId: deleteExtensionsV1beta1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Deployment\n      operationId: readExtensionsV1beta1NamespacedDeployment\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Deployment\n      operationId: patchExtensionsV1beta1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Deployment\n      operationId: replaceExtensionsV1beta1NamespacedDeployment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/rollback:\n    parameters:\n    - description: name of the DeploymentRollback\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create rollback of a Deployment\n      operationId: createExtensionsV1beta1NamespacedDeploymentRollback\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentRollback'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentRollback'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentRollback'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentRollback'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DeploymentRollback\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified Deployment\n      operationId: readExtensionsV1beta1NamespacedDeploymentScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified Deployment\n      operationId: patchExtensionsV1beta1NamespacedDeploymentScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified Deployment\n      operationId: replaceExtensionsV1beta1NamespacedDeploymentScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Deployment\n      operationId: readExtensionsV1beta1NamespacedDeploymentStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Deployment\n      operationId: patchExtensionsV1beta1NamespacedDeploymentStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Deployment\n      operationId: replaceExtensionsV1beta1NamespacedDeploymentStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/ingresses:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Ingress\n      operationId: deleteExtensionsV1beta1CollectionNamespacedIngress\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Ingress\n      operationId: listExtensionsV1beta1NamespacedIngress\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create an Ingress\n      operationId: createExtensionsV1beta1NamespacedIngress\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete an Ingress\n      operationId: deleteExtensionsV1beta1NamespacedIngress\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Ingress\n      operationId: readExtensionsV1beta1NamespacedIngress\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    parameters:\n    - description: name of the Ingress\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Ingress\n      operationId: patchExtensionsV1beta1NamespacedIngress\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Ingress\n      operationId: replaceExtensionsV1beta1NamespacedIngress\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/ingresses/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified Ingress\n      operationId: readExtensionsV1beta1NamespacedIngressStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    parameters:\n    - description: name of the Ingress\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified Ingress\n      operationId: patchExtensionsV1beta1NamespacedIngressStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified Ingress\n      operationId: replaceExtensionsV1beta1NamespacedIngressStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of NetworkPolicy\n      operationId: deleteExtensionsV1beta1CollectionNamespacedNetworkPolicy\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind NetworkPolicy\n      operationId: listExtensionsV1beta1NamespacedNetworkPolicy\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a NetworkPolicy\n      operationId: createExtensionsV1beta1NamespacedNetworkPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/networkpolicies/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a NetworkPolicy\n      operationId: deleteExtensionsV1beta1NamespacedNetworkPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified NetworkPolicy\n      operationId: readExtensionsV1beta1NamespacedNetworkPolicy\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    parameters:\n    - description: name of the NetworkPolicy\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified NetworkPolicy\n      operationId: patchExtensionsV1beta1NamespacedNetworkPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified NetworkPolicy\n      operationId: replaceExtensionsV1beta1NamespacedNetworkPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/replicasets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ReplicaSet\n      operationId: deleteExtensionsV1beta1CollectionNamespacedReplicaSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ReplicaSet\n      operationId: listExtensionsV1beta1NamespacedReplicaSet\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ReplicaSet\n      operationId: createExtensionsV1beta1NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ReplicaSet\n      operationId: deleteExtensionsV1beta1NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ReplicaSet\n      operationId: readExtensionsV1beta1NamespacedReplicaSet\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    parameters:\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ReplicaSet\n      operationId: patchExtensionsV1beta1NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ReplicaSet\n      operationId: replaceExtensionsV1beta1NamespacedReplicaSet\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified ReplicaSet\n      operationId: readExtensionsV1beta1NamespacedReplicaSetScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified ReplicaSet\n      operationId: patchExtensionsV1beta1NamespacedReplicaSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified ReplicaSet\n      operationId: replaceExtensionsV1beta1NamespacedReplicaSetScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/replicasets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified ReplicaSet\n      operationId: readExtensionsV1beta1NamespacedReplicaSetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    parameters:\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified ReplicaSet\n      operationId: patchExtensionsV1beta1NamespacedReplicaSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified ReplicaSet\n      operationId: replaceExtensionsV1beta1NamespacedReplicaSetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n  /apis/extensions/v1beta1/namespaces/{namespace}/replicationcontrollers/{name}/scale:\n    get:\n      consumes:\n      - '*/*'\n      description: read scale of the specified ReplicationControllerDummy\n      operationId: readExtensionsV1beta1NamespacedReplicationControllerDummyScale\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n    parameters:\n    - description: name of the Scale\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update scale of the specified ReplicationControllerDummy\n      operationId: patchExtensionsV1beta1NamespacedReplicationControllerDummyScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace scale of the specified ReplicationControllerDummy\n      operationId: replaceExtensionsV1beta1NamespacedReplicationControllerDummyScale\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Scale\n        version: v1beta1\n  /apis/extensions/v1beta1/networkpolicies:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind NetworkPolicy\n      operationId: listExtensionsV1beta1NetworkPolicyForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/podsecuritypolicies:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PodSecurityPolicy\n      operationId: deleteExtensionsV1beta1CollectionPodSecurityPolicy\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PodSecurityPolicy\n      operationId: listExtensionsV1beta1PodSecurityPolicy\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicyList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PodSecurityPolicy\n      operationId: createExtensionsV1beta1PodSecurityPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n  /apis/extensions/v1beta1/podsecuritypolicies/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PodSecurityPolicy\n      operationId: deleteExtensionsV1beta1PodSecurityPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PodSecurityPolicy\n      operationId: readExtensionsV1beta1PodSecurityPolicy\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n    parameters:\n    - description: name of the PodSecurityPolicy\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PodSecurityPolicy\n      operationId: patchExtensionsV1beta1PodSecurityPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PodSecurityPolicy\n      operationId: replaceExtensionsV1beta1PodSecurityPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n  /apis/extensions/v1beta1/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ReplicaSet\n      operationId: listExtensionsV1beta1ReplicaSetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of DaemonSet\n      operationId: watchExtensionsV1beta1DaemonSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Deployment\n      operationId: watchExtensionsV1beta1DeploymentListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/ingresses:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Ingress\n      operationId: watchExtensionsV1beta1IngressListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of DaemonSet\n      operationId: watchExtensionsV1beta1NamespacedDaemonSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/daemonsets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind DaemonSet\n      operationId: watchExtensionsV1beta1NamespacedDaemonSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: DaemonSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the DaemonSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/deployments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Deployment\n      operationId: watchExtensionsV1beta1NamespacedDeploymentList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/deployments/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Deployment\n      operationId: watchExtensionsV1beta1NamespacedDeployment\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Deployment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Deployment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Ingress\n      operationId: watchExtensionsV1beta1NamespacedIngressList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/ingresses/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Ingress\n      operationId: watchExtensionsV1beta1NamespacedIngress\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: Ingress\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Ingress\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/networkpolicies:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of NetworkPolicy\n      operationId: watchExtensionsV1beta1NamespacedNetworkPolicyList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/networkpolicies/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind NetworkPolicy\n      operationId: watchExtensionsV1beta1NamespacedNetworkPolicy\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the NetworkPolicy\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ReplicaSet\n      operationId: watchExtensionsV1beta1NamespacedReplicaSetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/namespaces/{namespace}/replicasets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ReplicaSet\n      operationId: watchExtensionsV1beta1NamespacedReplicaSet\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ReplicaSet\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/networkpolicies:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of NetworkPolicy\n      operationId: watchExtensionsV1beta1NetworkPolicyListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: NetworkPolicy\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/podsecuritypolicies:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PodSecurityPolicy\n      operationId: watchExtensionsV1beta1PodSecurityPolicyList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/podsecuritypolicies/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PodSecurityPolicy\n      operationId: watchExtensionsV1beta1PodSecurityPolicy\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: PodSecurityPolicy\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PodSecurityPolicy\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/extensions/v1beta1/watch/replicasets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ReplicaSet\n      operationId: watchExtensionsV1beta1ReplicaSetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - extensions_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: extensions\n        kind: ReplicaSet\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/networking.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getNetworkingAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking\n  /apis/networking.k8s.io/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getNetworkingV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n  /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of NetworkPolicy\n      operationId: deleteNetworkingV1CollectionNamespacedNetworkPolicy\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind NetworkPolicy\n      operationId: listNetworkingV1NamespacedNetworkPolicy\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a NetworkPolicy\n      operationId: createNetworkingV1NamespacedNetworkPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n  /apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a NetworkPolicy\n      operationId: deleteNetworkingV1NamespacedNetworkPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified NetworkPolicy\n      operationId: readNetworkingV1NamespacedNetworkPolicy\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    parameters:\n    - description: name of the NetworkPolicy\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified NetworkPolicy\n      operationId: patchNetworkingV1NamespacedNetworkPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified NetworkPolicy\n      operationId: replaceNetworkingV1NamespacedNetworkPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n  /apis/networking.k8s.io/v1/networkpolicies:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind NetworkPolicy\n      operationId: listNetworkingV1NetworkPolicyForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/networking.k8s.io/v1/watch/namespaces/{namespace}/networkpolicies:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of NetworkPolicy\n      operationId: watchNetworkingV1NamespacedNetworkPolicyList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/networking.k8s.io/v1/watch/namespaces/{namespace}/networkpolicies/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind NetworkPolicy\n      operationId: watchNetworkingV1NamespacedNetworkPolicy\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the NetworkPolicy\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/networking.k8s.io/v1/watch/networkpolicies:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of NetworkPolicy\n      operationId: watchNetworkingV1NetworkPolicyListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - networking_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: networking.k8s.io\n        kind: NetworkPolicy\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/policy/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getPolicyAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy\n  /apis/policy/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getPolicyV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n  /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PodDisruptionBudget\n      operationId: deletePolicyV1beta1CollectionNamespacedPodDisruptionBudget\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PodDisruptionBudget\n      operationId: listPolicyV1beta1NamespacedPodDisruptionBudget\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PodDisruptionBudget\n      operationId: createPolicyV1beta1NamespacedPodDisruptionBudget\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n  /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PodDisruptionBudget\n      operationId: deletePolicyV1beta1NamespacedPodDisruptionBudget\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PodDisruptionBudget\n      operationId: readPolicyV1beta1NamespacedPodDisruptionBudget\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    parameters:\n    - description: name of the PodDisruptionBudget\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PodDisruptionBudget\n      operationId: patchPolicyV1beta1NamespacedPodDisruptionBudget\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PodDisruptionBudget\n      operationId: replacePolicyV1beta1NamespacedPodDisruptionBudget\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n  /apis/policy/v1beta1/namespaces/{namespace}/poddisruptionbudgets/{name}/status:\n    get:\n      consumes:\n      - '*/*'\n      description: read status of the specified PodDisruptionBudget\n      operationId: readPolicyV1beta1NamespacedPodDisruptionBudgetStatus\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    parameters:\n    - description: name of the PodDisruptionBudget\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update status of the specified PodDisruptionBudget\n      operationId: patchPolicyV1beta1NamespacedPodDisruptionBudgetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace status of the specified PodDisruptionBudget\n      operationId: replacePolicyV1beta1NamespacedPodDisruptionBudgetStatus\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n  /apis/policy/v1beta1/poddisruptionbudgets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PodDisruptionBudget\n      operationId: listPolicyV1beta1PodDisruptionBudgetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/policy/v1beta1/podsecuritypolicies:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PodSecurityPolicy\n      operationId: deletePolicyV1beta1CollectionPodSecurityPolicy\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PodSecurityPolicy\n      operationId: listPolicyV1beta1PodSecurityPolicy\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicyList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PodSecurityPolicy\n      operationId: createPolicyV1beta1PodSecurityPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n  /apis/policy/v1beta1/podsecuritypolicies/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PodSecurityPolicy\n      operationId: deletePolicyV1beta1PodSecurityPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PodSecurityPolicy\n      operationId: readPolicyV1beta1PodSecurityPolicy\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n    parameters:\n    - description: name of the PodSecurityPolicy\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PodSecurityPolicy\n      operationId: patchPolicyV1beta1PodSecurityPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PodSecurityPolicy\n      operationId: replacePolicyV1beta1PodSecurityPolicy\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n  /apis/policy/v1beta1/watch/namespaces/{namespace}/poddisruptionbudgets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PodDisruptionBudget\n      operationId: watchPolicyV1beta1NamespacedPodDisruptionBudgetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/policy/v1beta1/watch/namespaces/{namespace}/poddisruptionbudgets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PodDisruptionBudget\n      operationId: watchPolicyV1beta1NamespacedPodDisruptionBudget\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PodDisruptionBudget\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/policy/v1beta1/watch/poddisruptionbudgets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PodDisruptionBudget\n      operationId: watchPolicyV1beta1PodDisruptionBudgetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodDisruptionBudget\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/policy/v1beta1/watch/podsecuritypolicies:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PodSecurityPolicy\n      operationId: watchPolicyV1beta1PodSecurityPolicyList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/policy/v1beta1/watch/podsecuritypolicies/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PodSecurityPolicy\n      operationId: watchPolicyV1beta1PodSecurityPolicy\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - policy_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: policy\n        kind: PodSecurityPolicy\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PodSecurityPolicy\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getRbacAuthorizationAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization\n  /apis/rbac.authorization.k8s.io/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getRbacAuthorizationV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n  /apis/rbac.authorization.k8s.io/v1/clusterrolebindings:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ClusterRoleBinding\n      operationId: deleteRbacAuthorizationV1CollectionClusterRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ClusterRoleBinding\n      operationId: listRbacAuthorizationV1ClusterRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ClusterRoleBinding\n      operationId: createRbacAuthorizationV1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n  /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ClusterRoleBinding\n      operationId: deleteRbacAuthorizationV1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ClusterRoleBinding\n      operationId: readRbacAuthorizationV1ClusterRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n    parameters:\n    - description: name of the ClusterRoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ClusterRoleBinding\n      operationId: patchRbacAuthorizationV1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ClusterRoleBinding\n      operationId: replaceRbacAuthorizationV1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n  /apis/rbac.authorization.k8s.io/v1/clusterroles:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ClusterRole\n      operationId: deleteRbacAuthorizationV1CollectionClusterRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ClusterRole\n      operationId: listRbacAuthorizationV1ClusterRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ClusterRole\n      operationId: createRbacAuthorizationV1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n  /apis/rbac.authorization.k8s.io/v1/clusterroles/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ClusterRole\n      operationId: deleteRbacAuthorizationV1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ClusterRole\n      operationId: readRbacAuthorizationV1ClusterRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n    parameters:\n    - description: name of the ClusterRole\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ClusterRole\n      operationId: patchRbacAuthorizationV1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ClusterRole\n      operationId: replaceRbacAuthorizationV1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n  /apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of RoleBinding\n      operationId: deleteRbacAuthorizationV1CollectionNamespacedRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind RoleBinding\n      operationId: listRbacAuthorizationV1NamespacedRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a RoleBinding\n      operationId: createRbacAuthorizationV1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n  /apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a RoleBinding\n      operationId: deleteRbacAuthorizationV1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified RoleBinding\n      operationId: readRbacAuthorizationV1NamespacedRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    parameters:\n    - description: name of the RoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified RoleBinding\n      operationId: patchRbacAuthorizationV1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified RoleBinding\n      operationId: replaceRbacAuthorizationV1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n  /apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Role\n      operationId: deleteRbacAuthorizationV1CollectionNamespacedRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Role\n      operationId: listRbacAuthorizationV1NamespacedRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Role\n      operationId: createRbacAuthorizationV1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n  /apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Role\n      operationId: deleteRbacAuthorizationV1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Role\n      operationId: readRbacAuthorizationV1NamespacedRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    parameters:\n    - description: name of the Role\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Role\n      operationId: patchRbacAuthorizationV1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Role\n      operationId: replaceRbacAuthorizationV1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n  /apis/rbac.authorization.k8s.io/v1/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind RoleBinding\n      operationId: listRbacAuthorizationV1RoleBindingForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Role\n      operationId: listRbacAuthorizationV1RoleForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1.RoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/clusterrolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ClusterRoleBinding\n      operationId: watchRbacAuthorizationV1ClusterRoleBindingList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/clusterrolebindings/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ClusterRoleBinding\n      operationId: watchRbacAuthorizationV1ClusterRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ClusterRoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/clusterroles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ClusterRole\n      operationId: watchRbacAuthorizationV1ClusterRoleList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/clusterroles/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ClusterRole\n      operationId: watchRbacAuthorizationV1ClusterRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ClusterRole\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of RoleBinding\n      operationId: watchRbacAuthorizationV1NamespacedRoleBindingList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/rolebindings/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind RoleBinding\n      operationId: watchRbacAuthorizationV1NamespacedRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the RoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Role\n      operationId: watchRbacAuthorizationV1NamespacedRoleList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/roles/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Role\n      operationId: watchRbacAuthorizationV1NamespacedRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Role\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of RoleBinding\n      operationId: watchRbacAuthorizationV1RoleBindingListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1/watch/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Role\n      operationId: watchRbacAuthorizationV1RoleListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getRbacAuthorizationV1alpha1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ClusterRoleBinding\n      operationId: deleteRbacAuthorizationV1alpha1CollectionClusterRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ClusterRoleBinding\n      operationId: listRbacAuthorizationV1alpha1ClusterRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ClusterRoleBinding\n      operationId: createRbacAuthorizationV1alpha1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/clusterrolebindings/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ClusterRoleBinding\n      operationId: deleteRbacAuthorizationV1alpha1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ClusterRoleBinding\n      operationId: readRbacAuthorizationV1alpha1ClusterRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n    parameters:\n    - description: name of the ClusterRoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ClusterRoleBinding\n      operationId: patchRbacAuthorizationV1alpha1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ClusterRoleBinding\n      operationId: replaceRbacAuthorizationV1alpha1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ClusterRole\n      operationId: deleteRbacAuthorizationV1alpha1CollectionClusterRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ClusterRole\n      operationId: listRbacAuthorizationV1alpha1ClusterRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ClusterRole\n      operationId: createRbacAuthorizationV1alpha1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/clusterroles/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ClusterRole\n      operationId: deleteRbacAuthorizationV1alpha1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ClusterRole\n      operationId: readRbacAuthorizationV1alpha1ClusterRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n    parameters:\n    - description: name of the ClusterRole\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ClusterRole\n      operationId: patchRbacAuthorizationV1alpha1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ClusterRole\n      operationId: replaceRbacAuthorizationV1alpha1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of RoleBinding\n      operationId: deleteRbacAuthorizationV1alpha1CollectionNamespacedRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind RoleBinding\n      operationId: listRbacAuthorizationV1alpha1NamespacedRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a RoleBinding\n      operationId: createRbacAuthorizationV1alpha1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/rolebindings/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a RoleBinding\n      operationId: deleteRbacAuthorizationV1alpha1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified RoleBinding\n      operationId: readRbacAuthorizationV1alpha1NamespacedRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    parameters:\n    - description: name of the RoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified RoleBinding\n      operationId: patchRbacAuthorizationV1alpha1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified RoleBinding\n      operationId: replaceRbacAuthorizationV1alpha1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Role\n      operationId: deleteRbacAuthorizationV1alpha1CollectionNamespacedRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Role\n      operationId: listRbacAuthorizationV1alpha1NamespacedRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Role\n      operationId: createRbacAuthorizationV1alpha1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/namespaces/{namespace}/roles/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Role\n      operationId: deleteRbacAuthorizationV1alpha1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Role\n      operationId: readRbacAuthorizationV1alpha1NamespacedRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    parameters:\n    - description: name of the Role\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Role\n      operationId: patchRbacAuthorizationV1alpha1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Role\n      operationId: replaceRbacAuthorizationV1alpha1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n  /apis/rbac.authorization.k8s.io/v1alpha1/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind RoleBinding\n      operationId: listRbacAuthorizationV1alpha1RoleBindingForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Role\n      operationId: listRbacAuthorizationV1alpha1RoleForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterrolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ClusterRoleBinding\n      operationId: watchRbacAuthorizationV1alpha1ClusterRoleBindingList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterrolebindings/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ClusterRoleBinding\n      operationId: watchRbacAuthorizationV1alpha1ClusterRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ClusterRoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterroles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ClusterRole\n      operationId: watchRbacAuthorizationV1alpha1ClusterRoleList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/clusterroles/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ClusterRole\n      operationId: watchRbacAuthorizationV1alpha1ClusterRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ClusterRole\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of RoleBinding\n      operationId: watchRbacAuthorizationV1alpha1NamespacedRoleBindingList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/rolebindings/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind RoleBinding\n      operationId: watchRbacAuthorizationV1alpha1NamespacedRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the RoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Role\n      operationId: watchRbacAuthorizationV1alpha1NamespacedRoleList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/namespaces/{namespace}/roles/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Role\n      operationId: watchRbacAuthorizationV1alpha1NamespacedRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Role\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of RoleBinding\n      operationId: watchRbacAuthorizationV1alpha1RoleBindingListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1alpha1/watch/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Role\n      operationId: watchRbacAuthorizationV1alpha1RoleListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getRbacAuthorizationV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ClusterRoleBinding\n      operationId: deleteRbacAuthorizationV1beta1CollectionClusterRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ClusterRoleBinding\n      operationId: listRbacAuthorizationV1beta1ClusterRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ClusterRoleBinding\n      operationId: createRbacAuthorizationV1beta1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ClusterRoleBinding\n      operationId: deleteRbacAuthorizationV1beta1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ClusterRoleBinding\n      operationId: readRbacAuthorizationV1beta1ClusterRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n    parameters:\n    - description: name of the ClusterRoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ClusterRoleBinding\n      operationId: patchRbacAuthorizationV1beta1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ClusterRoleBinding\n      operationId: replaceRbacAuthorizationV1beta1ClusterRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/clusterroles:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of ClusterRole\n      operationId: deleteRbacAuthorizationV1beta1CollectionClusterRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind ClusterRole\n      operationId: listRbacAuthorizationV1beta1ClusterRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a ClusterRole\n      operationId: createRbacAuthorizationV1beta1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/clusterroles/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a ClusterRole\n      operationId: deleteRbacAuthorizationV1beta1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified ClusterRole\n      operationId: readRbacAuthorizationV1beta1ClusterRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n    parameters:\n    - description: name of the ClusterRole\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified ClusterRole\n      operationId: patchRbacAuthorizationV1beta1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified ClusterRole\n      operationId: replaceRbacAuthorizationV1beta1ClusterRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of RoleBinding\n      operationId: deleteRbacAuthorizationV1beta1CollectionNamespacedRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind RoleBinding\n      operationId: listRbacAuthorizationV1beta1NamespacedRoleBinding\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a RoleBinding\n      operationId: createRbacAuthorizationV1beta1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/rolebindings/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a RoleBinding\n      operationId: deleteRbacAuthorizationV1beta1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified RoleBinding\n      operationId: readRbacAuthorizationV1beta1NamespacedRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    parameters:\n    - description: name of the RoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified RoleBinding\n      operationId: patchRbacAuthorizationV1beta1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified RoleBinding\n      operationId: replaceRbacAuthorizationV1beta1NamespacedRoleBinding\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of Role\n      operationId: deleteRbacAuthorizationV1beta1CollectionNamespacedRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Role\n      operationId: listRbacAuthorizationV1beta1NamespacedRole\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a Role\n      operationId: createRbacAuthorizationV1beta1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/namespaces/{namespace}/roles/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a Role\n      operationId: deleteRbacAuthorizationV1beta1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified Role\n      operationId: readRbacAuthorizationV1beta1NamespacedRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    parameters:\n    - description: name of the Role\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified Role\n      operationId: patchRbacAuthorizationV1beta1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified Role\n      operationId: replaceRbacAuthorizationV1beta1NamespacedRole\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n  /apis/rbac.authorization.k8s.io/v1beta1/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind RoleBinding\n      operationId: listRbacAuthorizationV1beta1RoleBindingForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBindingList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind Role\n      operationId: listRbacAuthorizationV1beta1RoleForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/clusterrolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ClusterRoleBinding\n      operationId: watchRbacAuthorizationV1beta1ClusterRoleBindingList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/clusterrolebindings/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ClusterRoleBinding\n      operationId: watchRbacAuthorizationV1beta1ClusterRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRoleBinding\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ClusterRoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/clusterroles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of ClusterRole\n      operationId: watchRbacAuthorizationV1beta1ClusterRoleList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/clusterroles/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind ClusterRole\n      operationId: watchRbacAuthorizationV1beta1ClusterRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: ClusterRole\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the ClusterRole\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/namespaces/{namespace}/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of RoleBinding\n      operationId: watchRbacAuthorizationV1beta1NamespacedRoleBindingList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/namespaces/{namespace}/rolebindings/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind RoleBinding\n      operationId: watchRbacAuthorizationV1beta1NamespacedRoleBinding\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the RoleBinding\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/namespaces/{namespace}/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Role\n      operationId: watchRbacAuthorizationV1beta1NamespacedRoleList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/namespaces/{namespace}/roles/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind Role\n      operationId: watchRbacAuthorizationV1beta1NamespacedRole\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the Role\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/rolebindings:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of RoleBinding\n      operationId: watchRbacAuthorizationV1beta1RoleBindingListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: RoleBinding\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/rbac.authorization.k8s.io/v1beta1/watch/roles:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of Role\n      operationId: watchRbacAuthorizationV1beta1RoleListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - rbacAuthorization_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: rbac.authorization.k8s.io\n        kind: Role\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/scheduling.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getSchedulingAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling\n  /apis/scheduling.k8s.io/v1alpha1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getSchedulingV1alpha1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n  /apis/scheduling.k8s.io/v1alpha1/priorityclasses:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PriorityClass\n      operationId: deleteSchedulingV1alpha1CollectionPriorityClass\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PriorityClass\n      operationId: listSchedulingV1alpha1PriorityClass\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClassList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PriorityClass\n      operationId: createSchedulingV1alpha1PriorityClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n  /apis/scheduling.k8s.io/v1alpha1/priorityclasses/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PriorityClass\n      operationId: deleteSchedulingV1alpha1PriorityClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PriorityClass\n      operationId: readSchedulingV1alpha1PriorityClass\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n    parameters:\n    - description: name of the PriorityClass\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PriorityClass\n      operationId: patchSchedulingV1alpha1PriorityClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PriorityClass\n      operationId: replaceSchedulingV1alpha1PriorityClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n  /apis/scheduling.k8s.io/v1alpha1/watch/priorityclasses:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PriorityClass\n      operationId: watchSchedulingV1alpha1PriorityClassList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/scheduling.k8s.io/v1alpha1/watch/priorityclasses/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PriorityClass\n      operationId: watchSchedulingV1alpha1PriorityClass\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PriorityClass\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/scheduling.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getSchedulingV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n  /apis/scheduling.k8s.io/v1beta1/priorityclasses:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PriorityClass\n      operationId: deleteSchedulingV1beta1CollectionPriorityClass\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PriorityClass\n      operationId: listSchedulingV1beta1PriorityClass\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClassList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PriorityClass\n      operationId: createSchedulingV1beta1PriorityClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n  /apis/scheduling.k8s.io/v1beta1/priorityclasses/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PriorityClass\n      operationId: deleteSchedulingV1beta1PriorityClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PriorityClass\n      operationId: readSchedulingV1beta1PriorityClass\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n    parameters:\n    - description: name of the PriorityClass\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PriorityClass\n      operationId: patchSchedulingV1beta1PriorityClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PriorityClass\n      operationId: replaceSchedulingV1beta1PriorityClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n  /apis/scheduling.k8s.io/v1beta1/watch/priorityclasses:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PriorityClass\n      operationId: watchSchedulingV1beta1PriorityClassList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/scheduling.k8s.io/v1beta1/watch/priorityclasses/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PriorityClass\n      operationId: watchSchedulingV1beta1PriorityClass\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - scheduling_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: scheduling.k8s.io\n        kind: PriorityClass\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PriorityClass\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/settings.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getSettingsAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings\n  /apis/settings.k8s.io/v1alpha1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getSettingsV1alpha1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n  /apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of PodPreset\n      operationId: deleteSettingsV1alpha1CollectionNamespacedPodPreset\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PodPreset\n      operationId: listSettingsV1alpha1NamespacedPodPreset\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPresetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    parameters:\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a PodPreset\n      operationId: createSettingsV1alpha1NamespacedPodPreset\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n  /apis/settings.k8s.io/v1alpha1/namespaces/{namespace}/podpresets/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a PodPreset\n      operationId: deleteSettingsV1alpha1NamespacedPodPreset\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified PodPreset\n      operationId: readSettingsV1alpha1NamespacedPodPreset\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    parameters:\n    - description: name of the PodPreset\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified PodPreset\n      operationId: patchSettingsV1alpha1NamespacedPodPreset\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified PodPreset\n      operationId: replaceSettingsV1alpha1NamespacedPodPreset\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n  /apis/settings.k8s.io/v1alpha1/podpresets:\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind PodPreset\n      operationId: listSettingsV1alpha1PodPresetForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPresetList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/settings.k8s.io/v1alpha1/watch/namespaces/{namespace}/podpresets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PodPreset\n      operationId: watchSettingsV1alpha1NamespacedPodPresetList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/settings.k8s.io/v1alpha1/watch/namespaces/{namespace}/podpresets/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind PodPreset\n      operationId: watchSettingsV1alpha1NamespacedPodPreset\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the PodPreset\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: object name and auth scope, such as for teams and projects\n      in: path\n      name: namespace\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/settings.k8s.io/v1alpha1/watch/podpresets:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of PodPreset\n      operationId: watchSettingsV1alpha1PodPresetListForAllNamespaces\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - settings_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: settings.k8s.io\n        kind: PodPreset\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/storage.k8s.io/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get information of a group\n      operationId: getStorageAPIGroup\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage\n  /apis/storage.k8s.io/v1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getStorageV1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n  /apis/storage.k8s.io/v1/storageclasses:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of StorageClass\n      operationId: deleteStorageV1CollectionStorageClass\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind StorageClass\n      operationId: listStorageV1StorageClass\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1.StorageClassList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a StorageClass\n      operationId: createStorageV1StorageClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n  /apis/storage.k8s.io/v1/storageclasses/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a StorageClass\n      operationId: deleteStorageV1StorageClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified StorageClass\n      operationId: readStorageV1StorageClass\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n    parameters:\n    - description: name of the StorageClass\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified StorageClass\n      operationId: patchStorageV1StorageClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified StorageClass\n      operationId: replaceStorageV1StorageClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n  /apis/storage.k8s.io/v1/watch/storageclasses:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of StorageClass\n      operationId: watchStorageV1StorageClassList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/storage.k8s.io/v1/watch/storageclasses/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind StorageClass\n      operationId: watchStorageV1StorageClass\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the StorageClass\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/storage.k8s.io/v1alpha1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getStorageV1alpha1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n  /apis/storage.k8s.io/v1alpha1/volumeattachments:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of VolumeAttachment\n      operationId: deleteStorageV1alpha1CollectionVolumeAttachment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind VolumeAttachment\n      operationId: listStorageV1alpha1VolumeAttachment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachmentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a VolumeAttachment\n      operationId: createStorageV1alpha1VolumeAttachment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n  /apis/storage.k8s.io/v1alpha1/volumeattachments/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a VolumeAttachment\n      operationId: deleteStorageV1alpha1VolumeAttachment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified VolumeAttachment\n      operationId: readStorageV1alpha1VolumeAttachment\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n    parameters:\n    - description: name of the VolumeAttachment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified VolumeAttachment\n      operationId: patchStorageV1alpha1VolumeAttachment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified VolumeAttachment\n      operationId: replaceStorageV1alpha1VolumeAttachment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n  /apis/storage.k8s.io/v1alpha1/watch/volumeattachments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of VolumeAttachment\n      operationId: watchStorageV1alpha1VolumeAttachmentList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/storage.k8s.io/v1alpha1/watch/volumeattachments/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind VolumeAttachment\n      operationId: watchStorageV1alpha1VolumeAttachment\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1alpha1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1alpha1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the VolumeAttachment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/storage.k8s.io/v1beta1/:\n    get:\n      consumes:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      description: get available resources\n      operationId: getStorageV1beta1APIResources\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n  /apis/storage.k8s.io/v1beta1/storageclasses:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of StorageClass\n      operationId: deleteStorageV1beta1CollectionStorageClass\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind StorageClass\n      operationId: listStorageV1beta1StorageClass\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClassList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a StorageClass\n      operationId: createStorageV1beta1StorageClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n  /apis/storage.k8s.io/v1beta1/storageclasses/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a StorageClass\n      operationId: deleteStorageV1beta1StorageClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified StorageClass\n      operationId: readStorageV1beta1StorageClass\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n    parameters:\n    - description: name of the StorageClass\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified StorageClass\n      operationId: patchStorageV1beta1StorageClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified StorageClass\n      operationId: replaceStorageV1beta1StorageClass\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n  /apis/storage.k8s.io/v1beta1/volumeattachments:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete collection of VolumeAttachment\n      operationId: deleteStorageV1beta1CollectionVolumeAttachment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: deletecollection\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: list or watch objects of kind VolumeAttachment\n      operationId: listStorageV1beta1VolumeAttachment\n      parameters:\n      - description: The continue option should be set when retrieving more results\n          from the server. Since this value is server defined, clients may only use\n          the continue value from a previous query result with identical query parameters\n          (except for the value of continue) and the server may reject a continue\n          value it does not recognize. If the specified continue value is no longer\n          valid whether due to expiration (generally five to fifteen minutes) or a\n          configuration change on the server the server will respond with a 410 ResourceExpired\n          error indicating the client must restart their list without the continue\n          field. This field is not supported when watch is true. Clients may start\n          a watch from the last resourceVersion value returned by the server and not\n          miss any modifications.\n        in: query\n        name: continue\n        type: string\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          fields. Defaults to everything.\n        in: query\n        name: fieldSelector\n        type: string\n        uniqueItems: true\n      - description: If true, partially initialized resources are included in the\n          response.\n        in: query\n        name: includeUninitialized\n        type: boolean\n        uniqueItems: true\n      - description: A selector to restrict the list of returned objects by their\n          labels. Defaults to everything.\n        in: query\n        name: labelSelector\n        type: string\n        uniqueItems: true\n      - description: 'limit is a maximum number of responses to return for a list\n          call. If more items exist, the server will set the `continue` field on the\n          list metadata to a value that can be used with the same initial query to\n          retrieve the next set of results. Setting a limit may return fewer than\n          the requested amount of items (up to zero items) in the event all requested\n          objects are filtered out and clients should only use the presence of the\n          continue field to determine whether more results are available. Servers\n          may choose not to support the limit argument and will return all of the\n          available results. If limit is specified and the continue field is empty,\n          clients may assume that no more results are available. This field is not\n          supported if watch is true.\n\n\n          The server guarantees that the objects returned when using continue will\n          be identical to issuing a single list call without a limit - that is, no\n          objects created, modified, or deleted after the first request is issued\n          will be included in any subsequent continued requests. This is sometimes\n          referred to as a consistent snapshot, and ensures that a client that is\n          using limit to receive smaller chunks of a very large result can ensure\n          they see all possible objects. If objects are updated during a chunked list\n          the version of the object that was present at the time the first list result\n          was calculated is returned.'\n        in: query\n        name: limit\n        type: integer\n        uniqueItems: true\n      - description: 'When specified with a watch call, shows changes that occur after\n          that particular version of a resource. Defaults to changes from the beginning\n          of history. When specified for list: - if unset, then the result is returned\n          from remote storage based on quorum-read flag; - if it''s 0, then we simply\n          return what we currently have in cache, no guarantee; - if set to non zero,\n          then the result is at least as fresh as given rv.'\n        in: query\n        name: resourceVersion\n        type: string\n        uniqueItems: true\n      - description: Timeout for the list/watch call. This limits the duration of\n          the call, regardless of any activity or inactivity.\n        in: query\n        name: timeoutSeconds\n        type: integer\n        uniqueItems: true\n      - description: Watch for changes to the described resources and return them\n          as a stream of add, update, and remove notifications. Specify resourceVersion.\n        in: query\n        name: watch\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachmentList'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: list\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n    parameters:\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    post:\n      consumes:\n      - '*/*'\n      description: create a VolumeAttachment\n      operationId: createStorageV1beta1VolumeAttachment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n        '202':\n          description: Accepted\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: post\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n  /apis/storage.k8s.io/v1beta1/volumeattachments/{name}:\n    delete:\n      consumes:\n      - '*/*'\n      description: delete a VolumeAttachment\n      operationId: deleteStorageV1beta1VolumeAttachment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n      - description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        in: query\n        name: gracePeriodSeconds\n        type: integer\n        uniqueItems: true\n      - description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        in: query\n        name: orphanDependents\n        type: boolean\n        uniqueItems: true\n      - description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        in: query\n        name: propagationPolicy\n        type: string\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: delete\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n    get:\n      consumes:\n      - '*/*'\n      description: read the specified VolumeAttachment\n      operationId: readStorageV1beta1VolumeAttachment\n      parameters:\n      - description: Should the export be exact.  Exact export maintains cluster-specific\n          fields like 'Namespace'.\n        in: query\n        name: exact\n        type: boolean\n        uniqueItems: true\n      - description: Should this value be exported.  Export strips fields that a user\n          can not specify.\n        in: query\n        name: export\n        type: boolean\n        uniqueItems: true\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: get\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n    parameters:\n    - description: name of the VolumeAttachment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    patch:\n      consumes:\n      - application/json-patch+json\n      - application/merge-patch+json\n      - application/strategic-merge-patch+json\n      description: partially update the specified VolumeAttachment\n      operationId: patchStorageV1beta1VolumeAttachment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: patch\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n    put:\n      consumes:\n      - '*/*'\n      description: replace the specified VolumeAttachment\n      operationId: replaceStorageV1beta1VolumeAttachment\n      parameters:\n      - in: body\n        name: body\n        required: true\n        schema:\n          $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n        '201':\n          description: Created\n          schema:\n            $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: put\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n  /apis/storage.k8s.io/v1beta1/watch/storageclasses:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of StorageClass\n      operationId: watchStorageV1beta1StorageClassList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/storage.k8s.io/v1beta1/watch/storageclasses/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind StorageClass\n      operationId: watchStorageV1beta1StorageClass\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: StorageClass\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the StorageClass\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/storage.k8s.io/v1beta1/watch/volumeattachments:\n    get:\n      consumes:\n      - '*/*'\n      description: watch individual changes to a list of VolumeAttachment\n      operationId: watchStorageV1beta1VolumeAttachmentList\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: watchlist\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /apis/storage.k8s.io/v1beta1/watch/volumeattachments/{name}:\n    get:\n      consumes:\n      - '*/*'\n      description: watch changes to an object of kind VolumeAttachment\n      operationId: watchStorageV1beta1VolumeAttachment\n      produces:\n      - application/json\n      - application/yaml\n      - application/vnd.kubernetes.protobuf\n      - application/json;stream=watch\n      - application/vnd.kubernetes.protobuf;stream=watch\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - storage_v1beta1\n      x-kubernetes-action: watch\n      x-kubernetes-group-version-kind:\n        group: storage.k8s.io\n        kind: VolumeAttachment\n        version: v1beta1\n    parameters:\n    - description: The continue option should be set when retrieving more results\n        from the server. Since this value is server defined, clients may only use\n        the continue value from a previous query result with identical query parameters\n        (except for the value of continue) and the server may reject a continue value\n        it does not recognize. If the specified continue value is no longer valid\n        whether due to expiration (generally five to fifteen minutes) or a configuration\n        change on the server the server will respond with a 410 ResourceExpired error\n        indicating the client must restart their list without the continue field.\n        This field is not supported when watch is true. Clients may start a watch\n        from the last resourceVersion value returned by the server and not miss any\n        modifications.\n      in: query\n      name: continue\n      type: string\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their fields.\n        Defaults to everything.\n      in: query\n      name: fieldSelector\n      type: string\n      uniqueItems: true\n    - description: If true, partially initialized resources are included in the response.\n      in: query\n      name: includeUninitialized\n      type: boolean\n      uniqueItems: true\n    - description: A selector to restrict the list of returned objects by their labels.\n        Defaults to everything.\n      in: query\n      name: labelSelector\n      type: string\n      uniqueItems: true\n    - description: 'limit is a maximum number of responses to return for a list call.\n        If more items exist, the server will set the `continue` field on the list\n        metadata to a value that can be used with the same initial query to retrieve\n        the next set of results. Setting a limit may return fewer than the requested\n        amount of items (up to zero items) in the event all requested objects are\n        filtered out and clients should only use the presence of the continue field\n        to determine whether more results are available. Servers may choose not to\n        support the limit argument and will return all of the available results. If\n        limit is specified and the continue field is empty, clients may assume that\n        no more results are available. This field is not supported if watch is true.\n\n\n        The server guarantees that the objects returned when using continue will be\n        identical to issuing a single list call without a limit - that is, no objects\n        created, modified, or deleted after the first request is issued will be included\n        in any subsequent continued requests. This is sometimes referred to as a consistent\n        snapshot, and ensures that a client that is using limit to receive smaller\n        chunks of a very large result can ensure they see all possible objects. If\n        objects are updated during a chunked list the version of the object that was\n        present at the time the first list result was calculated is returned.'\n      in: query\n      name: limit\n      type: integer\n      uniqueItems: true\n    - description: name of the VolumeAttachment\n      in: path\n      name: name\n      required: true\n      type: string\n      uniqueItems: true\n    - description: If 'true', then the output is pretty printed.\n      in: query\n      name: pretty\n      type: string\n      uniqueItems: true\n    - description: 'When specified with a watch call, shows changes that occur after\n        that particular version of a resource. Defaults to changes from the beginning\n        of history. When specified for list: - if unset, then the result is returned\n        from remote storage based on quorum-read flag; - if it''s 0, then we simply\n        return what we currently have in cache, no guarantee; - if set to non zero,\n        then the result is at least as fresh as given rv.'\n      in: query\n      name: resourceVersion\n      type: string\n      uniqueItems: true\n    - description: Timeout for the list/watch call. This limits the duration of the\n        call, regardless of any activity or inactivity.\n      in: query\n      name: timeoutSeconds\n      type: integer\n      uniqueItems: true\n    - description: Watch for changes to the described resources and return them as\n        a stream of add, update, and remove notifications. Specify resourceVersion.\n      in: query\n      name: watch\n      type: boolean\n      uniqueItems: true\n  /logs/:\n    get:\n      operationId: logFileListHandler\n      responses:\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - logs\n  /logs/{logpath}:\n    get:\n      operationId: logFileHandler\n      responses:\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - logs\n    parameters:\n    - description: path to the log\n      in: path\n      name: logpath\n      required: true\n      type: string\n      uniqueItems: true\n  /version/:\n    get:\n      consumes:\n      - application/json\n      description: get the code version\n      operationId: getCodeVersion\n      produces:\n      - application/json\n      responses:\n        '200':\n          description: OK\n          schema:\n            $ref: '#/definitions/io.k8s.apimachinery.pkg.version.Info'\n        '401':\n          description: Unauthorized\n      schemes:\n      - https\n      tags:\n      - version\ndefinitions:\n  io.k8s.api.admissionregistration.v1alpha1.Initializer:\n    description: Initializer describes the name and the failure policy of an initializer,\n      and what resources it applies to.\n    properties:\n      name:\n        description: Name is the identifier of the initializer. It will be added to\n          the object that needs to be initialized. Name should be fully qualified,\n          e.g., alwayspullimages.kubernetes.io, where \"alwayspullimages\" is the name\n          of the webhook, and kubernetes.io is the name of the organization. Required\n        type: string\n      rules:\n        description: Rules describes what resources/subresources the initializer cares\n          about. The initializer cares about an operation if it matches _any_ Rule.\n          Rule.Resources must not include subresources.\n        items:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.Rule'\n        type: array\n    required:\n    - name\n  io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration:\n    description: InitializerConfiguration describes the configuration of initializers.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      initializers:\n        description: Initializers is a list of resources and their default initializers\n          Order-sensitive. When merging multiple InitializerConfigurations, we sort\n          the initializers from different InitializerConfigurations by the name of\n          the InitializerConfigurations; the order of the initializers from the same\n          InitializerConfiguration is preserved.\n        items:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.Initializer'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.'\n    x-kubernetes-group-version-kind:\n    - group: admissionregistration.k8s.io\n      kind: InitializerConfiguration\n      version: v1alpha1\n  io.k8s.api.admissionregistration.v1alpha1.InitializerConfigurationList:\n    description: InitializerConfigurationList is a list of InitializerConfiguration.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of InitializerConfiguration.\n        items:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: admissionregistration.k8s.io\n      kind: InitializerConfigurationList\n      version: v1alpha1\n  io.k8s.api.admissionregistration.v1alpha1.Rule:\n    description: Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended\n      to make sure that all the tuple expansions are valid.\n    properties:\n      apiGroups:\n        description: APIGroups is the API groups the resources belong to. '*' is all\n          groups. If '*' is present, the length of the slice must be one. Required.\n        items:\n          type: string\n        type: array\n      apiVersions:\n        description: APIVersions is the API versions the resources belong to. '*'\n          is all versions. If '*' is present, the length of the slice must be one.\n          Required.\n        items:\n          type: string\n        type: array\n      resources:\n        description: 'Resources is a list of resources this rule applies to.\n\n\n          For example: ''pods'' means pods. ''pods/log'' means the log subresource\n          of pods. ''*'' means all resources, but not subresources. ''pods/*'' means\n          all subresources of pods. ''*/scale'' means all scale subresources. ''*/*''\n          means all resources and their subresources.\n\n\n          If wildcard is present, the validation rule will ensure resources do not\n          overlap with each other.\n\n\n          Depending on the enclosing object, subresources might not be allowed. Required.'\n        items:\n          type: string\n        type: array\n  io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration:\n    description: MutatingWebhookConfiguration describes the configuration of and admission\n      webhook that accept or reject and may change the object.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.'\n      webhooks:\n        description: Webhooks is a list of webhooks and the affected resources and\n          operations.\n        items:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.Webhook'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n    x-kubernetes-group-version-kind:\n    - group: admissionregistration.k8s.io\n      kind: MutatingWebhookConfiguration\n      version: v1beta1\n  io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfigurationList:\n    description: MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of MutatingWebhookConfiguration.\n        items:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.MutatingWebhookConfiguration'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: admissionregistration.k8s.io\n      kind: MutatingWebhookConfigurationList\n      version: v1beta1\n  io.k8s.api.admissionregistration.v1beta1.RuleWithOperations:\n    description: RuleWithOperations is a tuple of Operations and Resources. It is\n      recommended to make sure that all the tuple expansions are valid.\n    properties:\n      apiGroups:\n        description: APIGroups is the API groups the resources belong to. '*' is all\n          groups. If '*' is present, the length of the slice must be one. Required.\n        items:\n          type: string\n        type: array\n      apiVersions:\n        description: APIVersions is the API versions the resources belong to. '*'\n          is all versions. If '*' is present, the length of the slice must be one.\n          Required.\n        items:\n          type: string\n        type: array\n      operations:\n        description: Operations is the operations the admission hook cares about -\n          CREATE, UPDATE, or * for all operations. If '*' is present, the length of\n          the slice must be one. Required.\n        items:\n          type: string\n        type: array\n      resources:\n        description: 'Resources is a list of resources this rule applies to.\n\n\n          For example: ''pods'' means pods. ''pods/log'' means the log subresource\n          of pods. ''*'' means all resources, but not subresources. ''pods/*'' means\n          all subresources of pods. ''*/scale'' means all scale subresources. ''*/*''\n          means all resources and their subresources.\n\n\n          If wildcard is present, the validation rule will ensure resources do not\n          overlap with each other.\n\n\n          Depending on the enclosing object, subresources might not be allowed. Required.'\n        items:\n          type: string\n        type: array\n  io.k8s.api.admissionregistration.v1beta1.ServiceReference:\n    description: ServiceReference holds a reference to Service.legacy.k8s.io\n    properties:\n      name:\n        description: '`name` is the name of the service. Required'\n        type: string\n      namespace:\n        description: '`namespace` is the namespace of the service. Required'\n        type: string\n      path:\n        description: '`path` is an optional URL path which will be sent in any request\n          to this service.'\n        type: string\n    required:\n    - namespace\n    - name\n  io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration:\n    description: ValidatingWebhookConfiguration describes the configuration of and\n      admission webhook that accept or reject and object without changing it.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.'\n      webhooks:\n        description: Webhooks is a list of webhooks and the affected resources and\n          operations.\n        items:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.Webhook'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n    x-kubernetes-group-version-kind:\n    - group: admissionregistration.k8s.io\n      kind: ValidatingWebhookConfiguration\n      version: v1beta1\n  io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfigurationList:\n    description: ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of ValidatingWebhookConfiguration.\n        items:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ValidatingWebhookConfiguration'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: admissionregistration.k8s.io\n      kind: ValidatingWebhookConfigurationList\n      version: v1beta1\n  io.k8s.api.admissionregistration.v1beta1.Webhook:\n    description: Webhook describes an admission webhook and the resources and operations\n      it applies to.\n    properties:\n      clientConfig:\n        $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.WebhookClientConfig'\n        description: ClientConfig defines how to communicate with the hook. Required\n      failurePolicy:\n        description: FailurePolicy defines how unrecognized errors from the admission\n          endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.\n        type: string\n      name:\n        description: The name of the admission webhook. Name should be fully qualified,\n          e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the\n          webhook, and kubernetes.io is the name of the organization. Required.\n        type: string\n      namespaceSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: \"NamespaceSelector decides whether to run the webhook on an object\\\n          \\ based on whether the namespace for that object matches the selector. If\\\n          \\ the object itself is a namespace, the matching is performed on object.metadata.labels.\\\n          \\ If the object is another cluster scoped resource, it never skips the webhook.\\n\\\n          \\nFor example, to run the webhook on any objects whose namespace is not\\\n          \\ associated with \\\"runlevel\\\" of \\\"0\\\" or \\\"1\\\";  you will set the selector\\\n          \\ as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\": [\\n    {\\n\\\n          \\      \\\"key\\\": \\\"runlevel\\\",\\n      \\\"operator\\\": \\\"NotIn\\\",\\n      \\\"\\\n          values\\\": [\\n        \\\"0\\\",\\n        \\\"1\\\"\\n      ]\\n    }\\n  ]\\n}\\n\\nIf\\\n          \\ instead you want to only run the webhook on any objects whose namespace\\\n          \\ is associated with the \\\"environment\\\" of \\\"prod\\\" or \\\"staging\\\"; you\\\n          \\ will set the selector as follows: \\\"namespaceSelector\\\": {\\n  \\\"matchExpressions\\\"\\\n          : [\\n    {\\n      \\\"key\\\": \\\"environment\\\",\\n      \\\"operator\\\": \\\"In\\\"\\\n          ,\\n      \\\"values\\\": [\\n        \\\"prod\\\",\\n        \\\"staging\\\"\\n      ]\\n\\\n          \\    }\\n  ]\\n}\\n\\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\\\n          \\ for more examples of label selectors.\\n\\nDefault to the empty LabelSelector,\\\n          \\ which matches everything.\"\n      rules:\n        description: Rules describes what operations on what resources/subresources\n          the webhook cares about. The webhook cares about an operation if it matches\n          _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and\n          MutatingAdmissionWebhooks from putting the cluster in a state which cannot\n          be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks\n          and MutatingAdmissionWebhooks are never called on admission requests for\n          ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.RuleWithOperations'\n        type: array\n    required:\n    - name\n    - clientConfig\n  io.k8s.api.admissionregistration.v1beta1.WebhookClientConfig:\n    description: WebhookClientConfig contains the information to make a TLS connection\n      with the webhook\n    properties:\n      caBundle:\n        description: '`caBundle` is a PEM encoded CA bundle which will be used to\n          validate the webhook''s server certificate. Required.'\n        format: byte\n        type: string\n      service:\n        $ref: '#/definitions/io.k8s.api.admissionregistration.v1beta1.ServiceReference'\n        description: '`service` is a reference to the service for this webhook. Either\n          `service` or `url` must be specified.\n\n\n          If the webhook is running within the cluster, then you should use `service`.\n\n\n          Port 443 will be used if it is open, otherwise it is an error.'\n      url:\n        description: '`url` gives the location of the webhook, in standard URL form\n          (`[scheme://]host:port/path`). Exactly one of `url` or `service` must be\n          specified.\n\n\n          The `host` should not refer to a service running in the cluster; use the\n          `service` field instead. The host might be resolved via external DNS in\n          some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as\n          that would be a layering violation). `host` may also be an IP address.\n\n\n          Please note that using `localhost` or `127.0.0.1` as a `host` is risky unless\n          you take great care to run this webhook on all hosts which run an apiserver\n          which might need to make calls to this webhook. Such installs are likely\n          to be non-portable, i.e., not easy to turn up in a new cluster.\n\n\n          The scheme must be \"https\"; the URL must begin with \"https://\".\n\n\n          A path is optional, and if present may be any string permissible in a URL.\n          You may use the path to pass an arbitrary string to the webhook, for example,\n          a cluster identifier.\n\n\n          Attempting to use a user or basic auth e.g. \"user:password@\" is not allowed.\n          Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either.'\n        type: string\n    required:\n    - caBundle\n  io.k8s.api.apps.v1.ControllerRevision:\n    description: ControllerRevision implements an immutable snapshot of state data.\n      Clients are responsible for serializing and deserializing the objects that contain\n      their internal state. Once a ControllerRevision has been successfully created,\n      it can not be updated. The API Server will fail validation of all requests that\n      attempt to mutate the Data field. ControllerRevisions may, however, be deleted.\n      Note that, due to its use by both the DaemonSet and StatefulSet controllers\n      for update and rollback, this object is beta. However, it may be subject to\n      name and representation changes in future releases, and clients should not depend\n      on its stability. It is primarily for internal use by controllers.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      data:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension'\n        description: Data is the serialized representation of the state.\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      revision:\n        description: Revision indicates the revision of the state represented by Data.\n        format: int64\n        type: integer\n    required:\n    - revision\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ControllerRevision\n      version: v1\n  io.k8s.api.apps.v1.ControllerRevisionList:\n    description: ControllerRevisionList is a resource containing a list of ControllerRevision\n      objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of ControllerRevisions\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.ControllerRevision'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ControllerRevisionList\n      version: v1\n  io.k8s.api.apps.v1.DaemonSet:\n    description: DaemonSet represents the configuration of a daemon set.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSetSpec'\n        description: 'The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSetStatus'\n        description: 'The current status of this daemon set. This data may be out\n          of date by some window of time. Populated by the system. Read-only. More\n          info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: DaemonSet\n      version: v1\n  io.k8s.api.apps.v1.DaemonSetCondition:\n    description: DaemonSetCondition describes the state of a DaemonSet at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of DaemonSet condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1.DaemonSetList:\n    description: DaemonSetList is a collection of daemon sets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: A list of daemon sets.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: DaemonSetList\n      version: v1\n  io.k8s.api.apps.v1.DaemonSetSpec:\n    description: DaemonSetSpec is the specification of a daemon set.\n    properties:\n      minReadySeconds:\n        description: The minimum number of seconds for which a newly created DaemonSet\n          pod should be ready without any of its container crashing, for it to be\n          considered available. Defaults to 0 (pod will be considered available as\n          soon as it is ready).\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: The number of old history to retain to allow rollback. This is\n          a pointer to distinguish between explicit zero and not specified. Defaults\n          to 10.\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'A label query over pods that are managed by the daemon set.\n          Must match in order to be controlled. It must match the pod template''s\n          labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: 'An object that describes the pod that will be created. The DaemonSet\n          will create exactly one copy of this pod on every node that matches the\n          template''s node selector (or on every node if no node selector is specified).\n          More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template'\n      updateStrategy:\n        $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSetUpdateStrategy'\n        description: An update strategy to replace existing DaemonSet pods with new\n          pods.\n    required:\n    - selector\n    - template\n  io.k8s.api.apps.v1.DaemonSetStatus:\n    description: DaemonSetStatus represents the current status of a daemon set.\n    properties:\n      collisionCount:\n        description: Count of hash collisions for the DaemonSet. The DaemonSet controller\n          uses this field as a collision avoidance mechanism when it needs to create\n          the name for the newest ControllerRevision.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a DaemonSet's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.DaemonSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      currentNumberScheduled:\n        description: 'The number of nodes that are running at least 1 daemon pod and\n          are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      desiredNumberScheduled:\n        description: 'The total number of nodes that should be running the daemon\n          pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      numberAvailable:\n        description: The number of nodes that should be running the daemon pod and\n          have one or more of the daemon pod running and available (ready for at least\n          spec.minReadySeconds)\n        format: int32\n        type: integer\n      numberMisscheduled:\n        description: 'The number of nodes that are running the daemon pod, but are\n          not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      numberReady:\n        description: The number of nodes that should be running the daemon pod and\n          have one or more of the daemon pod running and ready.\n        format: int32\n        type: integer\n      numberUnavailable:\n        description: The number of nodes that should be running the daemon pod and\n          have none of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        format: int32\n        type: integer\n      observedGeneration:\n        description: The most recent generation observed by the daemon set controller.\n        format: int64\n        type: integer\n      updatedNumberScheduled:\n        description: The total number of nodes that are running updated daemon pod\n        format: int32\n        type: integer\n    required:\n    - currentNumberScheduled\n    - numberMisscheduled\n    - desiredNumberScheduled\n    - numberReady\n  io.k8s.api.apps.v1.DaemonSetUpdateStrategy:\n    description: DaemonSetUpdateStrategy is a struct used to control the update strategy\n      for a DaemonSet.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.apps.v1.RollingUpdateDaemonSet'\n        description: Rolling update config params. Present only if type = \"RollingUpdate\".\n      type:\n        description: Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\".\n          Default is RollingUpdate.\n        type: string\n  io.k8s.api.apps.v1.Deployment:\n    description: Deployment enables declarative updates for Pods and ReplicaSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object metadata.\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1.DeploymentSpec'\n        description: Specification of the desired behavior of the Deployment.\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1.DeploymentStatus'\n        description: Most recently observed status of the Deployment.\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: Deployment\n      version: v1\n  io.k8s.api.apps.v1.DeploymentCondition:\n    description: DeploymentCondition describes the state of a deployment at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      lastUpdateTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The last time this condition was updated.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of deployment condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1.DeploymentList:\n    description: DeploymentList is a list of Deployments.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of Deployments.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.Deployment'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard list metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: DeploymentList\n      version: v1\n  io.k8s.api.apps.v1.DeploymentSpec:\n    description: DeploymentSpec is the specification of the desired behavior of the\n      Deployment.\n    properties:\n      minReadySeconds:\n        description: Minimum number of seconds for which a newly created pod should\n          be ready without any of its container crashing, for it to be considered\n          available. Defaults to 0 (pod will be considered available as soon as it\n          is ready)\n        format: int32\n        type: integer\n      paused:\n        description: Indicates that the deployment is paused.\n        type: boolean\n      progressDeadlineSeconds:\n        description: The maximum time in seconds for a deployment to make progress\n          before it is considered to be failed. The deployment controller will continue\n          to process failed deployments and a condition with a ProgressDeadlineExceeded\n          reason will be surfaced in the deployment status. Note that progress will\n          not be estimated during the time a deployment is paused. Defaults to 600s.\n        format: int32\n        type: integer\n      replicas:\n        description: Number of desired pods. This is a pointer to distinguish between\n          explicit zero and not specified. Defaults to 1.\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: The number of old ReplicaSets to retain to allow rollback. This\n          is a pointer to distinguish between explicit zero and not specified. Defaults\n          to 10.\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: Label selector for pods. Existing ReplicaSets whose pods are\n          selected by this will be the ones affected by this deployment. It must match\n          the pod template's labels.\n      strategy:\n        $ref: '#/definitions/io.k8s.api.apps.v1.DeploymentStrategy'\n        description: The deployment strategy to use to replace existing pods with\n          new ones.\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: Template describes the pods that will be created.\n    required:\n    - selector\n    - template\n  io.k8s.api.apps.v1.DeploymentStatus:\n    description: DeploymentStatus is the most recently observed status of the Deployment.\n    properties:\n      availableReplicas:\n        description: Total number of available pods (ready for at least minReadySeconds)\n          targeted by this deployment.\n        format: int32\n        type: integer\n      collisionCount:\n        description: Count of hash collisions for the Deployment. The Deployment controller\n          uses this field as a collision avoidance mechanism when it needs to create\n          the name for the newest ReplicaSet.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a deployment's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.DeploymentCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      observedGeneration:\n        description: The generation observed by the deployment controller.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: Total number of ready pods targeted by this deployment.\n        format: int32\n        type: integer\n      replicas:\n        description: Total number of non-terminated pods targeted by this deployment\n          (their labels match the selector).\n        format: int32\n        type: integer\n      unavailableReplicas:\n        description: Total number of unavailable pods targeted by this deployment.\n          This is the total number of pods that are still required for the deployment\n          to have 100% available capacity. They may either be pods that are running\n          but not yet available or pods that still have not been created.\n        format: int32\n        type: integer\n      updatedReplicas:\n        description: Total number of non-terminated pods targeted by this deployment\n          that have the desired template spec.\n        format: int32\n        type: integer\n  io.k8s.api.apps.v1.DeploymentStrategy:\n    description: DeploymentStrategy describes how to replace existing pods with new\n      ones.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.apps.v1.RollingUpdateDeployment'\n        description: Rolling update config params. Present only if DeploymentStrategyType\n          = RollingUpdate.\n      type:\n        description: Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default\n          is RollingUpdate.\n        type: string\n  io.k8s.api.apps.v1.ReplicaSet:\n    description: ReplicaSet ensures that a specified number of pod replicas are running\n      at any given time.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'If the Labels of a ReplicaSet are empty, they are defaulted\n          to be the same as the Pod(s) that the ReplicaSet manages. Standard object''s\n          metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSetSpec'\n        description: 'Spec defines the specification of the desired behavior of the\n          ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSetStatus'\n        description: 'Status is the most recently observed status of the ReplicaSet.\n          This data may be out of date by some window of time. Populated by the system.\n          Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ReplicaSet\n      version: v1\n  io.k8s.api.apps.v1.ReplicaSetCondition:\n    description: ReplicaSetCondition describes the state of a replica set at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of replica set condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1.ReplicaSetList:\n    description: ReplicaSetList is a collection of ReplicaSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller'\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ReplicaSetList\n      version: v1\n  io.k8s.api.apps.v1.ReplicaSetSpec:\n    description: ReplicaSetSpec is the specification of a ReplicaSet.\n    properties:\n      minReadySeconds:\n        description: Minimum number of seconds for which a newly created pod should\n          be ready without any of its container crashing, for it to be considered\n          available. Defaults to 0 (pod will be considered available as soon as it\n          is ready)\n        format: int32\n        type: integer\n      replicas:\n        description: 'Replicas is the number of desired replicas. This is a pointer\n          to distinguish between explicit zero and unspecified. Defaults to 1. More\n          info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller'\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'Selector is a label query over pods that should match the replica\n          count. Label keys and values that must match in order to be controlled by\n          this replica set. It must match the pod template''s labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: 'Template is the object that describes the pod that will be created\n          if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template'\n    required:\n    - selector\n  io.k8s.api.apps.v1.ReplicaSetStatus:\n    description: ReplicaSetStatus represents the current status of a ReplicaSet.\n    properties:\n      availableReplicas:\n        description: The number of available replicas (ready for at least minReadySeconds)\n          for this replica set.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a replica set's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.ReplicaSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      fullyLabeledReplicas:\n        description: The number of pods that have labels matching the labels of the\n          pod template of the replicaset.\n        format: int32\n        type: integer\n      observedGeneration:\n        description: ObservedGeneration reflects the generation of the most recently\n          observed ReplicaSet.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: The number of ready replicas for this replica set.\n        format: int32\n        type: integer\n      replicas:\n        description: 'Replicas is the most recently oberved number of replicas. More\n          info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller'\n        format: int32\n        type: integer\n    required:\n    - replicas\n  io.k8s.api.apps.v1.RollingUpdateDaemonSet:\n    description: Spec to control the desired behavior of daemon set rolling update.\n    properties:\n      maxUnavailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of DaemonSet pods that can be unavailable\n          during the update. Value can be an absolute number (ex: 5) or a percentage\n          of total number of DaemonSet pods at the start of the update (ex: 10%).\n          Absolute number is calculated from percentage by rounding up. This cannot\n          be 0. Default value is 1. Example: when this is set to 30%, at most 30%\n          of the total number of nodes that should be running the daemon pod (i.e.\n          status.desiredNumberScheduled) can have their pods stopped for an update\n          at any given time. The update starts by stopping at most 30% of those DaemonSet\n          pods and then brings up new DaemonSet pods in their place. Once the new\n          pods are available, it then proceeds onto other DaemonSet pods, thus ensuring\n          that at least 70% of original number of DaemonSet pods are available at\n          all times during the update.'\n  io.k8s.api.apps.v1.RollingUpdateDeployment:\n    description: Spec to control the desired behavior of rolling update.\n    properties:\n      maxSurge:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of pods that can be scheduled above the desired\n          number of pods. Value can be an absolute number (ex: 5) or a percentage\n          of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute\n          number is calculated from percentage by rounding up. Defaults to 25%. Example:\n          when this is set to 30%, the new ReplicaSet can be scaled up immediately\n          when the rolling update starts, such that the total number of old and new\n          pods do not exceed 130% of desired pods. Once old pods have been killed,\n          new ReplicaSet can be scaled up further, ensuring that total number of pods\n          running at any time during the update is at most 130% of desired pods.'\n      maxUnavailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of pods that can be unavailable during the\n          update. Value can be an absolute number (ex: 5) or a percentage of desired\n          pods (ex: 10%). Absolute number is calculated from percentage by rounding\n          down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when\n          this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired\n          pods immediately when the rolling update starts. Once new pods are ready,\n          old ReplicaSet can be scaled down further, followed by scaling up the new\n          ReplicaSet, ensuring that the total number of pods available at all times\n          during the update is at least 70% of desired pods.'\n  io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy:\n    description: RollingUpdateStatefulSetStrategy is used to communicate parameter\n      for RollingUpdateStatefulSetStrategyType.\n    properties:\n      partition:\n        description: Partition indicates the ordinal at which the StatefulSet should\n          be partitioned. Default value is 0.\n        format: int32\n        type: integer\n  io.k8s.api.apps.v1.StatefulSet:\n    description: \"StatefulSet represents a set of pods with consistent identities.\\\n      \\ Identities are defined as:\\n - Network: A single stable DNS and hostname.\\n\\\n      \\ - Storage: As many VolumeClaims as requested.\\nThe StatefulSet guarantees\\\n      \\ that a given network identity will always map to the same storage identity.\"\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSetSpec'\n        description: Spec defines the desired identities of pods in this set.\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSetStatus'\n        description: Status is the current status of Pods in this StatefulSet. This\n          data may be out of date by some window of time.\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: StatefulSet\n      version: v1\n  io.k8s.api.apps.v1.StatefulSetCondition:\n    description: StatefulSetCondition describes the state of a statefulset at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of statefulset condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1.StatefulSetList:\n    description: StatefulSetList is a collection of StatefulSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: StatefulSetList\n      version: v1\n  io.k8s.api.apps.v1.StatefulSetSpec:\n    description: A StatefulSetSpec is the specification of a StatefulSet.\n    properties:\n      podManagementPolicy:\n        description: podManagementPolicy controls how pods are created during initial\n          scale up, when replacing pods on nodes, or when scaling down. The default\n          policy is `OrderedReady`, where pods are created in increasing order (pod-0,\n          then pod-1, etc) and the controller will wait until each pod is ready before\n          continuing. When scaling down, the pods are removed in the opposite order.\n          The alternative policy is `Parallel` which will create pods in parallel\n          to match the desired scale without waiting, and on scale down will delete\n          all pods at once.\n        type: string\n      replicas:\n        description: replicas is the desired number of replicas of the given Template.\n          These are replicas in the sense that they are instantiations of the same\n          Template, but individual replicas also have a consistent identity. If unspecified,\n          defaults to 1.\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: revisionHistoryLimit is the maximum number of revisions that\n          will be maintained in the StatefulSet's revision history. The revision history\n          consists of all revisions not represented by a currently applied StatefulSetSpec\n          version. The default value is 10.\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'selector is a label query over pods that should match the replica\n          count. It must match the pod template''s labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      serviceName:\n        description: 'serviceName is the name of the service that governs this StatefulSet.\n          This service must exist before the StatefulSet, and is responsible for the\n          network identity of the set. Pods get DNS/hostnames that follow the pattern:\n          pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\"\n          is managed by the StatefulSet controller.'\n        type: string\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: template is the object that describes the pod that will be created\n          if insufficient replicas are detected. Each pod stamped out by the StatefulSet\n          will fulfill this Template, but have a unique identity from the rest of\n          the StatefulSet.\n      updateStrategy:\n        $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSetUpdateStrategy'\n        description: updateStrategy indicates the StatefulSetUpdateStrategy that will\n          be employed to update Pods in the StatefulSet when a revision is made to\n          Template.\n      volumeClaimTemplates:\n        description: volumeClaimTemplates is a list of claims that pods are allowed\n          to reference. The StatefulSet controller is responsible for mapping network\n          identities to claims in a way that maintains the identity of a pod. Every\n          claim in this list must have at least one matching (by name) volumeMount\n          in one container in the template. A claim in this list takes precedence\n          over any volumes in the template, with the same name.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        type: array\n    required:\n    - selector\n    - template\n    - serviceName\n  io.k8s.api.apps.v1.StatefulSetStatus:\n    description: StatefulSetStatus represents the current state of a StatefulSet.\n    properties:\n      collisionCount:\n        description: collisionCount is the count of hash collisions for the StatefulSet.\n          The StatefulSet controller uses this field as a collision avoidance mechanism\n          when it needs to create the name for the newest ControllerRevision.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a statefulset's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1.StatefulSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      currentReplicas:\n        description: currentReplicas is the number of Pods created by the StatefulSet\n          controller from the StatefulSet version indicated by currentRevision.\n        format: int32\n        type: integer\n      currentRevision:\n        description: currentRevision, if not empty, indicates the version of the StatefulSet\n          used to generate Pods in the sequence [0,currentReplicas).\n        type: string\n      observedGeneration:\n        description: observedGeneration is the most recent generation observed for\n          this StatefulSet. It corresponds to the StatefulSet's generation, which\n          is updated on mutation by the API Server.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: readyReplicas is the number of Pods created by the StatefulSet\n          controller that have a Ready Condition.\n        format: int32\n        type: integer\n      replicas:\n        description: replicas is the number of Pods created by the StatefulSet controller.\n        format: int32\n        type: integer\n      updateRevision:\n        description: updateRevision, if not empty, indicates the version of the StatefulSet\n          used to generate Pods in the sequence [replicas-updatedReplicas,replicas)\n        type: string\n      updatedReplicas:\n        description: updatedReplicas is the number of Pods created by the StatefulSet\n          controller from the StatefulSet version indicated by updateRevision.\n        format: int32\n        type: integer\n    required:\n    - replicas\n  io.k8s.api.apps.v1.StatefulSetUpdateStrategy:\n    description: StatefulSetUpdateStrategy indicates the strategy that the StatefulSet\n      controller will use to perform updates. It includes any additional parameters\n      necessary to perform the update for the indicated strategy.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy'\n        description: RollingUpdate is used to communicate parameters when Type is\n          RollingUpdateStatefulSetStrategyType.\n      type:\n        description: Type indicates the type of the StatefulSetUpdateStrategy. Default\n          is RollingUpdate.\n        type: string\n  io.k8s.api.apps.v1beta1.ControllerRevision:\n    description: DEPRECATED - This group version of ControllerRevision is deprecated\n      by apps/v1beta2/ControllerRevision. See the release notes for more information.\n      ControllerRevision implements an immutable snapshot of state data. Clients are\n      responsible for serializing and deserializing the objects that contain their\n      internal state. Once a ControllerRevision has been successfully created, it\n      can not be updated. The API Server will fail validation of all requests that\n      attempt to mutate the Data field. ControllerRevisions may, however, be deleted.\n      Note that, due to its use by both the DaemonSet and StatefulSet controllers\n      for update and rollback, this object is beta. However, it may be subject to\n      name and representation changes in future releases, and clients should not depend\n      on its stability. It is primarily for internal use by controllers.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      data:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension'\n        description: Data is the serialized representation of the state.\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      revision:\n        description: Revision indicates the revision of the state represented by Data.\n        format: int64\n        type: integer\n    required:\n    - revision\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ControllerRevision\n      version: v1beta1\n  io.k8s.api.apps.v1beta1.ControllerRevisionList:\n    description: ControllerRevisionList is a resource containing a list of ControllerRevision\n      objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of ControllerRevisions\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ControllerRevisionList\n      version: v1beta1\n  io.k8s.api.apps.v1beta1.Deployment:\n    description: DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment.\n      See the release notes for more information. Deployment enables declarative updates\n      for Pods and ReplicaSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object metadata.\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentSpec'\n        description: Specification of the desired behavior of the Deployment.\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentStatus'\n        description: Most recently observed status of the Deployment.\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: Deployment\n      version: v1beta1\n  io.k8s.api.apps.v1beta1.DeploymentCondition:\n    description: DeploymentCondition describes the state of a deployment at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      lastUpdateTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The last time this condition was updated.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of deployment condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1beta1.DeploymentList:\n    description: DeploymentList is a list of Deployments.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of Deployments.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard list metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: DeploymentList\n      version: v1beta1\n  io.k8s.api.apps.v1beta1.DeploymentRollback:\n    description: DEPRECATED. DeploymentRollback stores the information required to\n      rollback a deployment.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      name:\n        description: 'Required: This must match the Name of a deployment.'\n        type: string\n      rollbackTo:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.RollbackConfig'\n        description: The config of this deployment rollback.\n      updatedAnnotations:\n        additionalProperties:\n          type: string\n        description: The annotations to be updated to a deployment\n        type: object\n    required:\n    - name\n    - rollbackTo\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: DeploymentRollback\n      version: v1beta1\n  io.k8s.api.apps.v1beta1.DeploymentSpec:\n    description: DeploymentSpec is the specification of the desired behavior of the\n      Deployment.\n    properties:\n      minReadySeconds:\n        description: Minimum number of seconds for which a newly created pod should\n          be ready without any of its container crashing, for it to be considered\n          available. Defaults to 0 (pod will be considered available as soon as it\n          is ready)\n        format: int32\n        type: integer\n      paused:\n        description: Indicates that the deployment is paused.\n        type: boolean\n      progressDeadlineSeconds:\n        description: The maximum time in seconds for a deployment to make progress\n          before it is considered to be failed. The deployment controller will continue\n          to process failed deployments and a condition with a ProgressDeadlineExceeded\n          reason will be surfaced in the deployment status. Note that progress will\n          not be estimated during the time a deployment is paused. Defaults to 600s.\n        format: int32\n        type: integer\n      replicas:\n        description: Number of desired pods. This is a pointer to distinguish between\n          explicit zero and not specified. Defaults to 1.\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: The number of old ReplicaSets to retain to allow rollback. This\n          is a pointer to distinguish between explicit zero and not specified. Defaults\n          to 2.\n        format: int32\n        type: integer\n      rollbackTo:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.RollbackConfig'\n        description: DEPRECATED. The config this deployment is rolling back to. Will\n          be cleared after rollback is done.\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: Label selector for pods. Existing ReplicaSets whose pods are\n          selected by this will be the ones affected by this deployment.\n      strategy:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentStrategy'\n        description: The deployment strategy to use to replace existing pods with\n          new ones.\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: Template describes the pods that will be created.\n    required:\n    - template\n  io.k8s.api.apps.v1beta1.DeploymentStatus:\n    description: DeploymentStatus is the most recently observed status of the Deployment.\n    properties:\n      availableReplicas:\n        description: Total number of available pods (ready for at least minReadySeconds)\n          targeted by this deployment.\n        format: int32\n        type: integer\n      collisionCount:\n        description: Count of hash collisions for the Deployment. The Deployment controller\n          uses this field as a collision avoidance mechanism when it needs to create\n          the name for the newest ReplicaSet.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a deployment's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      observedGeneration:\n        description: The generation observed by the deployment controller.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: Total number of ready pods targeted by this deployment.\n        format: int32\n        type: integer\n      replicas:\n        description: Total number of non-terminated pods targeted by this deployment\n          (their labels match the selector).\n        format: int32\n        type: integer\n      unavailableReplicas:\n        description: Total number of unavailable pods targeted by this deployment.\n          This is the total number of pods that are still required for the deployment\n          to have 100% available capacity. They may either be pods that are running\n          but not yet available or pods that still have not been created.\n        format: int32\n        type: integer\n      updatedReplicas:\n        description: Total number of non-terminated pods targeted by this deployment\n          that have the desired template spec.\n        format: int32\n        type: integer\n  io.k8s.api.apps.v1beta1.DeploymentStrategy:\n    description: DeploymentStrategy describes how to replace existing pods with new\n      ones.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateDeployment'\n        description: Rolling update config params. Present only if DeploymentStrategyType\n          = RollingUpdate.\n      type:\n        description: Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default\n          is RollingUpdate.\n        type: string\n  io.k8s.api.apps.v1beta1.RollbackConfig:\n    description: DEPRECATED.\n    properties:\n      revision:\n        description: The revision to rollback to. If set to 0, rollback to the last\n          revision.\n        format: int64\n        type: integer\n  io.k8s.api.apps.v1beta1.RollingUpdateDeployment:\n    description: Spec to control the desired behavior of rolling update.\n    properties:\n      maxSurge:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of pods that can be scheduled above the desired\n          number of pods. Value can be an absolute number (ex: 5) or a percentage\n          of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute\n          number is calculated from percentage by rounding up. Defaults to 25%. Example:\n          when this is set to 30%, the new ReplicaSet can be scaled up immediately\n          when the rolling update starts, such that the total number of old and new\n          pods do not exceed 130% of desired pods. Once old pods have been killed,\n          new ReplicaSet can be scaled up further, ensuring that total number of pods\n          running at any time during the update is atmost 130% of desired pods.'\n      maxUnavailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of pods that can be unavailable during the\n          update. Value can be an absolute number (ex: 5) or a percentage of desired\n          pods (ex: 10%). Absolute number is calculated from percentage by rounding\n          down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when\n          this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired\n          pods immediately when the rolling update starts. Once new pods are ready,\n          old ReplicaSet can be scaled down further, followed by scaling up the new\n          ReplicaSet, ensuring that the total number of pods available at all times\n          during the update is at least 70% of desired pods.'\n  io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy:\n    description: RollingUpdateStatefulSetStrategy is used to communicate parameter\n      for RollingUpdateStatefulSetStrategyType.\n    properties:\n      partition:\n        description: Partition indicates the ordinal at which the StatefulSet should\n          be partitioned.\n        format: int32\n        type: integer\n  io.k8s.api.apps.v1beta1.Scale:\n    description: Scale represents a scaling request for a resource.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.ScaleSpec'\n        description: 'defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.'\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.ScaleStatus'\n        description: 'current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.\n          Read-only.'\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: Scale\n      version: v1beta1\n  io.k8s.api.apps.v1beta1.ScaleSpec:\n    description: ScaleSpec describes the attributes of a scale subresource\n    properties:\n      replicas:\n        description: desired number of instances for the scaled object.\n        format: int32\n        type: integer\n  io.k8s.api.apps.v1beta1.ScaleStatus:\n    description: ScaleStatus represents the current status of a scale subresource.\n    properties:\n      replicas:\n        description: actual number of observed instances of the scaled object.\n        format: int32\n        type: integer\n      selector:\n        additionalProperties:\n          type: string\n        description: 'label query over pods that should match the replicas count.\n          More info: http://kubernetes.io/docs/user-guide/labels#label-selectors'\n        type: object\n      targetSelector:\n        description: 'label selector for pods that should match the replicas count.\n          This is a serializated version of both map-based and more expressive set-based\n          selectors. This is done to avoid introspection in the clients. The string\n          will be in the same format as the query-param syntax. If the target type\n          only supports map-based selectors, both this field and map-based selector\n          field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n        type: string\n    required:\n    - replicas\n  io.k8s.api.apps.v1beta1.StatefulSet:\n    description: \"DEPRECATED - This group version of StatefulSet is deprecated by\\\n      \\ apps/v1beta2/StatefulSet. See the release notes for more information. StatefulSet\\\n      \\ represents a set of pods with consistent identities. Identities are defined\\\n      \\ as:\\n - Network: A single stable DNS and hostname.\\n - Storage: As many VolumeClaims\\\n      \\ as requested.\\nThe StatefulSet guarantees that a given network identity will\\\n      \\ always map to the same storage identity.\"\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetSpec'\n        description: Spec defines the desired identities of pods in this set.\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetStatus'\n        description: Status is the current status of Pods in this StatefulSet. This\n          data may be out of date by some window of time.\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: StatefulSet\n      version: v1beta1\n  io.k8s.api.apps.v1beta1.StatefulSetCondition:\n    description: StatefulSetCondition describes the state of a statefulset at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of statefulset condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1beta1.StatefulSetList:\n    description: StatefulSetList is a collection of StatefulSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: StatefulSetList\n      version: v1beta1\n  io.k8s.api.apps.v1beta1.StatefulSetSpec:\n    description: A StatefulSetSpec is the specification of a StatefulSet.\n    properties:\n      podManagementPolicy:\n        description: podManagementPolicy controls how pods are created during initial\n          scale up, when replacing pods on nodes, or when scaling down. The default\n          policy is `OrderedReady`, where pods are created in increasing order (pod-0,\n          then pod-1, etc) and the controller will wait until each pod is ready before\n          continuing. When scaling down, the pods are removed in the opposite order.\n          The alternative policy is `Parallel` which will create pods in parallel\n          to match the desired scale without waiting, and on scale down will delete\n          all pods at once.\n        type: string\n      replicas:\n        description: replicas is the desired number of replicas of the given Template.\n          These are replicas in the sense that they are instantiations of the same\n          Template, but individual replicas also have a consistent identity. If unspecified,\n          defaults to 1.\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: revisionHistoryLimit is the maximum number of revisions that\n          will be maintained in the StatefulSet's revision history. The revision history\n          consists of all revisions not represented by a currently applied StatefulSetSpec\n          version. The default value is 10.\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'selector is a label query over pods that should match the replica\n          count. If empty, defaulted to labels on the pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      serviceName:\n        description: 'serviceName is the name of the service that governs this StatefulSet.\n          This service must exist before the StatefulSet, and is responsible for the\n          network identity of the set. Pods get DNS/hostnames that follow the pattern:\n          pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\"\n          is managed by the StatefulSet controller.'\n        type: string\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: template is the object that describes the pod that will be created\n          if insufficient replicas are detected. Each pod stamped out by the StatefulSet\n          will fulfill this Template, but have a unique identity from the rest of\n          the StatefulSet.\n      updateStrategy:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy'\n        description: updateStrategy indicates the StatefulSetUpdateStrategy that will\n          be employed to update Pods in the StatefulSet when a revision is made to\n          Template.\n      volumeClaimTemplates:\n        description: volumeClaimTemplates is a list of claims that pods are allowed\n          to reference. The StatefulSet controller is responsible for mapping network\n          identities to claims in a way that maintains the identity of a pod. Every\n          claim in this list must have at least one matching (by name) volumeMount\n          in one container in the template. A claim in this list takes precedence\n          over any volumes in the template, with the same name.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        type: array\n    required:\n    - template\n    - serviceName\n  io.k8s.api.apps.v1beta1.StatefulSetStatus:\n    description: StatefulSetStatus represents the current state of a StatefulSet.\n    properties:\n      collisionCount:\n        description: collisionCount is the count of hash collisions for the StatefulSet.\n          The StatefulSet controller uses this field as a collision avoidance mechanism\n          when it needs to create the name for the newest ControllerRevision.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a statefulset's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      currentReplicas:\n        description: currentReplicas is the number of Pods created by the StatefulSet\n          controller from the StatefulSet version indicated by currentRevision.\n        format: int32\n        type: integer\n      currentRevision:\n        description: currentRevision, if not empty, indicates the version of the StatefulSet\n          used to generate Pods in the sequence [0,currentReplicas).\n        type: string\n      observedGeneration:\n        description: observedGeneration is the most recent generation observed for\n          this StatefulSet. It corresponds to the StatefulSet's generation, which\n          is updated on mutation by the API Server.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: readyReplicas is the number of Pods created by the StatefulSet\n          controller that have a Ready Condition.\n        format: int32\n        type: integer\n      replicas:\n        description: replicas is the number of Pods created by the StatefulSet controller.\n        format: int32\n        type: integer\n      updateRevision:\n        description: updateRevision, if not empty, indicates the version of the StatefulSet\n          used to generate Pods in the sequence [replicas-updatedReplicas,replicas)\n        type: string\n      updatedReplicas:\n        description: updatedReplicas is the number of Pods created by the StatefulSet\n          controller from the StatefulSet version indicated by updateRevision.\n        format: int32\n        type: integer\n    required:\n    - replicas\n  io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy:\n    description: StatefulSetUpdateStrategy indicates the strategy that the StatefulSet\n      controller will use to perform updates. It includes any additional parameters\n      necessary to perform the update for the indicated strategy.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy'\n        description: RollingUpdate is used to communicate parameters when Type is\n          RollingUpdateStatefulSetStrategyType.\n      type:\n        description: Type indicates the type of the StatefulSetUpdateStrategy.\n        type: string\n  io.k8s.api.apps.v1beta2.ControllerRevision:\n    description: DEPRECATED - This group version of ControllerRevision is deprecated\n      by apps/v1/ControllerRevision. See the release notes for more information. ControllerRevision\n      implements an immutable snapshot of state data. Clients are responsible for\n      serializing and deserializing the objects that contain their internal state.\n      Once a ControllerRevision has been successfully created, it can not be updated.\n      The API Server will fail validation of all requests that attempt to mutate the\n      Data field. ControllerRevisions may, however, be deleted. Note that, due to\n      its use by both the DaemonSet and StatefulSet controllers for update and rollback,\n      this object is beta. However, it may be subject to name and representation changes\n      in future releases, and clients should not depend on its stability. It is primarily\n      for internal use by controllers.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      data:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension'\n        description: Data is the serialized representation of the state.\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      revision:\n        description: Revision indicates the revision of the state represented by Data.\n        format: int64\n        type: integer\n    required:\n    - revision\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ControllerRevision\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.ControllerRevisionList:\n    description: ControllerRevisionList is a resource containing a list of ControllerRevision\n      objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of ControllerRevisions\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.ControllerRevision'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ControllerRevisionList\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.DaemonSet:\n    description: DEPRECATED - This group version of DaemonSet is deprecated by apps/v1/DaemonSet.\n      See the release notes for more information. DaemonSet represents the configuration\n      of a daemon set.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSetSpec'\n        description: 'The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSetStatus'\n        description: 'The current status of this daemon set. This data may be out\n          of date by some window of time. Populated by the system. Read-only. More\n          info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: DaemonSet\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.DaemonSetCondition:\n    description: DaemonSetCondition describes the state of a DaemonSet at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of DaemonSet condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1beta2.DaemonSetList:\n    description: DaemonSetList is a collection of daemon sets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: A list of daemon sets.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: DaemonSetList\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.DaemonSetSpec:\n    description: DaemonSetSpec is the specification of a daemon set.\n    properties:\n      minReadySeconds:\n        description: The minimum number of seconds for which a newly created DaemonSet\n          pod should be ready without any of its container crashing, for it to be\n          considered available. Defaults to 0 (pod will be considered available as\n          soon as it is ready).\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: The number of old history to retain to allow rollback. This is\n          a pointer to distinguish between explicit zero and not specified. Defaults\n          to 10.\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'A label query over pods that are managed by the daemon set.\n          Must match in order to be controlled. It must match the pod template''s\n          labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: 'An object that describes the pod that will be created. The DaemonSet\n          will create exactly one copy of this pod on every node that matches the\n          template''s node selector (or on every node if no node selector is specified).\n          More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template'\n      updateStrategy:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSetUpdateStrategy'\n        description: An update strategy to replace existing DaemonSet pods with new\n          pods.\n    required:\n    - selector\n    - template\n  io.k8s.api.apps.v1beta2.DaemonSetStatus:\n    description: DaemonSetStatus represents the current status of a daemon set.\n    properties:\n      collisionCount:\n        description: Count of hash collisions for the DaemonSet. The DaemonSet controller\n          uses this field as a collision avoidance mechanism when it needs to create\n          the name for the newest ControllerRevision.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a DaemonSet's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.DaemonSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      currentNumberScheduled:\n        description: 'The number of nodes that are running at least 1 daemon pod and\n          are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      desiredNumberScheduled:\n        description: 'The total number of nodes that should be running the daemon\n          pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      numberAvailable:\n        description: The number of nodes that should be running the daemon pod and\n          have one or more of the daemon pod running and available (ready for at least\n          spec.minReadySeconds)\n        format: int32\n        type: integer\n      numberMisscheduled:\n        description: 'The number of nodes that are running the daemon pod, but are\n          not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      numberReady:\n        description: The number of nodes that should be running the daemon pod and\n          have one or more of the daemon pod running and ready.\n        format: int32\n        type: integer\n      numberUnavailable:\n        description: The number of nodes that should be running the daemon pod and\n          have none of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        format: int32\n        type: integer\n      observedGeneration:\n        description: The most recent generation observed by the daemon set controller.\n        format: int64\n        type: integer\n      updatedNumberScheduled:\n        description: The total number of nodes that are running updated daemon pod\n        format: int32\n        type: integer\n    required:\n    - currentNumberScheduled\n    - numberMisscheduled\n    - desiredNumberScheduled\n    - numberReady\n  io.k8s.api.apps.v1beta2.DaemonSetUpdateStrategy:\n    description: DaemonSetUpdateStrategy is a struct used to control the update strategy\n      for a DaemonSet.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.RollingUpdateDaemonSet'\n        description: Rolling update config params. Present only if type = \"RollingUpdate\".\n      type:\n        description: Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\".\n          Default is RollingUpdate.\n        type: string\n  io.k8s.api.apps.v1beta2.Deployment:\n    description: DEPRECATED - This group version of Deployment is deprecated by apps/v1/Deployment.\n      See the release notes for more information. Deployment enables declarative updates\n      for Pods and ReplicaSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object metadata.\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.DeploymentSpec'\n        description: Specification of the desired behavior of the Deployment.\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.DeploymentStatus'\n        description: Most recently observed status of the Deployment.\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: Deployment\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.DeploymentCondition:\n    description: DeploymentCondition describes the state of a deployment at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      lastUpdateTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The last time this condition was updated.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of deployment condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1beta2.DeploymentList:\n    description: DeploymentList is a list of Deployments.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of Deployments.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.Deployment'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard list metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: DeploymentList\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.DeploymentSpec:\n    description: DeploymentSpec is the specification of the desired behavior of the\n      Deployment.\n    properties:\n      minReadySeconds:\n        description: Minimum number of seconds for which a newly created pod should\n          be ready without any of its container crashing, for it to be considered\n          available. Defaults to 0 (pod will be considered available as soon as it\n          is ready)\n        format: int32\n        type: integer\n      paused:\n        description: Indicates that the deployment is paused.\n        type: boolean\n      progressDeadlineSeconds:\n        description: The maximum time in seconds for a deployment to make progress\n          before it is considered to be failed. The deployment controller will continue\n          to process failed deployments and a condition with a ProgressDeadlineExceeded\n          reason will be surfaced in the deployment status. Note that progress will\n          not be estimated during the time a deployment is paused. Defaults to 600s.\n        format: int32\n        type: integer\n      replicas:\n        description: Number of desired pods. This is a pointer to distinguish between\n          explicit zero and not specified. Defaults to 1.\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: The number of old ReplicaSets to retain to allow rollback. This\n          is a pointer to distinguish between explicit zero and not specified. Defaults\n          to 10.\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: Label selector for pods. Existing ReplicaSets whose pods are\n          selected by this will be the ones affected by this deployment. It must match\n          the pod template's labels.\n      strategy:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.DeploymentStrategy'\n        description: The deployment strategy to use to replace existing pods with\n          new ones.\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: Template describes the pods that will be created.\n    required:\n    - selector\n    - template\n  io.k8s.api.apps.v1beta2.DeploymentStatus:\n    description: DeploymentStatus is the most recently observed status of the Deployment.\n    properties:\n      availableReplicas:\n        description: Total number of available pods (ready for at least minReadySeconds)\n          targeted by this deployment.\n        format: int32\n        type: integer\n      collisionCount:\n        description: Count of hash collisions for the Deployment. The Deployment controller\n          uses this field as a collision avoidance mechanism when it needs to create\n          the name for the newest ReplicaSet.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a deployment's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.DeploymentCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      observedGeneration:\n        description: The generation observed by the deployment controller.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: Total number of ready pods targeted by this deployment.\n        format: int32\n        type: integer\n      replicas:\n        description: Total number of non-terminated pods targeted by this deployment\n          (their labels match the selector).\n        format: int32\n        type: integer\n      unavailableReplicas:\n        description: Total number of unavailable pods targeted by this deployment.\n          This is the total number of pods that are still required for the deployment\n          to have 100% available capacity. They may either be pods that are running\n          but not yet available or pods that still have not been created.\n        format: int32\n        type: integer\n      updatedReplicas:\n        description: Total number of non-terminated pods targeted by this deployment\n          that have the desired template spec.\n        format: int32\n        type: integer\n  io.k8s.api.apps.v1beta2.DeploymentStrategy:\n    description: DeploymentStrategy describes how to replace existing pods with new\n      ones.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.RollingUpdateDeployment'\n        description: Rolling update config params. Present only if DeploymentStrategyType\n          = RollingUpdate.\n      type:\n        description: Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default\n          is RollingUpdate.\n        type: string\n  io.k8s.api.apps.v1beta2.ReplicaSet:\n    description: DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1/ReplicaSet.\n      See the release notes for more information. ReplicaSet ensures that a specified\n      number of pod replicas are running at any given time.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'If the Labels of a ReplicaSet are empty, they are defaulted\n          to be the same as the Pod(s) that the ReplicaSet manages. Standard object''s\n          metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSetSpec'\n        description: 'Spec defines the specification of the desired behavior of the\n          ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSetStatus'\n        description: 'Status is the most recently observed status of the ReplicaSet.\n          This data may be out of date by some window of time. Populated by the system.\n          Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ReplicaSet\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.ReplicaSetCondition:\n    description: ReplicaSetCondition describes the state of a replica set at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of replica set condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1beta2.ReplicaSetList:\n    description: ReplicaSetList is a collection of ReplicaSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller'\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: ReplicaSetList\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.ReplicaSetSpec:\n    description: ReplicaSetSpec is the specification of a ReplicaSet.\n    properties:\n      minReadySeconds:\n        description: Minimum number of seconds for which a newly created pod should\n          be ready without any of its container crashing, for it to be considered\n          available. Defaults to 0 (pod will be considered available as soon as it\n          is ready)\n        format: int32\n        type: integer\n      replicas:\n        description: 'Replicas is the number of desired replicas. This is a pointer\n          to distinguish between explicit zero and unspecified. Defaults to 1. More\n          info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller'\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'Selector is a label query over pods that should match the replica\n          count. Label keys and values that must match in order to be controlled by\n          this replica set. It must match the pod template''s labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: 'Template is the object that describes the pod that will be created\n          if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template'\n    required:\n    - selector\n  io.k8s.api.apps.v1beta2.ReplicaSetStatus:\n    description: ReplicaSetStatus represents the current status of a ReplicaSet.\n    properties:\n      availableReplicas:\n        description: The number of available replicas (ready for at least minReadySeconds)\n          for this replica set.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a replica set's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.ReplicaSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      fullyLabeledReplicas:\n        description: The number of pods that have labels matching the labels of the\n          pod template of the replicaset.\n        format: int32\n        type: integer\n      observedGeneration:\n        description: ObservedGeneration reflects the generation of the most recently\n          observed ReplicaSet.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: The number of ready replicas for this replica set.\n        format: int32\n        type: integer\n      replicas:\n        description: 'Replicas is the most recently oberved number of replicas. More\n          info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller'\n        format: int32\n        type: integer\n    required:\n    - replicas\n  io.k8s.api.apps.v1beta2.RollingUpdateDaemonSet:\n    description: Spec to control the desired behavior of daemon set rolling update.\n    properties:\n      maxUnavailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of DaemonSet pods that can be unavailable\n          during the update. Value can be an absolute number (ex: 5) or a percentage\n          of total number of DaemonSet pods at the start of the update (ex: 10%).\n          Absolute number is calculated from percentage by rounding up. This cannot\n          be 0. Default value is 1. Example: when this is set to 30%, at most 30%\n          of the total number of nodes that should be running the daemon pod (i.e.\n          status.desiredNumberScheduled) can have their pods stopped for an update\n          at any given time. The update starts by stopping at most 30% of those DaemonSet\n          pods and then brings up new DaemonSet pods in their place. Once the new\n          pods are available, it then proceeds onto other DaemonSet pods, thus ensuring\n          that at least 70% of original number of DaemonSet pods are available at\n          all times during the update.'\n  io.k8s.api.apps.v1beta2.RollingUpdateDeployment:\n    description: Spec to control the desired behavior of rolling update.\n    properties:\n      maxSurge:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of pods that can be scheduled above the desired\n          number of pods. Value can be an absolute number (ex: 5) or a percentage\n          of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute\n          number is calculated from percentage by rounding up. Defaults to 25%. Example:\n          when this is set to 30%, the new ReplicaSet can be scaled up immediately\n          when the rolling update starts, such that the total number of old and new\n          pods do not exceed 130% of desired pods. Once old pods have been killed,\n          new ReplicaSet can be scaled up further, ensuring that total number of pods\n          running at any time during the update is atmost 130% of desired pods.'\n      maxUnavailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of pods that can be unavailable during the\n          update. Value can be an absolute number (ex: 5) or a percentage of desired\n          pods (ex: 10%). Absolute number is calculated from percentage by rounding\n          down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when\n          this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired\n          pods immediately when the rolling update starts. Once new pods are ready,\n          old ReplicaSet can be scaled down further, followed by scaling up the new\n          ReplicaSet, ensuring that the total number of pods available at all times\n          during the update is at least 70% of desired pods.'\n  io.k8s.api.apps.v1beta2.RollingUpdateStatefulSetStrategy:\n    description: RollingUpdateStatefulSetStrategy is used to communicate parameter\n      for RollingUpdateStatefulSetStrategyType.\n    properties:\n      partition:\n        description: Partition indicates the ordinal at which the StatefulSet should\n          be partitioned. Default value is 0.\n        format: int32\n        type: integer\n  io.k8s.api.apps.v1beta2.Scale:\n    description: Scale represents a scaling request for a resource.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.ScaleSpec'\n        description: 'defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.'\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.ScaleStatus'\n        description: 'current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.\n          Read-only.'\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: Scale\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.ScaleSpec:\n    description: ScaleSpec describes the attributes of a scale subresource\n    properties:\n      replicas:\n        description: desired number of instances for the scaled object.\n        format: int32\n        type: integer\n  io.k8s.api.apps.v1beta2.ScaleStatus:\n    description: ScaleStatus represents the current status of a scale subresource.\n    properties:\n      replicas:\n        description: actual number of observed instances of the scaled object.\n        format: int32\n        type: integer\n      selector:\n        additionalProperties:\n          type: string\n        description: 'label query over pods that should match the replicas count.\n          More info: http://kubernetes.io/docs/user-guide/labels#label-selectors'\n        type: object\n      targetSelector:\n        description: 'label selector for pods that should match the replicas count.\n          This is a serializated version of both map-based and more expressive set-based\n          selectors. This is done to avoid introspection in the clients. The string\n          will be in the same format as the query-param syntax. If the target type\n          only supports map-based selectors, both this field and map-based selector\n          field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n        type: string\n    required:\n    - replicas\n  io.k8s.api.apps.v1beta2.StatefulSet:\n    description: \"DEPRECATED - This group version of StatefulSet is deprecated by\\\n      \\ apps/v1/StatefulSet. See the release notes for more information. StatefulSet\\\n      \\ represents a set of pods with consistent identities. Identities are defined\\\n      \\ as:\\n - Network: A single stable DNS and hostname.\\n - Storage: As many VolumeClaims\\\n      \\ as requested.\\nThe StatefulSet guarantees that a given network identity will\\\n      \\ always map to the same storage identity.\"\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSetSpec'\n        description: Spec defines the desired identities of pods in this set.\n      status:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSetStatus'\n        description: Status is the current status of Pods in this StatefulSet. This\n          data may be out of date by some window of time.\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: StatefulSet\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.StatefulSetCondition:\n    description: StatefulSetCondition describes the state of a statefulset at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of statefulset condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.apps.v1beta2.StatefulSetList:\n    description: StatefulSetList is a collection of StatefulSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apps\n      kind: StatefulSetList\n      version: v1beta2\n  io.k8s.api.apps.v1beta2.StatefulSetSpec:\n    description: A StatefulSetSpec is the specification of a StatefulSet.\n    properties:\n      podManagementPolicy:\n        description: podManagementPolicy controls how pods are created during initial\n          scale up, when replacing pods on nodes, or when scaling down. The default\n          policy is `OrderedReady`, where pods are created in increasing order (pod-0,\n          then pod-1, etc) and the controller will wait until each pod is ready before\n          continuing. When scaling down, the pods are removed in the opposite order.\n          The alternative policy is `Parallel` which will create pods in parallel\n          to match the desired scale without waiting, and on scale down will delete\n          all pods at once.\n        type: string\n      replicas:\n        description: replicas is the desired number of replicas of the given Template.\n          These are replicas in the sense that they are instantiations of the same\n          Template, but individual replicas also have a consistent identity. If unspecified,\n          defaults to 1.\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: revisionHistoryLimit is the maximum number of revisions that\n          will be maintained in the StatefulSet's revision history. The revision history\n          consists of all revisions not represented by a currently applied StatefulSetSpec\n          version. The default value is 10.\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'selector is a label query over pods that should match the replica\n          count. It must match the pod template''s labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      serviceName:\n        description: 'serviceName is the name of the service that governs this StatefulSet.\n          This service must exist before the StatefulSet, and is responsible for the\n          network identity of the set. Pods get DNS/hostnames that follow the pattern:\n          pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\"\n          is managed by the StatefulSet controller.'\n        type: string\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: template is the object that describes the pod that will be created\n          if insufficient replicas are detected. Each pod stamped out by the StatefulSet\n          will fulfill this Template, but have a unique identity from the rest of\n          the StatefulSet.\n      updateStrategy:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSetUpdateStrategy'\n        description: updateStrategy indicates the StatefulSetUpdateStrategy that will\n          be employed to update Pods in the StatefulSet when a revision is made to\n          Template.\n      volumeClaimTemplates:\n        description: volumeClaimTemplates is a list of claims that pods are allowed\n          to reference. The StatefulSet controller is responsible for mapping network\n          identities to claims in a way that maintains the identity of a pod. Every\n          claim in this list must have at least one matching (by name) volumeMount\n          in one container in the template. A claim in this list takes precedence\n          over any volumes in the template, with the same name.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        type: array\n    required:\n    - selector\n    - template\n    - serviceName\n  io.k8s.api.apps.v1beta2.StatefulSetStatus:\n    description: StatefulSetStatus represents the current state of a StatefulSet.\n    properties:\n      collisionCount:\n        description: collisionCount is the count of hash collisions for the StatefulSet.\n          The StatefulSet controller uses this field as a collision avoidance mechanism\n          when it needs to create the name for the newest ControllerRevision.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a statefulset's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.apps.v1beta2.StatefulSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      currentReplicas:\n        description: currentReplicas is the number of Pods created by the StatefulSet\n          controller from the StatefulSet version indicated by currentRevision.\n        format: int32\n        type: integer\n      currentRevision:\n        description: currentRevision, if not empty, indicates the version of the StatefulSet\n          used to generate Pods in the sequence [0,currentReplicas).\n        type: string\n      observedGeneration:\n        description: observedGeneration is the most recent generation observed for\n          this StatefulSet. It corresponds to the StatefulSet's generation, which\n          is updated on mutation by the API Server.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: readyReplicas is the number of Pods created by the StatefulSet\n          controller that have a Ready Condition.\n        format: int32\n        type: integer\n      replicas:\n        description: replicas is the number of Pods created by the StatefulSet controller.\n        format: int32\n        type: integer\n      updateRevision:\n        description: updateRevision, if not empty, indicates the version of the StatefulSet\n          used to generate Pods in the sequence [replicas-updatedReplicas,replicas)\n        type: string\n      updatedReplicas:\n        description: updatedReplicas is the number of Pods created by the StatefulSet\n          controller from the StatefulSet version indicated by updateRevision.\n        format: int32\n        type: integer\n    required:\n    - replicas\n  io.k8s.api.apps.v1beta2.StatefulSetUpdateStrategy:\n    description: StatefulSetUpdateStrategy indicates the strategy that the StatefulSet\n      controller will use to perform updates. It includes any additional parameters\n      necessary to perform the update for the indicated strategy.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.apps.v1beta2.RollingUpdateStatefulSetStrategy'\n        description: RollingUpdate is used to communicate parameters when Type is\n          RollingUpdateStatefulSetStrategyType.\n      type:\n        description: Type indicates the type of the StatefulSetUpdateStrategy. Default\n          is RollingUpdate.\n        type: string\n  io.k8s.api.authentication.v1.TokenReview:\n    description: 'TokenReview attempts to authenticate a token to a known user. Note:\n      TokenReview requests may be cached by the webhook token authenticator plugin\n      in the kube-apiserver.'\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReviewSpec'\n        description: Spec holds information about the request being evaluated\n      status:\n        $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReviewStatus'\n        description: Status is filled in by the server and indicates whether the request\n          can be authenticated.\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authentication.k8s.io\n      kind: TokenReview\n      version: v1\n  io.k8s.api.authentication.v1.TokenReviewSpec:\n    description: TokenReviewSpec is a description of the token authentication request.\n    properties:\n      token:\n        description: Token is the opaque bearer token.\n        type: string\n  io.k8s.api.authentication.v1.TokenReviewStatus:\n    description: TokenReviewStatus is the result of the token authentication request.\n    properties:\n      authenticated:\n        description: Authenticated indicates that the token was associated with a\n          known user.\n        type: boolean\n      error:\n        description: Error indicates that the token couldn't be checked\n        type: string\n      user:\n        $ref: '#/definitions/io.k8s.api.authentication.v1.UserInfo'\n        description: User is the UserInfo associated with the provided token.\n  io.k8s.api.authentication.v1.UserInfo:\n    description: UserInfo holds the information about the user needed to implement\n      the user.Info interface.\n    properties:\n      extra:\n        additionalProperties:\n          items:\n            type: string\n          type: array\n        description: Any additional information provided by the authenticator.\n        type: object\n      groups:\n        description: The names of groups this user is a part of.\n        items:\n          type: string\n        type: array\n      uid:\n        description: A unique value that identifies this user across time. If this\n          user is deleted and another user by the same name is added, they will have\n          different UIDs.\n        type: string\n      username:\n        description: The name that uniquely identifies this user among all active\n          users.\n        type: string\n  io.k8s.api.authentication.v1beta1.TokenReview:\n    description: 'TokenReview attempts to authenticate a token to a known user. Note:\n      TokenReview requests may be cached by the webhook token authenticator plugin\n      in the kube-apiserver.'\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReviewSpec'\n        description: Spec holds information about the request being evaluated\n      status:\n        $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReviewStatus'\n        description: Status is filled in by the server and indicates whether the request\n          can be authenticated.\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authentication.k8s.io\n      kind: TokenReview\n      version: v1beta1\n  io.k8s.api.authentication.v1beta1.TokenReviewSpec:\n    description: TokenReviewSpec is a description of the token authentication request.\n    properties:\n      token:\n        description: Token is the opaque bearer token.\n        type: string\n  io.k8s.api.authentication.v1beta1.TokenReviewStatus:\n    description: TokenReviewStatus is the result of the token authentication request.\n    properties:\n      authenticated:\n        description: Authenticated indicates that the token was associated with a\n          known user.\n        type: boolean\n      error:\n        description: Error indicates that the token couldn't be checked\n        type: string\n      user:\n        $ref: '#/definitions/io.k8s.api.authentication.v1beta1.UserInfo'\n        description: User is the UserInfo associated with the provided token.\n  io.k8s.api.authentication.v1beta1.UserInfo:\n    description: UserInfo holds the information about the user needed to implement\n      the user.Info interface.\n    properties:\n      extra:\n        additionalProperties:\n          items:\n            type: string\n          type: array\n        description: Any additional information provided by the authenticator.\n        type: object\n      groups:\n        description: The names of groups this user is a part of.\n        items:\n          type: string\n        type: array\n      uid:\n        description: A unique value that identifies this user across time. If this\n          user is deleted and another user by the same name is added, they will have\n          different UIDs.\n        type: string\n      username:\n        description: The name that uniquely identifies this user among all active\n          users.\n        type: string\n  io.k8s.api.authorization.v1.LocalSubjectAccessReview:\n    description: LocalSubjectAccessReview checks whether or not a user or group can\n      perform an action in a given namespace. Having a namespace scoped resource makes\n      it much easier to grant namespace scoped policy that includes permissions checking.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec'\n        description: Spec holds information about the request being evaluated.  spec.namespace\n          must be equal to the namespace you made the request against.  If empty,\n          it is defaulted.\n      status:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus'\n        description: Status is filled in by the server and indicates whether the request\n          is allowed or not\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authorization.k8s.io\n      kind: LocalSubjectAccessReview\n      version: v1\n  io.k8s.api.authorization.v1.NonResourceAttributes:\n    description: NonResourceAttributes includes the authorization attributes available\n      for non-resource requests to the Authorizer interface\n    properties:\n      path:\n        description: Path is the URL path of the request\n        type: string\n      verb:\n        description: Verb is the standard HTTP verb\n        type: string\n  io.k8s.api.authorization.v1.NonResourceRule:\n    description: NonResourceRule holds information that describes a rule for the non-resource\n    properties:\n      nonResourceURLs:\n        description: NonResourceURLs is a set of partial urls that a user should have\n          access to.  *s are allowed, but only as the full, final step in the path.  \"*\"\n          means all.\n        items:\n          type: string\n        type: array\n      verbs:\n        description: 'Verb is a list of kubernetes non-resource API verbs, like: get,\n          post, put, delete, patch, head, options.  \"*\" means all.'\n        items:\n          type: string\n        type: array\n    required:\n    - verbs\n  io.k8s.api.authorization.v1.ResourceAttributes:\n    description: ResourceAttributes includes the authorization attributes available\n      for resource requests to the Authorizer interface\n    properties:\n      group:\n        description: Group is the API Group of the Resource.  \"*\" means all.\n        type: string\n      name:\n        description: Name is the name of the resource being requested for a \"get\"\n          or deleted for a \"delete\". \"\" (empty) means all.\n        type: string\n      namespace:\n        description: Namespace is the namespace of the action being requested.  Currently,\n          there is no distinction between no namespace and all namespaces \"\" (empty)\n          is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped\n          resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview\n          or SelfSubjectAccessReview\n        type: string\n      resource:\n        description: Resource is one of the existing resource types.  \"*\" means all.\n        type: string\n      subresource:\n        description: Subresource is one of the existing resource types.  \"\" means\n          none.\n        type: string\n      verb:\n        description: 'Verb is a kubernetes resource API verb, like: get, list, watch,\n          create, update, delete, proxy.  \"*\" means all.'\n        type: string\n      version:\n        description: Version is the API Version of the Resource.  \"*\" means all.\n        type: string\n  io.k8s.api.authorization.v1.ResourceRule:\n    description: ResourceRule is the list of actions the subject is allowed to perform\n      on resources. The list ordering isn't significant, may contain duplicates, and\n      possibly be incomplete.\n    properties:\n      apiGroups:\n        description: APIGroups is the name of the APIGroup that contains the resources.  If\n          multiple API groups are specified, any action requested against one of the\n          enumerated resources in any API group will be allowed.  \"*\" means all.\n        items:\n          type: string\n        type: array\n      resourceNames:\n        description: ResourceNames is an optional white list of names that the rule\n          applies to.  An empty set means that everything is allowed.  \"*\" means all.\n        items:\n          type: string\n        type: array\n      resources:\n        description: \"Resources is a list of resources this rule applies to.  \\\"*\\\"\\\n          \\ means all in the specified apiGroups.\\n \\\"*/foo\\\" represents the subresource\\\n          \\ 'foo' for all resources in the specified apiGroups.\"\n        items:\n          type: string\n        type: array\n      verbs:\n        description: 'Verb is a list of kubernetes resource API verbs, like: get,\n          list, watch, create, update, delete, proxy.  \"*\" means all.'\n        items:\n          type: string\n        type: array\n    required:\n    - verbs\n  io.k8s.api.authorization.v1.SelfSubjectAccessReview:\n    description: SelfSubjectAccessReview checks whether or the current user can perform\n      an action.  Not filling in a spec.namespace means \"in all namespaces\".  Self\n      is a special case, because users should always be able to check whether they\n      can perform an action\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec'\n        description: Spec holds information about the request being evaluated.  user\n          and groups must be empty\n      status:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus'\n        description: Status is filled in by the server and indicates whether the request\n          is allowed or not\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authorization.k8s.io\n      kind: SelfSubjectAccessReview\n      version: v1\n  io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec:\n    description: SelfSubjectAccessReviewSpec is a description of the access request.  Exactly\n      one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes\n      must be set\n    properties:\n      nonResourceAttributes:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes'\n        description: NonResourceAttributes describes information for a non-resource\n          access request\n      resourceAttributes:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.ResourceAttributes'\n        description: ResourceAuthorizationAttributes describes information for a resource\n          access request\n  io.k8s.api.authorization.v1.SelfSubjectRulesReview:\n    description: SelfSubjectRulesReview enumerates the set of actions the current\n      user can perform within a namespace. The returned list of actions may be incomplete\n      depending on the server's authorization mode, and any errors experienced during\n      the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions,\n      or to quickly let an end user reason about their permissions. It should NOT\n      Be used by external systems to drive authorization decisions as this raises\n      confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview,\n      and LocalAccessReview are the correct way to defer authorization decisions to\n      the API server.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec'\n        description: Spec holds information about the request being evaluated.\n      status:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectRulesReviewStatus'\n        description: Status is filled in by the server and indicates the set of actions\n          a user can perform.\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authorization.k8s.io\n      kind: SelfSubjectRulesReview\n      version: v1\n  io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec:\n    properties:\n      namespace:\n        description: Namespace to evaluate rules for. Required.\n        type: string\n  io.k8s.api.authorization.v1.SubjectAccessReview:\n    description: SubjectAccessReview checks whether or not a user or group can perform\n      an action.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec'\n        description: Spec holds information about the request being evaluated\n      status:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus'\n        description: Status is filled in by the server and indicates whether the request\n          is allowed or not\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authorization.k8s.io\n      kind: SubjectAccessReview\n      version: v1\n  io.k8s.api.authorization.v1.SubjectAccessReviewSpec:\n    description: SubjectAccessReviewSpec is a description of the access request.  Exactly\n      one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes\n      must be set\n    properties:\n      extra:\n        additionalProperties:\n          items:\n            type: string\n          type: array\n        description: Extra corresponds to the user.Info.GetExtra() method from the\n          authenticator.  Since that is input to the authorizer it needs a reflection\n          here.\n        type: object\n      groups:\n        description: Groups is the groups you're testing for.\n        items:\n          type: string\n        type: array\n      nonResourceAttributes:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes'\n        description: NonResourceAttributes describes information for a non-resource\n          access request\n      resourceAttributes:\n        $ref: '#/definitions/io.k8s.api.authorization.v1.ResourceAttributes'\n        description: ResourceAuthorizationAttributes describes information for a resource\n          access request\n      uid:\n        description: UID information about the requesting user.\n        type: string\n      user:\n        description: User is the user you're testing for. If you specify \"User\" but\n          not \"Groups\", then is it interpreted as \"What if User were not a member\n          of any groups\n        type: string\n  io.k8s.api.authorization.v1.SubjectAccessReviewStatus:\n    description: SubjectAccessReviewStatus\n    properties:\n      allowed:\n        description: Allowed is required. True if the action would be allowed, false\n          otherwise.\n        type: boolean\n      denied:\n        description: Denied is optional. True if the action would be denied, otherwise\n          false. If both allowed is false and denied is false, then the authorizer\n          has no opinion on whether to authorize the action. Denied may not be true\n          if Allowed is true.\n        type: boolean\n      evaluationError:\n        description: EvaluationError is an indication that some error occurred during\n          the authorization check. It is entirely possible to get an error and be\n          able to continue determine authorization status in spite of it. For instance,\n          RBAC can be missing a role, but enough roles are still present and bound\n          to reason about the request.\n        type: string\n      reason:\n        description: Reason is optional.  It indicates why a request was allowed or\n          denied.\n        type: string\n    required:\n    - allowed\n  io.k8s.api.authorization.v1.SubjectRulesReviewStatus:\n    description: SubjectRulesReviewStatus contains the result of a rules check. This\n      check can be incomplete depending on the set of authorizers the server is configured\n      with and any errors experienced during evaluation. Because authorization rules\n      are additive, if a rule appears in a list it's safe to assume the subject has\n      that permission, even if that list is incomplete.\n    properties:\n      evaluationError:\n        description: EvaluationError can appear in combination with Rules. It indicates\n          an error occurred during rule evaluation, such as an authorizer that doesn't\n          support rule evaluation, and that ResourceRules and/or NonResourceRules\n          may be incomplete.\n        type: string\n      incomplete:\n        description: Incomplete is true when the rules returned by this call are incomplete.\n          This is most commonly encountered when an authorizer, such as an external\n          authorizer, doesn't support rules evaluation.\n        type: boolean\n      nonResourceRules:\n        description: NonResourceRules is the list of actions the subject is allowed\n          to perform on non-resources. The list ordering isn't significant, may contain\n          duplicates, and possibly be incomplete.\n        items:\n          $ref: '#/definitions/io.k8s.api.authorization.v1.NonResourceRule'\n        type: array\n      resourceRules:\n        description: ResourceRules is the list of actions the subject is allowed to\n          perform on resources. The list ordering isn't significant, may contain duplicates,\n          and possibly be incomplete.\n        items:\n          $ref: '#/definitions/io.k8s.api.authorization.v1.ResourceRule'\n        type: array\n    required:\n    - resourceRules\n    - nonResourceRules\n    - incomplete\n  io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview:\n    description: LocalSubjectAccessReview checks whether or not a user or group can\n      perform an action in a given namespace. Having a namespace scoped resource makes\n      it much easier to grant namespace scoped policy that includes permissions checking.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec'\n        description: Spec holds information about the request being evaluated.  spec.namespace\n          must be equal to the namespace you made the request against.  If empty,\n          it is defaulted.\n      status:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus'\n        description: Status is filled in by the server and indicates whether the request\n          is allowed or not\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authorization.k8s.io\n      kind: LocalSubjectAccessReview\n      version: v1beta1\n  io.k8s.api.authorization.v1beta1.NonResourceAttributes:\n    description: NonResourceAttributes includes the authorization attributes available\n      for non-resource requests to the Authorizer interface\n    properties:\n      path:\n        description: Path is the URL path of the request\n        type: string\n      verb:\n        description: Verb is the standard HTTP verb\n        type: string\n  io.k8s.api.authorization.v1beta1.NonResourceRule:\n    description: NonResourceRule holds information that describes a rule for the non-resource\n    properties:\n      nonResourceURLs:\n        description: NonResourceURLs is a set of partial urls that a user should have\n          access to.  *s are allowed, but only as the full, final step in the path.  \"*\"\n          means all.\n        items:\n          type: string\n        type: array\n      verbs:\n        description: 'Verb is a list of kubernetes non-resource API verbs, like: get,\n          post, put, delete, patch, head, options.  \"*\" means all.'\n        items:\n          type: string\n        type: array\n    required:\n    - verbs\n  io.k8s.api.authorization.v1beta1.ResourceAttributes:\n    description: ResourceAttributes includes the authorization attributes available\n      for resource requests to the Authorizer interface\n    properties:\n      group:\n        description: Group is the API Group of the Resource.  \"*\" means all.\n        type: string\n      name:\n        description: Name is the name of the resource being requested for a \"get\"\n          or deleted for a \"delete\". \"\" (empty) means all.\n        type: string\n      namespace:\n        description: Namespace is the namespace of the action being requested.  Currently,\n          there is no distinction between no namespace and all namespaces \"\" (empty)\n          is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped\n          resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview\n          or SelfSubjectAccessReview\n        type: string\n      resource:\n        description: Resource is one of the existing resource types.  \"*\" means all.\n        type: string\n      subresource:\n        description: Subresource is one of the existing resource types.  \"\" means\n          none.\n        type: string\n      verb:\n        description: 'Verb is a kubernetes resource API verb, like: get, list, watch,\n          create, update, delete, proxy.  \"*\" means all.'\n        type: string\n      version:\n        description: Version is the API Version of the Resource.  \"*\" means all.\n        type: string\n  io.k8s.api.authorization.v1beta1.ResourceRule:\n    description: ResourceRule is the list of actions the subject is allowed to perform\n      on resources. The list ordering isn't significant, may contain duplicates, and\n      possibly be incomplete.\n    properties:\n      apiGroups:\n        description: APIGroups is the name of the APIGroup that contains the resources.  If\n          multiple API groups are specified, any action requested against one of the\n          enumerated resources in any API group will be allowed.  \"*\" means all.\n        items:\n          type: string\n        type: array\n      resourceNames:\n        description: ResourceNames is an optional white list of names that the rule\n          applies to.  An empty set means that everything is allowed.  \"*\" means all.\n        items:\n          type: string\n        type: array\n      resources:\n        description: \"Resources is a list of resources this rule applies to.  \\\"*\\\"\\\n          \\ means all in the specified apiGroups.\\n \\\"*/foo\\\" represents the subresource\\\n          \\ 'foo' for all resources in the specified apiGroups.\"\n        items:\n          type: string\n        type: array\n      verbs:\n        description: 'Verb is a list of kubernetes resource API verbs, like: get,\n          list, watch, create, update, delete, proxy.  \"*\" means all.'\n        items:\n          type: string\n        type: array\n    required:\n    - verbs\n  io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview:\n    description: SelfSubjectAccessReview checks whether or the current user can perform\n      an action.  Not filling in a spec.namespace means \"in all namespaces\".  Self\n      is a special case, because users should always be able to check whether they\n      can perform an action\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec'\n        description: Spec holds information about the request being evaluated.  user\n          and groups must be empty\n      status:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus'\n        description: Status is filled in by the server and indicates whether the request\n          is allowed or not\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authorization.k8s.io\n      kind: SelfSubjectAccessReview\n      version: v1beta1\n  io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec:\n    description: SelfSubjectAccessReviewSpec is a description of the access request.  Exactly\n      one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes\n      must be set\n    properties:\n      nonResourceAttributes:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.NonResourceAttributes'\n        description: NonResourceAttributes describes information for a non-resource\n          access request\n      resourceAttributes:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.ResourceAttributes'\n        description: ResourceAuthorizationAttributes describes information for a resource\n          access request\n  io.k8s.api.authorization.v1beta1.SelfSubjectRulesReview:\n    description: SelfSubjectRulesReview enumerates the set of actions the current\n      user can perform within a namespace. The returned list of actions may be incomplete\n      depending on the server's authorization mode, and any errors experienced during\n      the evaluation. SelfSubjectRulesReview should be used by UIs to show/hide actions,\n      or to quickly let an end user reason about their permissions. It should NOT\n      Be used by external systems to drive authorization decisions as this raises\n      confused deputy, cache lifetime/revocation, and correctness concerns. SubjectAccessReview,\n      and LocalAccessReview are the correct way to defer authorization decisions to\n      the API server.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectRulesReviewSpec'\n        description: Spec holds information about the request being evaluated.\n      status:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectRulesReviewStatus'\n        description: Status is filled in by the server and indicates the set of actions\n          a user can perform.\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authorization.k8s.io\n      kind: SelfSubjectRulesReview\n      version: v1beta1\n  io.k8s.api.authorization.v1beta1.SelfSubjectRulesReviewSpec:\n    properties:\n      namespace:\n        description: Namespace to evaluate rules for. Required.\n        type: string\n  io.k8s.api.authorization.v1beta1.SubjectAccessReview:\n    description: SubjectAccessReview checks whether or not a user or group can perform\n      an action.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec'\n        description: Spec holds information about the request being evaluated\n      status:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus'\n        description: Status is filled in by the server and indicates whether the request\n          is allowed or not\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: authorization.k8s.io\n      kind: SubjectAccessReview\n      version: v1beta1\n  io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec:\n    description: SubjectAccessReviewSpec is a description of the access request.  Exactly\n      one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes\n      must be set\n    properties:\n      extra:\n        additionalProperties:\n          items:\n            type: string\n          type: array\n        description: Extra corresponds to the user.Info.GetExtra() method from the\n          authenticator.  Since that is input to the authorizer it needs a reflection\n          here.\n        type: object\n      group:\n        description: Groups is the groups you're testing for.\n        items:\n          type: string\n        type: array\n      nonResourceAttributes:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.NonResourceAttributes'\n        description: NonResourceAttributes describes information for a non-resource\n          access request\n      resourceAttributes:\n        $ref: '#/definitions/io.k8s.api.authorization.v1beta1.ResourceAttributes'\n        description: ResourceAuthorizationAttributes describes information for a resource\n          access request\n      uid:\n        description: UID information about the requesting user.\n        type: string\n      user:\n        description: User is the user you're testing for. If you specify \"User\" but\n          not \"Group\", then is it interpreted as \"What if User were not a member of\n          any groups\n        type: string\n  io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus:\n    description: SubjectAccessReviewStatus\n    properties:\n      allowed:\n        description: Allowed is required. True if the action would be allowed, false\n          otherwise.\n        type: boolean\n      denied:\n        description: Denied is optional. True if the action would be denied, otherwise\n          false. If both allowed is false and denied is false, then the authorizer\n          has no opinion on whether to authorize the action. Denied may not be true\n          if Allowed is true.\n        type: boolean\n      evaluationError:\n        description: EvaluationError is an indication that some error occurred during\n          the authorization check. It is entirely possible to get an error and be\n          able to continue determine authorization status in spite of it. For instance,\n          RBAC can be missing a role, but enough roles are still present and bound\n          to reason about the request.\n        type: string\n      reason:\n        description: Reason is optional.  It indicates why a request was allowed or\n          denied.\n        type: string\n    required:\n    - allowed\n  io.k8s.api.authorization.v1beta1.SubjectRulesReviewStatus:\n    description: SubjectRulesReviewStatus contains the result of a rules check. This\n      check can be incomplete depending on the set of authorizers the server is configured\n      with and any errors experienced during evaluation. Because authorization rules\n      are additive, if a rule appears in a list it's safe to assume the subject has\n      that permission, even if that list is incomplete.\n    properties:\n      evaluationError:\n        description: EvaluationError can appear in combination with Rules. It indicates\n          an error occurred during rule evaluation, such as an authorizer that doesn't\n          support rule evaluation, and that ResourceRules and/or NonResourceRules\n          may be incomplete.\n        type: string\n      incomplete:\n        description: Incomplete is true when the rules returned by this call are incomplete.\n          This is most commonly encountered when an authorizer, such as an external\n          authorizer, doesn't support rules evaluation.\n        type: boolean\n      nonResourceRules:\n        description: NonResourceRules is the list of actions the subject is allowed\n          to perform on non-resources. The list ordering isn't significant, may contain\n          duplicates, and possibly be incomplete.\n        items:\n          $ref: '#/definitions/io.k8s.api.authorization.v1beta1.NonResourceRule'\n        type: array\n      resourceRules:\n        description: ResourceRules is the list of actions the subject is allowed to\n          perform on resources. The list ordering isn't significant, may contain duplicates,\n          and possibly be incomplete.\n        items:\n          $ref: '#/definitions/io.k8s.api.authorization.v1beta1.ResourceRule'\n        type: array\n    required:\n    - resourceRules\n    - nonResourceRules\n    - incomplete\n  io.k8s.api.autoscaling.v1.CrossVersionObjectReference:\n    description: CrossVersionObjectReference contains enough information to let you\n      identify the referred resource.\n    properties:\n      apiVersion:\n        description: API version of the referent\n        type: string\n      kind:\n        description: 'Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds\"'\n        type: string\n      name:\n        description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n        type: string\n    required:\n    - kind\n    - name\n  io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler:\n    description: configuration of a horizontal pod autoscaler.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec'\n        description: 'behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.'\n      status:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus'\n        description: current information about the autoscaler.\n    x-kubernetes-group-version-kind:\n    - group: autoscaling\n      kind: HorizontalPodAutoscaler\n      version: v1\n  io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList:\n    description: list of horizontal pod autoscaler objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: list of horizontal pod autoscaler objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard list metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: autoscaling\n      kind: HorizontalPodAutoscalerList\n      version: v1\n  io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec:\n    description: specification of a horizontal pod autoscaler.\n    properties:\n      maxReplicas:\n        description: upper limit for the number of pods that can be set by the autoscaler;\n          cannot be smaller than MinReplicas.\n        format: int32\n        type: integer\n      minReplicas:\n        description: lower limit for the number of pods that can be set by the autoscaler,\n          default 1.\n        format: int32\n        type: integer\n      scaleTargetRef:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v1.CrossVersionObjectReference'\n        description: reference to scaled resource; horizontal pod autoscaler will\n          learn the current resource consumption and will set the desired number of\n          pods by using its Scale subresource.\n      targetCPUUtilizationPercentage:\n        description: target average CPU utilization (represented as a percentage of\n          requested CPU) over all the pods; if not specified the default autoscaling\n          policy will be used.\n        format: int32\n        type: integer\n    required:\n    - scaleTargetRef\n    - maxReplicas\n  io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus:\n    description: current status of a horizontal pod autoscaler\n    properties:\n      currentCPUUtilizationPercentage:\n        description: current average CPU utilization over all pods, represented as\n          a percentage of requested CPU, e.g. 70 means that an average pod is using\n          now 70% of its requested CPU.\n        format: int32\n        type: integer\n      currentReplicas:\n        description: current number of replicas of pods managed by this autoscaler.\n        format: int32\n        type: integer\n      desiredReplicas:\n        description: desired number of replicas of pods managed by this autoscaler.\n        format: int32\n        type: integer\n      lastScaleTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: last time the HorizontalPodAutoscaler scaled the number of pods;\n          used by the autoscaler to control how often the number of pods is changed.\n      observedGeneration:\n        description: most recent generation observed by this autoscaler.\n        format: int64\n        type: integer\n    required:\n    - currentReplicas\n    - desiredReplicas\n  io.k8s.api.autoscaling.v1.Scale:\n    description: Scale represents a scaling request for a resource.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.'\n      spec:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v1.ScaleSpec'\n        description: 'defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.'\n      status:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v1.ScaleStatus'\n        description: 'current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.\n          Read-only.'\n    x-kubernetes-group-version-kind:\n    - group: autoscaling\n      kind: Scale\n      version: v1\n  io.k8s.api.autoscaling.v1.ScaleSpec:\n    description: ScaleSpec describes the attributes of a scale subresource.\n    properties:\n      replicas:\n        description: desired number of instances for the scaled object.\n        format: int32\n        type: integer\n  io.k8s.api.autoscaling.v1.ScaleStatus:\n    description: ScaleStatus represents the current status of a scale subresource.\n    properties:\n      replicas:\n        description: actual number of observed instances of the scaled object.\n        format: int32\n        type: integer\n      selector:\n        description: 'label query over pods that should match the replicas count.\n          This is same as the label selector but in the string format to avoid introspection\n          by clients. The string will be in the same format as the query-param syntax.\n          More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors'\n        type: string\n    required:\n    - replicas\n  io.k8s.api.autoscaling.v2beta1.CrossVersionObjectReference:\n    description: CrossVersionObjectReference contains enough information to let you\n      identify the referred resource.\n    properties:\n      apiVersion:\n        description: API version of the referent\n        type: string\n      kind:\n        description: 'Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds\"'\n        type: string\n      name:\n        description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n        type: string\n    required:\n    - kind\n    - name\n  io.k8s.api.autoscaling.v2beta1.ExternalMetricSource:\n    description: ExternalMetricSource indicates how to scale on a metric not associated\n      with any Kubernetes object (for example length of queue in cloud messaging service,\n      or QPS from loadbalancer running outside of cluster). Exactly one \"target\" type\n      should be set.\n    properties:\n      metricName:\n        description: metricName is the name of the metric in question.\n        type: string\n      metricSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: metricSelector is used to identify a specific time series within\n          a given metric.\n      targetAverageValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: targetAverageValue is the target per-pod value of global metric\n          (as a quantity). Mutually exclusive with TargetValue.\n      targetValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: targetValue is the target value of the metric (as a quantity).\n          Mutually exclusive with TargetAverageValue.\n    required:\n    - metricName\n  io.k8s.api.autoscaling.v2beta1.ExternalMetricStatus:\n    description: ExternalMetricStatus indicates the current value of a global metric\n      not associated with any Kubernetes object.\n    properties:\n      currentAverageValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: currentAverageValue is the current value of metric averaged over\n          autoscaled pods.\n      currentValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: currentValue is the current value of the metric (as a quantity)\n      metricName:\n        description: metricName is the name of a metric used for autoscaling in metric\n          system.\n        type: string\n      metricSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: metricSelector is used to identify a specific time series within\n          a given metric.\n    required:\n    - metricName\n    - currentValue\n  io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler:\n    description: HorizontalPodAutoscaler is the configuration for a horizontal pod\n      autoscaler, which automatically manages the replica count of any resource implementing\n      the scale subresource based on the metrics specified.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'metadata is the standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerSpec'\n        description: 'spec is the specification for the behaviour of the autoscaler.\n          More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.'\n      status:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerStatus'\n        description: status is the current information about the autoscaler.\n    x-kubernetes-group-version-kind:\n    - group: autoscaling\n      kind: HorizontalPodAutoscaler\n      version: v2beta1\n  io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerCondition:\n    description: HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler\n      at a certain point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: lastTransitionTime is the last time the condition transitioned\n          from one status to another\n      message:\n        description: message is a human-readable explanation containing details about\n          the transition\n        type: string\n      reason:\n        description: reason is the reason for the condition's last transition.\n        type: string\n      status:\n        description: status is the status of the condition (True, False, Unknown)\n        type: string\n      type:\n        description: type describes the current condition\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerList:\n    description: HorizontalPodAutoscaler is a list of horizontal pod autoscaler objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: items is the list of horizontal pod autoscaler objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscaler'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: metadata is the standard list metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: autoscaling\n      kind: HorizontalPodAutoscalerList\n      version: v2beta1\n  io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerSpec:\n    description: HorizontalPodAutoscalerSpec describes the desired functionality of\n      the HorizontalPodAutoscaler.\n    properties:\n      maxReplicas:\n        description: maxReplicas is the upper limit for the number of replicas to\n          which the autoscaler can scale up. It cannot be less that minReplicas.\n        format: int32\n        type: integer\n      metrics:\n        description: metrics contains the specifications for which to use to calculate\n          the desired replica count (the maximum replica count across all metrics\n          will be used).  The desired replica count is calculated multiplying the\n          ratio between the target value and the current value by the current number\n          of pods.  Ergo, metrics used must decrease as the pod count is increased,\n          and vice-versa.  See the individual metric source types for more information\n          about how each type of metric must respond.\n        items:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.MetricSpec'\n        type: array\n      minReplicas:\n        description: minReplicas is the lower limit for the number of replicas to\n          which the autoscaler can scale down. It defaults to 1 pod.\n        format: int32\n        type: integer\n      scaleTargetRef:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.CrossVersionObjectReference'\n        description: scaleTargetRef points to the target resource to scale, and is\n          used to the pods for which metrics should be collected, as well as to actually\n          change the replica count.\n    required:\n    - scaleTargetRef\n    - maxReplicas\n  io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerStatus:\n    description: HorizontalPodAutoscalerStatus describes the current status of a horizontal\n      pod autoscaler.\n    properties:\n      conditions:\n        description: conditions is the set of conditions required for this autoscaler\n          to scale its target, and indicates whether or not those conditions are met.\n        items:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.HorizontalPodAutoscalerCondition'\n        type: array\n      currentMetrics:\n        description: currentMetrics is the last read state of the metrics used by\n          this autoscaler.\n        items:\n          $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.MetricStatus'\n        type: array\n      currentReplicas:\n        description: currentReplicas is current number of replicas of pods managed\n          by this autoscaler, as last seen by the autoscaler.\n        format: int32\n        type: integer\n      desiredReplicas:\n        description: desiredReplicas is the desired number of replicas of pods managed\n          by this autoscaler, as last calculated by the autoscaler.\n        format: int32\n        type: integer\n      lastScaleTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: lastScaleTime is the last time the HorizontalPodAutoscaler scaled\n          the number of pods, used by the autoscaler to control how often the number\n          of pods is changed.\n      observedGeneration:\n        description: observedGeneration is the most recent generation observed by\n          this autoscaler.\n        format: int64\n        type: integer\n    required:\n    - currentReplicas\n    - desiredReplicas\n    - currentMetrics\n    - conditions\n  io.k8s.api.autoscaling.v2beta1.MetricSpec:\n    description: MetricSpec specifies how to scale based on a single metric (only\n      `type` and one other matching field should be set at once).\n    properties:\n      external:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.ExternalMetricSource'\n        description: external refers to a global metric that is not associated with\n          any Kubernetes object. It allows autoscaling based on information coming\n          from components running outside of cluster (for example length of queue\n          in cloud messaging service, or QPS from loadbalancer running outside of\n          cluster).\n      object:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.ObjectMetricSource'\n        description: object refers to a metric describing a single kubernetes object\n          (for example, hits-per-second on an Ingress object).\n      pods:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.PodsMetricSource'\n        description: pods refers to a metric describing each pod in the current scale\n          target (for example, transactions-processed-per-second).  The values will\n          be averaged together before being compared to the target value.\n      resource:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.ResourceMetricSource'\n        description: resource refers to a resource metric (such as those specified\n          in requests and limits) known to Kubernetes describing each pod in the current\n          scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes,\n          and have special scaling options on top of those available to normal per-pod\n          metrics using the \"pods\" source.\n      type:\n        description: type is the type of metric source.  It should be one of \"Object\",\n          \"Pods\" or \"Resource\", each mapping to a matching field in the object.\n        type: string\n    required:\n    - type\n  io.k8s.api.autoscaling.v2beta1.MetricStatus:\n    description: MetricStatus describes the last-read state of a single metric.\n    properties:\n      external:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.ExternalMetricStatus'\n        description: external refers to a global metric that is not associated with\n          any Kubernetes object. It allows autoscaling based on information coming\n          from components running outside of cluster (for example length of queue\n          in cloud messaging service, or QPS from loadbalancer running outside of\n          cluster).\n      object:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.ObjectMetricStatus'\n        description: object refers to a metric describing a single kubernetes object\n          (for example, hits-per-second on an Ingress object).\n      pods:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.PodsMetricStatus'\n        description: pods refers to a metric describing each pod in the current scale\n          target (for example, transactions-processed-per-second).  The values will\n          be averaged together before being compared to the target value.\n      resource:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.ResourceMetricStatus'\n        description: resource refers to a resource metric (such as those specified\n          in requests and limits) known to Kubernetes describing each pod in the current\n          scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes,\n          and have special scaling options on top of those available to normal per-pod\n          metrics using the \"pods\" source.\n      type:\n        description: type is the type of metric source.  It will be one of \"Object\",\n          \"Pods\" or \"Resource\", each corresponds to a matching field in the object.\n        type: string\n    required:\n    - type\n  io.k8s.api.autoscaling.v2beta1.ObjectMetricSource:\n    description: ObjectMetricSource indicates how to scale on a metric describing\n      a kubernetes object (for example, hits-per-second on an Ingress object).\n    properties:\n      metricName:\n        description: metricName is the name of the metric in question.\n        type: string\n      target:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.CrossVersionObjectReference'\n        description: target is the described Kubernetes object.\n      targetValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: targetValue is the target value of the metric (as a quantity).\n    required:\n    - target\n    - metricName\n    - targetValue\n  io.k8s.api.autoscaling.v2beta1.ObjectMetricStatus:\n    description: ObjectMetricStatus indicates the current value of a metric describing\n      a kubernetes object (for example, hits-per-second on an Ingress object).\n    properties:\n      currentValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: currentValue is the current value of the metric (as a quantity).\n      metricName:\n        description: metricName is the name of the metric in question.\n        type: string\n      target:\n        $ref: '#/definitions/io.k8s.api.autoscaling.v2beta1.CrossVersionObjectReference'\n        description: target is the described Kubernetes object.\n    required:\n    - target\n    - metricName\n    - currentValue\n  io.k8s.api.autoscaling.v2beta1.PodsMetricSource:\n    description: PodsMetricSource indicates how to scale on a metric describing each\n      pod in the current scale target (for example, transactions-processed-per-second).\n      The values will be averaged together before being compared to the target value.\n    properties:\n      metricName:\n        description: metricName is the name of the metric in question\n        type: string\n      targetAverageValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: targetAverageValue is the target value of the average of the\n          metric across all relevant pods (as a quantity)\n    required:\n    - metricName\n    - targetAverageValue\n  io.k8s.api.autoscaling.v2beta1.PodsMetricStatus:\n    description: PodsMetricStatus indicates the current value of a metric describing\n      each pod in the current scale target (for example, transactions-processed-per-second).\n    properties:\n      currentAverageValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: currentAverageValue is the current value of the average of the\n          metric across all relevant pods (as a quantity)\n      metricName:\n        description: metricName is the name of the metric in question\n        type: string\n    required:\n    - metricName\n    - currentAverageValue\n  io.k8s.api.autoscaling.v2beta1.ResourceMetricSource:\n    description: ResourceMetricSource indicates how to scale on a resource metric\n      known to Kubernetes, as specified in requests and limits, describing each pod\n      in the current scale target (e.g. CPU or memory).  The values will be averaged\n      together before being compared to the target.  Such metrics are built in to\n      Kubernetes, and have special scaling options on top of those available to normal\n      per-pod metrics using the \"pods\" source.  Only one \"target\" type should be set.\n    properties:\n      name:\n        description: name is the name of the resource in question.\n        type: string\n      targetAverageUtilization:\n        description: targetAverageUtilization is the target value of the average of\n          the resource metric across all relevant pods, represented as a percentage\n          of the requested value of the resource for the pods.\n        format: int32\n        type: integer\n      targetAverageValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: targetAverageValue is the target value of the average of the\n          resource metric across all relevant pods, as a raw value (instead of as\n          a percentage of the request), similar to the \"pods\" metric source type.\n    required:\n    - name\n  io.k8s.api.autoscaling.v2beta1.ResourceMetricStatus:\n    description: ResourceMetricStatus indicates the current value of a resource metric\n      known to Kubernetes, as specified in requests and limits, describing each pod\n      in the current scale target (e.g. CPU or memory).  Such metrics are built in\n      to Kubernetes, and have special scaling options on top of those available to\n      normal per-pod metrics using the \"pods\" source.\n    properties:\n      currentAverageUtilization:\n        description: currentAverageUtilization is the current value of the average\n          of the resource metric across all relevant pods, represented as a percentage\n          of the requested value of the resource for the pods.  It will only be present\n          if `targetAverageValue` was set in the corresponding metric specification.\n        format: int32\n        type: integer\n      currentAverageValue:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: currentAverageValue is the current value of the average of the\n          resource metric across all relevant pods, as a raw value (instead of as\n          a percentage of the request), similar to the \"pods\" metric source type.\n          It will always be set, regardless of the corresponding metric specification.\n      name:\n        description: name is the name of the resource in question.\n        type: string\n    required:\n    - name\n    - currentAverageValue\n  io.k8s.api.batch.v1.Job:\n    description: Job represents the configuration of a single job.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.batch.v1.JobSpec'\n        description: 'Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.batch.v1.JobStatus'\n        description: 'Current status of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: batch\n      kind: Job\n      version: v1\n  io.k8s.api.batch.v1.JobCondition:\n    description: JobCondition describes current state of a job.\n    properties:\n      lastProbeTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition was checked.\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transit from one status to another.\n      message:\n        description: Human readable message indicating details about last transition.\n        type: string\n      reason:\n        description: (brief) reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of job condition, Complete or Failed.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.batch.v1.JobList:\n    description: JobList is a collection of jobs.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: items is the list of Jobs.\n        items:\n          $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: batch\n      kind: JobList\n      version: v1\n  io.k8s.api.batch.v1.JobSpec:\n    description: JobSpec describes how the job execution will look like.\n    properties:\n      activeDeadlineSeconds:\n        description: Specifies the duration in seconds relative to the startTime that\n          the job may be active before the system tries to terminate it; value must\n          be positive integer\n        format: int64\n        type: integer\n      backoffLimit:\n        description: Specifies the number of retries before marking this job failed.\n          Defaults to 6\n        format: int32\n        type: integer\n      completions:\n        description: 'Specifies the desired number of successfully finished pods the\n          job should be run with.  Setting to nil means that the success of any pod\n          signals the success of all pods, and allows parallelism to have any positive\n          value.  Setting to 1 means that parallelism is limited to 1 and the success\n          of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/'\n        format: int32\n        type: integer\n      manualSelector:\n        description: 'manualSelector controls generation of pod labels and pod selectors.\n          Leave `manualSelector` unset unless you are certain what you are doing.\n          When false or unset, the system pick labels unique to this job and appends\n          those labels to the pod template.  When true, the user is responsible for\n          picking unique labels and specifying the selector.  Failure to pick a unique\n          label may cause this and other jobs to not function correctly.  However,\n          You may see `manualSelector=true` in jobs that were created with the old\n          `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector'\n        type: boolean\n      parallelism:\n        description: 'Specifies the maximum desired number of pods the job should\n          run at any given time. The actual number of pods running in steady state\n          will be less than this number when ((.spec.completions - .status.successful)\n          < .spec.parallelism), i.e. when the work left to do is less than max parallelism.\n          More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/'\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'A label query over pods that should match the pod count. Normally,\n          the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: 'Describes the pod that will be created when executing a job.\n          More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/'\n    required:\n    - template\n  io.k8s.api.batch.v1.JobStatus:\n    description: JobStatus represents the current state of a Job.\n    properties:\n      active:\n        description: The number of actively running pods.\n        format: int32\n        type: integer\n      completionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Represents time when the job was completed. It is not guaranteed\n          to be set in happens-before order across separate operations. It is represented\n          in RFC3339 form and is in UTC.\n      conditions:\n        description: 'The latest available observations of an object''s current state.\n          More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/'\n        items:\n          $ref: '#/definitions/io.k8s.api.batch.v1.JobCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      failed:\n        description: The number of pods which reached phase Failed.\n        format: int32\n        type: integer\n      startTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Represents time when the job was acknowledged by the job controller.\n          It is not guaranteed to be set in happens-before order across separate operations.\n          It is represented in RFC3339 form and is in UTC.\n      succeeded:\n        description: The number of pods which reached phase Succeeded.\n        format: int32\n        type: integer\n  io.k8s.api.batch.v1beta1.CronJob:\n    description: CronJob represents the configuration of a single cron job.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJobSpec'\n        description: 'Specification of the desired behavior of a cron job, including\n          the schedule. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJobStatus'\n        description: 'Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: batch\n      kind: CronJob\n      version: v1beta1\n  io.k8s.api.batch.v1beta1.CronJobList:\n    description: CronJobList is a collection of cron jobs.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: items is the list of CronJobs.\n        items:\n          $ref: '#/definitions/io.k8s.api.batch.v1beta1.CronJob'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: batch\n      kind: CronJobList\n      version: v1beta1\n  io.k8s.api.batch.v1beta1.CronJobSpec:\n    description: CronJobSpec describes how the job execution will look like and when\n      it will actually run.\n    properties:\n      concurrencyPolicy:\n        description: 'Specifies how to treat concurrent executions of a Job. Valid\n          values are: - \"Allow\" (default): allows CronJobs to run concurrently; -\n          \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn''t\n          finished yet; - \"Replace\": cancels currently running job and replaces it\n          with a new one'\n        type: string\n      failedJobsHistoryLimit:\n        description: The number of failed finished jobs to retain. This is a pointer\n          to distinguish between explicit zero and not specified. Defaults to 1.\n        format: int32\n        type: integer\n      jobTemplate:\n        $ref: '#/definitions/io.k8s.api.batch.v1beta1.JobTemplateSpec'\n        description: Specifies the job that will be created when executing a CronJob.\n      schedule:\n        description: The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.\n        type: string\n      startingDeadlineSeconds:\n        description: Optional deadline in seconds for starting the job if it misses\n          scheduled time for any reason.  Missed jobs executions will be counted as\n          failed ones.\n        format: int64\n        type: integer\n      successfulJobsHistoryLimit:\n        description: The number of successful finished jobs to retain. This is a pointer\n          to distinguish between explicit zero and not specified. Defaults to 3.\n        format: int32\n        type: integer\n      suspend:\n        description: This flag tells the controller to suspend subsequent executions,\n          it does not apply to already started executions.  Defaults to false.\n        type: boolean\n    required:\n    - schedule\n    - jobTemplate\n  io.k8s.api.batch.v1beta1.CronJobStatus:\n    description: CronJobStatus represents the current state of a cron job.\n    properties:\n      active:\n        description: A list of pointers to currently running jobs.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        type: array\n      lastScheduleTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Information when was the last time the job was successfully scheduled.\n  io.k8s.api.batch.v1beta1.JobTemplateSpec:\n    description: JobTemplateSpec describes the data a Job should have when created\n      from a template\n    properties:\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata of the jobs created from this template.\n          More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.batch.v1.JobSpec'\n        description: 'Specification of the desired behavior of the job. More info:\n          https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n  io.k8s.api.batch.v2alpha1.CronJob:\n    description: CronJob represents the configuration of a single cron job.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJobSpec'\n        description: 'Specification of the desired behavior of a cron job, including\n          the schedule. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJobStatus'\n        description: 'Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: batch\n      kind: CronJob\n      version: v2alpha1\n  io.k8s.api.batch.v2alpha1.CronJobList:\n    description: CronJobList is a collection of cron jobs.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: items is the list of CronJobs.\n        items:\n          $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: batch\n      kind: CronJobList\n      version: v2alpha1\n  io.k8s.api.batch.v2alpha1.CronJobSpec:\n    description: CronJobSpec describes how the job execution will look like and when\n      it will actually run.\n    properties:\n      concurrencyPolicy:\n        description: 'Specifies how to treat concurrent executions of a Job. Valid\n          values are: - \"Allow\" (default): allows CronJobs to run concurrently; -\n          \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn''t\n          finished yet; - \"Replace\": cancels currently running job and replaces it\n          with a new one'\n        type: string\n      failedJobsHistoryLimit:\n        description: The number of failed finished jobs to retain. This is a pointer\n          to distinguish between explicit zero and not specified.\n        format: int32\n        type: integer\n      jobTemplate:\n        $ref: '#/definitions/io.k8s.api.batch.v2alpha1.JobTemplateSpec'\n        description: Specifies the job that will be created when executing a CronJob.\n      schedule:\n        description: The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.\n        type: string\n      startingDeadlineSeconds:\n        description: Optional deadline in seconds for starting the job if it misses\n          scheduled time for any reason.  Missed jobs executions will be counted as\n          failed ones.\n        format: int64\n        type: integer\n      successfulJobsHistoryLimit:\n        description: The number of successful finished jobs to retain. This is a pointer\n          to distinguish between explicit zero and not specified.\n        format: int32\n        type: integer\n      suspend:\n        description: This flag tells the controller to suspend subsequent executions,\n          it does not apply to already started executions.  Defaults to false.\n        type: boolean\n    required:\n    - schedule\n    - jobTemplate\n  io.k8s.api.batch.v2alpha1.CronJobStatus:\n    description: CronJobStatus represents the current state of a cron job.\n    properties:\n      active:\n        description: A list of pointers to currently running jobs.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        type: array\n      lastScheduleTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Information when was the last time the job was successfully scheduled.\n  io.k8s.api.batch.v2alpha1.JobTemplateSpec:\n    description: JobTemplateSpec describes the data a Job should have when created\n      from a template\n    properties:\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata of the jobs created from this template.\n          More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.batch.v1.JobSpec'\n        description: 'Specification of the desired behavior of the job. More info:\n          https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n  io.k8s.api.certificates.v1beta1.CertificateSigningRequest:\n    description: Describes a certificate signing request\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestSpec'\n        description: The certificate request itself and any additional information.\n      status:\n        $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestStatus'\n        description: Derived information about the request.\n    x-kubernetes-group-version-kind:\n    - group: certificates.k8s.io\n      kind: CertificateSigningRequest\n      version: v1beta1\n  io.k8s.api.certificates.v1beta1.CertificateSigningRequestCondition:\n    properties:\n      lastUpdateTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: timestamp for the last update to this condition\n      message:\n        description: human readable message with details about the request state\n        type: string\n      reason:\n        description: brief reason for the request state\n        type: string\n      type:\n        description: request approval state, currently Approved or Denied.\n        type: string\n    required:\n    - type\n  io.k8s.api.certificates.v1beta1.CertificateSigningRequestList:\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        items:\n          $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: certificates.k8s.io\n      kind: CertificateSigningRequestList\n      version: v1beta1\n  io.k8s.api.certificates.v1beta1.CertificateSigningRequestSpec:\n    description: This information is immutable after the request is created. Only\n      the Request and Usages fields can be set on creation, other fields are derived\n      by Kubernetes and cannot be modified by users.\n    properties:\n      extra:\n        additionalProperties:\n          items:\n            type: string\n          type: array\n        description: Extra information about the requesting user. See user.Info interface\n          for details.\n        type: object\n      groups:\n        description: Group information about the requesting user. See user.Info interface\n          for details.\n        items:\n          type: string\n        type: array\n      request:\n        description: Base64-encoded PKCS#10 CSR data\n        format: byte\n        type: string\n      uid:\n        description: UID information about the requesting user. See user.Info interface\n          for details.\n        type: string\n      usages:\n        description: \"allowedUsages specifies a set of usage contexts the key will\\\n          \\ be valid for. See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3\\n\\\n          \\     https://tools.ietf.org/html/rfc5280#section-4.2.1.12\"\n        items:\n          type: string\n        type: array\n      username:\n        description: Information about the requesting user. See user.Info interface\n          for details.\n        type: string\n    required:\n    - request\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.APIVersion:\n    description: An APIVersion represents a single concrete version of an object model.\n    properties:\n      name:\n        description: Name of this version (e.g. 'v1').\n        type: string\n  io.k8s.api.certificates.v1beta1.CertificateSigningRequestStatus:\n    properties:\n      certificate:\n        description: If request was approved, the controller will place the issued\n          certificate here.\n        format: byte\n        type: string\n      conditions:\n        description: Conditions applied to the request, such as approval or denial.\n        items:\n          $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestCondition'\n        type: array\n  io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource:\n    description: 'Represents a Persistent Disk resource in AWS.\n\n\n      An AWS EBS disk must exist before mounting to a container. The disk must also\n      be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted\n      as read/write once. AWS EBS volumes support ownership management and SELinux\n      relabeling.'\n    properties:\n      fsType:\n        description: 'Filesystem type of the volume that you want to mount. Tip: Ensure\n          that the filesystem type is supported by the host operating system. Examples:\n          \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n          More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n        type: string\n      partition:\n        description: 'The partition in the volume that you want to mount. If omitted,\n          the default is to mount by volume name. Examples: For volume /dev/sda1,\n          you specify the partition as \"1\". Similarly, the volume partition for /dev/sda\n          is \"0\" (or you can leave the property empty).'\n        format: int32\n        type: integer\n      readOnly:\n        description: 'Specify \"true\" to force and set the ReadOnly property in VolumeMounts\n          to \"true\". If omitted, the default is \"false\". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n        type: boolean\n      volumeID:\n        description: 'Unique ID of the persistent disk resource in AWS (Amazon EBS\n          volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n        type: string\n    required:\n    - volumeID\n  io.k8s.api.core.v1.Affinity:\n    description: Affinity is a group of affinity scheduling rules.\n    properties:\n      nodeAffinity:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeAffinity'\n        description: Describes node affinity scheduling rules for the pod.\n      podAffinity:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodAffinity'\n        description: Describes pod affinity scheduling rules (e.g. co-locate this\n          pod in the same node, zone, etc. as some other pod(s)).\n      podAntiAffinity:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodAntiAffinity'\n        description: Describes pod anti-affinity scheduling rules (e.g. avoid putting\n          this pod in the same node, zone, etc. as some other pod(s)).\n  io.k8s.api.core.v1.AttachedVolume:\n    description: AttachedVolume describes a volume attached to a node\n    properties:\n      devicePath:\n        description: DevicePath represents the device path where the volume should\n          be available\n        type: string\n      name:\n        description: Name of the attached volume\n        type: string\n    required:\n    - name\n    - devicePath\n  io.k8s.api.core.v1.AzureDiskVolumeSource:\n    description: AzureDisk represents an Azure Data Disk mount on the host and bind\n      mount to the pod.\n    properties:\n      cachingMode:\n        description: 'Host Caching mode: None, Read Only, Read Write.'\n        type: string\n      diskName:\n        description: The Name of the data disk in the blob storage\n        type: string\n      diskURI:\n        description: The URI the data disk in the blob storage\n        type: string\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred\n          to be \"ext4\" if unspecified.\n        type: string\n      kind:\n        description: 'Expected values Shared: multiple blob disks per storage account  Dedicated:\n          single blob disk per storage account  Managed: azure managed data disk (only\n          in managed availability set). defaults to shared'\n        type: string\n      readOnly:\n        description: Defaults to false (read/write). ReadOnly here will force the\n          ReadOnly setting in VolumeMounts.\n        type: boolean\n    required:\n    - diskName\n    - diskURI\n  io.k8s.api.core.v1.AzureFilePersistentVolumeSource:\n    description: AzureFile represents an Azure File Service mount on the host and\n      bind mount to the pod.\n    properties:\n      readOnly:\n        description: Defaults to false (read/write). ReadOnly here will force the\n          ReadOnly setting in VolumeMounts.\n        type: boolean\n      secretName:\n        description: the name of secret that contains Azure Storage Account Name and\n          Key\n        type: string\n      secretNamespace:\n        description: the namespace of the secret that contains Azure Storage Account\n          Name and Key default is the same as the Pod\n        type: string\n      shareName:\n        description: Share Name\n        type: string\n    required:\n    - secretName\n    - shareName\n  io.k8s.api.core.v1.AzureFileVolumeSource:\n    description: AzureFile represents an Azure File Service mount on the host and\n      bind mount to the pod.\n    properties:\n      readOnly:\n        description: Defaults to false (read/write). ReadOnly here will force the\n          ReadOnly setting in VolumeMounts.\n        type: boolean\n      secretName:\n        description: the name of secret that contains Azure Storage Account Name and\n          Key\n        type: string\n      shareName:\n        description: Share Name\n        type: string\n    required:\n    - secretName\n    - shareName\n  io.k8s.api.core.v1.Binding:\n    description: Binding ties one object to another; for example, a pod is bound to\n      a node by a scheduler. Deprecated in 1.7, please use the bindings subresource\n      of pods instead.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      target:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        description: The target object that you want to bind to the standard object.\n    required:\n    - target\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Binding\n      version: v1\n  io.k8s.api.core.v1.CSIPersistentVolumeSource:\n    description: Represents storage that is managed by an external CSI volume driver\n      (Beta feature)\n    properties:\n      controllerPublishSecretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: ControllerPublishSecretRef is a reference to the secret object\n          containing sensitive information to pass to the CSI driver to complete the\n          CSI ControllerPublishVolume and ControllerUnpublishVolume calls. This field\n          is optional, and  may be empty if no secret is required. If the secret object\n          contains more than one secret, all secrets are passed.\n      driver:\n        description: Driver is the name of the driver to use for this volume. Required.\n        type: string\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\".\n        type: string\n      nodePublishSecretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: NodePublishSecretRef is a reference to the secret object containing\n          sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume\n          and NodeUnpublishVolume calls. This field is optional, and  may be empty\n          if no secret is required. If the secret object contains more than one secret,\n          all secrets are passed.\n      nodeStageSecretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: NodeStageSecretRef is a reference to the secret object containing\n          sensitive information to pass to the CSI driver to complete the CSI NodeStageVolume\n          and NodeStageVolume and NodeUnstageVolume calls. This field is optional,\n          and  may be empty if no secret is required. If the secret object contains\n          more than one secret, all secrets are passed.\n      readOnly:\n        description: 'Optional: The value to pass to ControllerPublishVolumeRequest.\n          Defaults to false (read/write).'\n        type: boolean\n      volumeAttributes:\n        additionalProperties:\n          type: string\n        description: Attributes of the volume to publish.\n        type: object\n      volumeHandle:\n        description: \"VolumeHandle is the unique volume name returned by the CSI volume\\\n          \\ plugin\\u2019s CreateVolume to refer to the volume on all subsequent calls.\\\n          \\ Required.\"\n        type: string\n    required:\n    - driver\n    - volumeHandle\n  io.k8s.api.core.v1.Capabilities:\n    description: Adds and removes POSIX capabilities from running containers.\n    properties:\n      add:\n        description: Added capabilities\n        items:\n          type: string\n        type: array\n      drop:\n        description: Removed capabilities\n        items:\n          type: string\n        type: array\n  io.k8s.api.core.v1.CephFSPersistentVolumeSource:\n    description: Represents a Ceph Filesystem mount that lasts the lifetime of a pod\n      Cephfs volumes do not support ownership management or SELinux relabeling.\n    properties:\n      monitors:\n        description: 'Required: Monitors is a collection of Ceph monitors More info:\n          https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n        items:\n          type: string\n        type: array\n      path:\n        description: 'Optional: Used as the mounted root, rather than the full Ceph\n          tree, default is /'\n        type: string\n      readOnly:\n        description: 'Optional: Defaults to false (read/write). ReadOnly here will\n          force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n        type: boolean\n      secretFile:\n        description: 'Optional: SecretFile is the path to key ring for User, default\n          is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n        type: string\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: 'Optional: SecretRef is reference to the authentication secret\n          for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n      user:\n        description: 'Optional: User is the rados user name, default is admin More\n          info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n        type: string\n    required:\n    - monitors\n  io.k8s.api.core.v1.CephFSVolumeSource:\n    description: Represents a Ceph Filesystem mount that lasts the lifetime of a pod\n      Cephfs volumes do not support ownership management or SELinux relabeling.\n    properties:\n      monitors:\n        description: 'Required: Monitors is a collection of Ceph monitors More info:\n          https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n        items:\n          type: string\n        type: array\n      path:\n        description: 'Optional: Used as the mounted root, rather than the full Ceph\n          tree, default is /'\n        type: string\n      readOnly:\n        description: 'Optional: Defaults to false (read/write). ReadOnly here will\n          force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n        type: boolean\n      secretFile:\n        description: 'Optional: SecretFile is the path to key ring for User, default\n          is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n        type: string\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        description: 'Optional: SecretRef is reference to the authentication secret\n          for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n      user:\n        description: 'Optional: User is the rados user name, default is admin More\n          info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it'\n        type: string\n    required:\n    - monitors\n  io.k8s.api.core.v1.CinderPersistentVolumeSource:\n    description: Represents a cinder volume resource in Openstack. A Cinder volume\n      must exist before mounting to a container. The volume must also be in the same\n      region as the kubelet. Cinder volumes support ownership management and SELinux\n      relabeling.\n    properties:\n      fsType:\n        description: 'Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly\n          inferred to be \"ext4\" if unspecified. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md'\n        type: string\n      readOnly:\n        description: 'Optional: Defaults to false (read/write). ReadOnly here will\n          force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md'\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: 'Optional: points to a secret object containing parameters used\n          to connect to OpenStack.'\n      volumeID:\n        description: 'volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md'\n        type: string\n    required:\n    - volumeID\n  io.k8s.api.core.v1.CinderVolumeSource:\n    description: Represents a cinder volume resource in Openstack. A Cinder volume\n      must exist before mounting to a container. The volume must also be in the same\n      region as the kubelet. Cinder volumes support ownership management and SELinux\n      relabeling.\n    properties:\n      fsType:\n        description: 'Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly\n          inferred to be \"ext4\" if unspecified. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md'\n        type: string\n      readOnly:\n        description: 'Optional: Defaults to false (read/write). ReadOnly here will\n          force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md'\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        description: 'Optional: points to a secret object containing parameters used\n          to connect to OpenStack.'\n      volumeID:\n        description: 'volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md'\n        type: string\n    required:\n    - volumeID\n  io.k8s.api.core.v1.ClientIPConfig:\n    description: ClientIPConfig represents the configurations of Client IP based session\n      affinity.\n    properties:\n      timeoutSeconds:\n        description: timeoutSeconds specifies the seconds of ClientIP type session\n          sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity\n          == \"ClientIP\". Default value is 10800(for 3 hours).\n        format: int32\n        type: integer\n  io.k8s.api.core.v1.ComponentCondition:\n    description: Information about the condition of a component.\n    properties:\n      error:\n        description: Condition error code for a component. For example, a health check\n          error code.\n        type: string\n      message:\n        description: Message about the condition for a component. For example, information\n          about a health check.\n        type: string\n      status:\n        description: 'Status of the condition for a component. Valid values for \"Healthy\":\n          \"True\", \"False\", or \"Unknown\".'\n        type: string\n      type:\n        description: 'Type of condition for a component. Valid value: \"Healthy\"'\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.core.v1.ComponentStatus:\n    description: ComponentStatus (and ComponentStatusList) holds the cluster validation\n      info.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      conditions:\n        description: List of component conditions observed\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ComponentCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ComponentStatus\n      version: v1\n  io.k8s.api.core.v1.ComponentStatusList:\n    description: Status of all the conditions for the component as a list of ComponentStatus\n      objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of ComponentStatus objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ComponentStatus'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ComponentStatusList\n      version: v1\n  io.k8s.api.core.v1.ConfigMap:\n    description: ConfigMap holds configuration data for pods to consume.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      binaryData:\n        additionalProperties:\n          format: byte\n          type: string\n        description: BinaryData contains the binary data. Each key must consist of\n          alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences\n          that are not in the UTF-8 range. The keys stored in BinaryData must not\n          overlap with the ones in the Data field, this is enforced during validation\n          process. Using this field will require 1.10+ apiserver and kubelet.\n        type: object\n      data:\n        additionalProperties:\n          type: string\n        description: Data contains the configuration data. Each key must consist of\n          alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences\n          must use the BinaryData field. The keys stored in Data must not overlap\n          with the keys in the BinaryData field, this is enforced during validation\n          process.\n        type: object\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ConfigMap\n      version: v1\n  io.k8s.api.core.v1.ConfigMapEnvSource:\n    description: 'ConfigMapEnvSource selects a ConfigMap to populate the environment\n      variables with.\n\n\n      The contents of the target ConfigMap''s Data field will represent the key-value\n      pairs as environment variables.'\n    properties:\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      optional:\n        description: Specify whether the ConfigMap must be defined\n        type: boolean\n  io.k8s.api.core.v1.ConfigMapKeySelector:\n    description: Selects a key from a ConfigMap.\n    properties:\n      key:\n        description: The key to select.\n        type: string\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      optional:\n        description: Specify whether the ConfigMap or it's key must be defined\n        type: boolean\n    required:\n    - key\n  io.k8s.api.core.v1.ConfigMapList:\n    description: ConfigMapList is a resource containing a list of ConfigMap objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of ConfigMaps.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ConfigMapList\n      version: v1\n  io.k8s.api.core.v1.ConfigMapNodeConfigSource:\n    description: ConfigMapNodeConfigSource contains the information to reference a\n      ConfigMap as a config source for the Node.\n    properties:\n      kubeletConfigKey:\n        description: KubeletConfigKey declares which key of the referenced ConfigMap\n          corresponds to the KubeletConfiguration structure This field is required\n          in all cases.\n        type: string\n      name:\n        description: Name is the metadata.name of the referenced ConfigMap. This field\n          is required in all cases.\n        type: string\n      namespace:\n        description: Namespace is the metadata.namespace of the referenced ConfigMap.\n          This field is required in all cases.\n        type: string\n      resourceVersion:\n        description: ResourceVersion is the metadata.ResourceVersion of the referenced\n          ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.\n        type: string\n      uid:\n        description: UID is the metadata.UID of the referenced ConfigMap. This field\n          is forbidden in Node.Spec, and required in Node.Status.\n        type: string\n    required:\n    - namespace\n    - name\n    - kubeletConfigKey\n  io.k8s.api.core.v1.ConfigMapProjection:\n    description: 'Adapts a ConfigMap into a projected volume.\n\n\n      The contents of the target ConfigMap''s Data field will be presented in a projected\n      volume as files using the keys in the Data field as the file names, unless the\n      items element is populated with specific mappings of keys to paths. Note that\n      this is identical to a configmap volume source without the default mode.'\n    properties:\n      items:\n        description: If unspecified, each key-value pair in the Data field of the\n          referenced ConfigMap will be projected into the volume as a file whose name\n          is the key and content is the value. If specified, the listed keys will\n          be projected into the specified paths, and unlisted keys will not be present.\n          If a key is specified which is not present in the ConfigMap, the volume\n          setup will error unless it is marked optional. Paths must be relative and\n          may not contain the '..' path or start with '..'.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.KeyToPath'\n        type: array\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      optional:\n        description: Specify whether the ConfigMap or it's keys must be defined\n        type: boolean\n  io.k8s.api.core.v1.ConfigMapVolumeSource:\n    description: 'Adapts a ConfigMap into a volume.\n\n\n      The contents of the target ConfigMap''s Data field will be presented in a volume\n      as files using the keys in the Data field as the file names, unless the items\n      element is populated with specific mappings of keys to paths. ConfigMap volumes\n      support ownership management and SELinux relabeling.'\n    properties:\n      defaultMode:\n        description: 'Optional: mode bits to use on created files by default. Must\n          be a value between 0 and 0777. Defaults to 0644. Directories within the\n          path are not affected by this setting. This might be in conflict with other\n          options that affect the file mode, like fsGroup, and the result can be other\n          mode bits set.'\n        format: int32\n        type: integer\n      items:\n        description: If unspecified, each key-value pair in the Data field of the\n          referenced ConfigMap will be projected into the volume as a file whose name\n          is the key and content is the value. If specified, the listed keys will\n          be projected into the specified paths, and unlisted keys will not be present.\n          If a key is specified which is not present in the ConfigMap, the volume\n          setup will error unless it is marked optional. Paths must be relative and\n          may not contain the '..' path or start with '..'.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.KeyToPath'\n        type: array\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      optional:\n        description: Specify whether the ConfigMap or it's keys must be defined\n        type: boolean\n  io.k8s.api.core.v1.Container:\n    description: A single application container that you want to run within a pod.\n    properties:\n      args:\n        description: 'Arguments to the entrypoint. The docker image''s CMD is used\n          if this is not provided. Variable references $(VAR_NAME) are expanded using\n          the container''s environment. If a variable cannot be resolved, the reference\n          in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped\n          with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,\n          regardless of whether the variable exists or not. Cannot be updated. More\n          info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n        items:\n          type: string\n        type: array\n      command:\n        description: 'Entrypoint array. Not executed within a shell. The docker image''s\n          ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME)\n          are expanded using the container''s environment. If a variable cannot be\n          resolved, the reference in the input string will be unchanged. The $(VAR_NAME)\n          syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references\n          will never be expanded, regardless of whether the variable exists or not.\n          Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'\n        items:\n          type: string\n        type: array\n      env:\n        description: List of environment variables to set in the container. Cannot\n          be updated.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.EnvVar'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n      envFrom:\n        description: List of sources to populate environment variables in the container.\n          The keys defined within a source must be a C_IDENTIFIER. All invalid keys\n          will be reported as an event when the container is starting. When a key\n          exists in multiple sources, the value associated with the last source will\n          take precedence. Values defined by an Env with a duplicate key will take\n          precedence. Cannot be updated.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.EnvFromSource'\n        type: array\n      image:\n        description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images\n          This field is optional to allow higher level config management to default\n          or override container images in workload controllers like Deployments and\n          StatefulSets.'\n        type: string\n      imagePullPolicy:\n        description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults\n          to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot\n          be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'\n        type: string\n      lifecycle:\n        $ref: '#/definitions/io.k8s.api.core.v1.Lifecycle'\n        description: Actions that the management system should take in response to\n          container lifecycle events. Cannot be updated.\n      livenessProbe:\n        $ref: '#/definitions/io.k8s.api.core.v1.Probe'\n        description: 'Periodic probe of container liveness. Container will be restarted\n          if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n      name:\n        description: Name of the container specified as a DNS_LABEL. Each container\n          in a pod must have a unique name (DNS_LABEL). Cannot be updated.\n        type: string\n      ports:\n        description: List of ports to expose from the container. Exposing a port here\n          gives the system additional information about the network connections a\n          container uses, but is primarily informational. Not specifying a port here\n          DOES NOT prevent that port from being exposed. Any port which is listening\n          on the default \"0.0.0.0\" address inside a container will be accessible from\n          the network. Cannot be updated.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ContainerPort'\n        type: array\n        x-kubernetes-patch-merge-key: containerPort\n        x-kubernetes-patch-strategy: merge\n      readinessProbe:\n        $ref: '#/definitions/io.k8s.api.core.v1.Probe'\n        description: 'Periodic probe of container service readiness. Container will\n          be removed from service endpoints if the probe fails. Cannot be updated.\n          More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n      resources:\n        $ref: '#/definitions/io.k8s.api.core.v1.ResourceRequirements'\n        description: 'Compute Resources required by this container. Cannot be updated.\n          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n      securityContext:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecurityContext'\n        description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/\n          More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n      stdin:\n        description: Whether this container should allocate a buffer for stdin in\n          the container runtime. If this is not set, reads from stdin in the container\n          will always result in EOF. Default is false.\n        type: boolean\n      stdinOnce:\n        description: Whether the container runtime should close the stdin channel\n          after it has been opened by a single attach. When stdin is true the stdin\n          stream will remain open across multiple attach sessions. If stdinOnce is\n          set to true, stdin is opened on container start, is empty until the first\n          client attaches to stdin, and then remains open and accepts data until the\n          client disconnects, at which time stdin is closed and remains closed until\n          the container is restarted. If this flag is false, a container processes\n          that reads from stdin will never receive an EOF. Default is false\n        type: boolean\n      terminationMessagePath:\n        description: 'Optional: Path at which the file to which the container''s termination\n          message will be written is mounted into the container''s filesystem. Message\n          written is intended to be brief final status, such as an assertion failure\n          message. Will be truncated by the node if greater than 4096 bytes. The total\n          message length across all containers will be limited to 12kb. Defaults to\n          /dev/termination-log. Cannot be updated.'\n        type: string\n      terminationMessagePolicy:\n        description: Indicate how the termination message should be populated. File\n          will use the contents of terminationMessagePath to populate the container\n          status message on both success and failure. FallbackToLogsOnError will use\n          the last chunk of container log output if the termination message file is\n          empty and the container exited with an error. The log output is limited\n          to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot\n          be updated.\n        type: string\n      tty:\n        description: Whether this container should allocate a TTY for itself, also\n          requires 'stdin' to be true. Default is false.\n        type: boolean\n      volumeDevices:\n        description: volumeDevices is the list of block devices to be used by the\n          container. This is an alpha feature and may change in the future.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.VolumeDevice'\n        type: array\n        x-kubernetes-patch-merge-key: devicePath\n        x-kubernetes-patch-strategy: merge\n      volumeMounts:\n        description: Pod volumes to mount into the container's filesystem. Cannot\n          be updated.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.VolumeMount'\n        type: array\n        x-kubernetes-patch-merge-key: mountPath\n        x-kubernetes-patch-strategy: merge\n      workingDir:\n        description: Container's working directory. If not specified, the container\n          runtime's default will be used, which might be configured in the container\n          image. Cannot be updated.\n        type: string\n    required:\n    - name\n  io.k8s.api.core.v1.ContainerImage:\n    description: Describe a container image\n    properties:\n      names:\n        description: Names by which this image is known. e.g. [\"k8s.gcr.io/hyperkube:v1.0.7\",\n          \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]\n        items:\n          type: string\n        type: array\n      sizeBytes:\n        description: The size of the image in bytes.\n        format: int64\n        type: integer\n    required:\n    - names\n  io.k8s.api.core.v1.ContainerPort:\n    description: ContainerPort represents a network port in a single container.\n    properties:\n      containerPort:\n        description: Number of port to expose on the pod's IP address. This must be\n          a valid port number, 0 < x < 65536.\n        format: int32\n        type: integer\n      hostIP:\n        description: What host IP to bind the external port to.\n        type: string\n      hostPort:\n        description: Number of port to expose on the host. If specified, this must\n          be a valid port number, 0 < x < 65536. If HostNetwork is specified, this\n          must match ContainerPort. Most containers do not need this.\n        format: int32\n        type: integer\n      name:\n        description: If specified, this must be an IANA_SVC_NAME and unique within\n          the pod. Each named port in a pod must have a unique name. Name for the\n          port that can be referred to by services.\n        type: string\n      protocol:\n        description: Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".\n        type: string\n    required:\n    - containerPort\n  io.k8s.api.core.v1.ContainerState:\n    description: ContainerState holds a possible state of container. Only one of its\n      members may be specified. If none of them is specified, the default one is ContainerStateWaiting.\n    properties:\n      running:\n        $ref: '#/definitions/io.k8s.api.core.v1.ContainerStateRunning'\n        description: Details about a running container\n      terminated:\n        $ref: '#/definitions/io.k8s.api.core.v1.ContainerStateTerminated'\n        description: Details about a terminated container\n      waiting:\n        $ref: '#/definitions/io.k8s.api.core.v1.ContainerStateWaiting'\n        description: Details about a waiting container\n  io.k8s.api.core.v1.ContainerStateRunning:\n    description: ContainerStateRunning is a running state of a container.\n    properties:\n      startedAt:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Time at which the container was last (re-)started\n  io.k8s.api.core.v1.ContainerStateTerminated:\n    description: ContainerStateTerminated is a terminated state of a container.\n    properties:\n      containerID:\n        description: Container's ID in the format 'docker://<container_id>'\n        type: string\n      exitCode:\n        description: Exit status from the last termination of the container\n        format: int32\n        type: integer\n      finishedAt:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Time at which the container last terminated\n      message:\n        description: Message regarding the last termination of the container\n        type: string\n      reason:\n        description: (brief) reason from the last termination of the container\n        type: string\n      signal:\n        description: Signal from the last termination of the container\n        format: int32\n        type: integer\n      startedAt:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Time at which previous execution of the container started\n    required:\n    - exitCode\n  io.k8s.api.core.v1.ContainerStateWaiting:\n    description: ContainerStateWaiting is a waiting state of a container.\n    properties:\n      message:\n        description: Message regarding why the container is not yet running.\n        type: string\n      reason:\n        description: (brief) reason the container is not yet running.\n        type: string\n  io.k8s.api.core.v1.ContainerStatus:\n    description: ContainerStatus contains details for the current status of this container.\n    properties:\n      containerID:\n        description: Container's ID in the format 'docker://<container_id>'.\n        type: string\n      image:\n        description: 'The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images'\n        type: string\n      imageID:\n        description: ImageID of the container's image.\n        type: string\n      lastState:\n        $ref: '#/definitions/io.k8s.api.core.v1.ContainerState'\n        description: Details about the container's last termination condition.\n      name:\n        description: This must be a DNS_LABEL. Each container in a pod must have a\n          unique name. Cannot be updated.\n        type: string\n      ready:\n        description: Specifies whether the container has passed its readiness probe.\n        type: boolean\n      restartCount:\n        description: The number of times the container has been restarted, currently\n          based on the number of dead containers that have not yet been removed. Note\n          that this is calculated from dead containers. But those containers are subject\n          to garbage collection. This value will get capped at 5 by GC.\n        format: int32\n        type: integer\n      state:\n        $ref: '#/definitions/io.k8s.api.core.v1.ContainerState'\n        description: Details about the container's current condition.\n    required:\n    - name\n    - ready\n    - restartCount\n    - image\n    - imageID\n  io.k8s.api.core.v1.DaemonEndpoint:\n    description: DaemonEndpoint contains information about a single Daemon endpoint.\n    properties:\n      Port:\n        description: Port number of the given endpoint.\n        format: int32\n        type: integer\n    required:\n    - Port\n  io.k8s.api.core.v1.DownwardAPIProjection:\n    description: Represents downward API info for projecting into a projected volume.\n      Note that this is identical to a downwardAPI volume source without the default\n      mode.\n    properties:\n      items:\n        description: Items is a list of DownwardAPIVolume file\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile'\n        type: array\n  io.k8s.api.core.v1.DownwardAPIVolumeFile:\n    description: DownwardAPIVolumeFile represents information to create the file containing\n      the pod field\n    properties:\n      fieldRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectFieldSelector'\n        description: 'Required: Selects a field of the pod: only annotations, labels,\n          name and namespace are supported.'\n      mode:\n        description: 'Optional: mode bits to use on this file, must be a value between\n          0 and 0777. If not specified, the volume defaultMode will be used. This\n          might be in conflict with other options that affect the file mode, like\n          fsGroup, and the result can be other mode bits set.'\n        format: int32\n        type: integer\n      path:\n        description: 'Required: Path is  the relative path name of the file to be\n          created. Must not be absolute or contain the ''..'' path. Must be utf-8\n          encoded. The first item of the relative path must not start with ''..'''\n        type: string\n      resourceFieldRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ResourceFieldSelector'\n        description: 'Selects a resource of the container: only resources limits and\n          requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are\n          currently supported.'\n    required:\n    - path\n  io.k8s.api.core.v1.DownwardAPIVolumeSource:\n    description: DownwardAPIVolumeSource represents a volume containing downward API\n      info. Downward API volumes support ownership management and SELinux relabeling.\n    properties:\n      defaultMode:\n        description: 'Optional: mode bits to use on created files by default. Must\n          be a value between 0 and 0777. Defaults to 0644. Directories within the\n          path are not affected by this setting. This might be in conflict with other\n          options that affect the file mode, like fsGroup, and the result can be other\n          mode bits set.'\n        format: int32\n        type: integer\n      items:\n        description: Items is a list of downward API volume file\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile'\n        type: array\n  io.k8s.api.core.v1.EmptyDirVolumeSource:\n    description: Represents an empty directory for a pod. Empty directory volumes\n      support ownership management and SELinux relabeling.\n    properties:\n      medium:\n        description: 'What type of storage medium should back this directory. The\n          default is \"\" which means to use the node''s default medium. Must be an\n          empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n        type: string\n      sizeLimit:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: 'Total amount of local storage required for this EmptyDir volume.\n          The size limit is also applicable for memory medium. The maximum usage on\n          memory medium EmptyDir would be the minimum value between the SizeLimit\n          specified here and the sum of memory limits of all containers in a pod.\n          The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'\n  io.k8s.api.core.v1.EndpointAddress:\n    description: EndpointAddress is a tuple that describes single IP address.\n    properties:\n      hostname:\n        description: The Hostname of this endpoint\n        type: string\n      ip:\n        description: The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local\n          (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also\n          accepted but not fully supported on all platforms. Also, certain kubernetes\n          components, like kube-proxy, are not IPv6 ready.\n        type: string\n      nodeName:\n        description: 'Optional: Node hosting this endpoint. This can be used to determine\n          endpoints local to a node.'\n        type: string\n      targetRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        description: Reference to object providing the endpoint.\n    required:\n    - ip\n  io.k8s.api.core.v1.EndpointPort:\n    description: EndpointPort is a tuple that describes a single port.\n    properties:\n      name:\n        description: The name of this port (corresponds to ServicePort.Name). Must\n          be a DNS_LABEL. Optional only if one port is defined.\n        type: string\n      port:\n        description: The port number of the endpoint.\n        format: int32\n        type: integer\n      protocol:\n        description: The IP protocol for this port. Must be UDP or TCP. Default is\n          TCP.\n        type: string\n    required:\n    - port\n  io.k8s.api.core.v1.EndpointSubset:\n    description: \"EndpointSubset is a group of addresses with a common set of ports.\\\n      \\ The expanded set of endpoints is the Cartesian product of Addresses x Ports.\\\n      \\ For example, given:\\n  {\\n    Addresses: [{\\\"ip\\\": \\\"10.10.1.1\\\"}, {\\\"ip\\\"\\\n      : \\\"10.10.2.2\\\"}],\\n    Ports:     [{\\\"name\\\": \\\"a\\\", \\\"port\\\": 8675}, {\\\"name\\\"\\\n      : \\\"b\\\", \\\"port\\\": 309}]\\n  }\\nThe resulting set of endpoints can be viewed\\\n      \\ as:\\n    a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\\n    b: [ 10.10.1.1:309, 10.10.2.2:309\\\n      \\ ]\"\n    properties:\n      addresses:\n        description: IP addresses which offer the related ports that are marked as\n          ready. These endpoints should be considered safe for load balancers and\n          clients to utilize.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.EndpointAddress'\n        type: array\n      notReadyAddresses:\n        description: IP addresses which offer the related ports but are not currently\n          marked as ready because they have not yet finished starting, have recently\n          failed a readiness check, or have recently failed a liveness check.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.EndpointAddress'\n        type: array\n      ports:\n        description: Port numbers available on the related IP addresses.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.EndpointPort'\n        type: array\n  io.k8s.api.core.v1.Endpoints:\n    description: \"Endpoints is a collection of endpoints that implement the actual\\\n      \\ service. Example:\\n  Name: \\\"mysvc\\\",\\n  Subsets: [\\n    {\\n      Addresses:\\\n      \\ [{\\\"ip\\\": \\\"10.10.1.1\\\"}, {\\\"ip\\\": \\\"10.10.2.2\\\"}],\\n      Ports: [{\\\"name\\\"\\\n      : \\\"a\\\", \\\"port\\\": 8675}, {\\\"name\\\": \\\"b\\\", \\\"port\\\": 309}]\\n    },\\n    {\\n\\\n      \\      Addresses: [{\\\"ip\\\": \\\"10.10.3.3\\\"}],\\n      Ports: [{\\\"name\\\": \\\"a\\\"\\\n      , \\\"port\\\": 93}, {\\\"name\\\": \\\"b\\\", \\\"port\\\": 76}]\\n    },\\n ]\"\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      subsets:\n        description: The set of all endpoints is the union of all subsets. Addresses\n          are placed into subsets according to the IPs they share. A single address\n          with multiple ports, some of which are ready and some of which are not (because\n          they come from different containers) will result in the address being displayed\n          in different subsets for the different ports. No address will appear in\n          both Addresses and NotReadyAddresses in the same subset. Sets of addresses\n          and ports that comprise a service.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.EndpointSubset'\n        type: array\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Endpoints\n      version: v1\n  io.k8s.api.core.v1.EndpointsList:\n    description: EndpointsList is a list of endpoints.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of endpoints.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: EndpointsList\n      version: v1\n  io.k8s.api.core.v1.EnvFromSource:\n    description: EnvFromSource represents the source of a set of ConfigMaps\n    properties:\n      configMapRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource'\n        description: The ConfigMap to select from\n      prefix:\n        description: An optional identifier to prepend to each key in the ConfigMap.\n          Must be a C_IDENTIFIER.\n        type: string\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretEnvSource'\n        description: The Secret to select from\n  io.k8s.api.core.v1.EnvVar:\n    description: EnvVar represents an environment variable present in a Container.\n    properties:\n      name:\n        description: Name of the environment variable. Must be a C_IDENTIFIER.\n        type: string\n      value:\n        description: 'Variable references $(VAR_NAME) are expanded using the previous\n          defined environment variables in the container and any service environment\n          variables. If a variable cannot be resolved, the reference in the input\n          string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double\n          $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless\n          of whether the variable exists or not. Defaults to \"\".'\n        type: string\n      valueFrom:\n        $ref: '#/definitions/io.k8s.api.core.v1.EnvVarSource'\n        description: Source for the environment variable's value. Cannot be used if\n          value is not empty.\n    required:\n    - name\n  io.k8s.api.core.v1.EnvVarSource:\n    description: EnvVarSource represents a source for the value of an EnvVar.\n    properties:\n      configMapKeyRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector'\n        description: Selects a key of a ConfigMap.\n      fieldRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectFieldSelector'\n        description: 'Selects a field of the pod: supports metadata.name, metadata.namespace,\n          metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName,\n          status.hostIP, status.podIP.'\n      resourceFieldRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ResourceFieldSelector'\n        description: 'Selects a resource of the container: only resources limits and\n          requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu,\n          requests.memory and requests.ephemeral-storage) are currently supported.'\n      secretKeyRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretKeySelector'\n        description: Selects a key of a secret in the pod's namespace\n  io.k8s.api.core.v1.Event:\n    description: Event is a report of an event somewhere in the cluster.\n    properties:\n      action:\n        description: What action was taken/failed regarding to the Regarding object.\n        type: string\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      count:\n        description: The number of times this event has occurred.\n        format: int32\n        type: integer\n      eventTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime'\n        description: Time when this Event was first observed.\n      firstTimestamp:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The time at which the event was first recorded. (Time of server\n          receipt is in TypeMeta.)\n      involvedObject:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        description: The object that this event is about.\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      lastTimestamp:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The time at which the most recent occurrence of this event was\n          recorded.\n      message:\n        description: A human-readable description of the status of this operation.\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      reason:\n        description: This should be a short, machine understandable string that gives\n          the reason for the transition into the object's current status.\n        type: string\n      related:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        description: Optional secondary object for more complex actions.\n      reportingComponent:\n        description: Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.\n        type: string\n      reportingInstance:\n        description: ID of the controller instance, e.g. `kubelet-xyzf`.\n        type: string\n      series:\n        $ref: '#/definitions/io.k8s.api.core.v1.EventSeries'\n        description: Data about the Event series this event represents or nil if it's\n          a singleton Event.\n      source:\n        $ref: '#/definitions/io.k8s.api.core.v1.EventSource'\n        description: The component reporting this event. Should be a short machine\n          understandable string.\n      type:\n        description: Type of this event (Normal, Warning), new types could be added\n          in the future\n        type: string\n    required:\n    - metadata\n    - involvedObject\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Event\n      version: v1\n  io.k8s.api.core.v1.EventList:\n    description: EventList is a list of events.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of events\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Event'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: EventList\n      version: v1\n  io.k8s.api.core.v1.EventSeries:\n    description: EventSeries contain information on series of events, i.e. thing that\n      was/is happening continuously for some time.\n    properties:\n      count:\n        description: Number of occurrences in this series up to the last heartbeat\n          time\n        format: int32\n        type: integer\n      lastObservedTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime'\n        description: Time of the last occurrence observed\n      state:\n        description: 'State of this Series: Ongoing or Finished'\n        type: string\n  io.k8s.api.core.v1.EventSource:\n    description: EventSource contains information for an event.\n    properties:\n      component:\n        description: Component from which the event is generated.\n        type: string\n      host:\n        description: Node name on which the event is generated.\n        type: string\n  io.k8s.api.core.v1.ExecAction:\n    description: ExecAction describes a \"run in container\" action.\n    properties:\n      command:\n        description: Command is the command line to execute inside the container,\n          the working directory for the command  is root ('/') in the container's\n          filesystem. The command is simply exec'd, it is not run inside a shell,\n          so traditional shell instructions ('|', etc) won't work. To use a shell,\n          you need to explicitly call out to that shell. Exit status of 0 is treated\n          as live/healthy and non-zero is unhealthy.\n        items:\n          type: string\n        type: array\n  io.k8s.api.core.v1.FCVolumeSource:\n    description: Represents a Fibre Channel volume. Fibre Channel volumes can only\n      be mounted as read/write once. Fibre Channel volumes support ownership management\n      and SELinux relabeling.\n    properties:\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred\n          to be \"ext4\" if unspecified.\n        type: string\n      lun:\n        description: 'Optional: FC target lun number'\n        format: int32\n        type: integer\n      readOnly:\n        description: 'Optional: Defaults to false (read/write). ReadOnly here will\n          force the ReadOnly setting in VolumeMounts.'\n        type: boolean\n      targetWWNs:\n        description: 'Optional: FC target worldwide names (WWNs)'\n        items:\n          type: string\n        type: array\n      wwids:\n        description: 'Optional: FC volume world wide identifiers (wwids) Either wwids\n          or combination of targetWWNs and lun must be set, but not both simultaneously.'\n        items:\n          type: string\n        type: array\n  io.k8s.api.core.v1.FlexPersistentVolumeSource:\n    description: FlexPersistentVolumeSource represents a generic persistent volume\n      resource that is provisioned/attached using an exec based plugin.\n    properties:\n      driver:\n        description: Driver is the name of the driver to use for this volume.\n        type: string\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem\n          depends on FlexVolume script.\n        type: string\n      options:\n        additionalProperties:\n          type: string\n        description: 'Optional: Extra command options if any.'\n        type: object\n      readOnly:\n        description: 'Optional: Defaults to false (read/write). ReadOnly here will\n          force the ReadOnly setting in VolumeMounts.'\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: 'Optional: SecretRef is reference to the secret object containing\n          sensitive information to pass to the plugin scripts. This may be empty if\n          no secret object is specified. If the secret object contains more than one\n          secret, all secrets are passed to the plugin scripts.'\n    required:\n    - driver\n  io.k8s.api.core.v1.FlexVolumeSource:\n    description: FlexVolume represents a generic volume resource that is provisioned/attached\n      using an exec based plugin.\n    properties:\n      driver:\n        description: Driver is the name of the driver to use for this volume.\n        type: string\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem\n          depends on FlexVolume script.\n        type: string\n      options:\n        additionalProperties:\n          type: string\n        description: 'Optional: Extra command options if any.'\n        type: object\n      readOnly:\n        description: 'Optional: Defaults to false (read/write). ReadOnly here will\n          force the ReadOnly setting in VolumeMounts.'\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        description: 'Optional: SecretRef is reference to the secret object containing\n          sensitive information to pass to the plugin scripts. This may be empty if\n          no secret object is specified. If the secret object contains more than one\n          secret, all secrets are passed to the plugin scripts.'\n    required:\n    - driver\n  io.k8s.api.core.v1.FlockerVolumeSource:\n    description: Represents a Flocker volume mounted by the Flocker agent. One and\n      only one of datasetName and datasetUUID should be set. Flocker volumes do not\n      support ownership management or SELinux relabeling.\n    properties:\n      datasetName:\n        description: Name of the dataset stored as metadata -> name on the dataset\n          for Flocker should be considered as deprecated\n        type: string\n      datasetUUID:\n        description: UUID of the dataset. This is unique identifier of a Flocker dataset\n        type: string\n  io.k8s.api.core.v1.GCEPersistentDiskVolumeSource:\n    description: 'Represents a Persistent Disk resource in Google Compute Engine.\n\n\n      A GCE PD must exist before mounting to a container. The disk must also be in\n      the same GCE project and zone as the kubelet. A GCE PD can only be mounted as\n      read/write once or read-only many times. GCE PDs support ownership management\n      and SELinux relabeling.'\n    properties:\n      fsType:\n        description: 'Filesystem type of the volume that you want to mount. Tip: Ensure\n          that the filesystem type is supported by the host operating system. Examples:\n          \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n          More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n        type: string\n      partition:\n        description: 'The partition in the volume that you want to mount. If omitted,\n          the default is to mount by volume name. Examples: For volume /dev/sda1,\n          you specify the partition as \"1\". Similarly, the volume partition for /dev/sda\n          is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n        format: int32\n        type: integer\n      pdName:\n        description: 'Unique name of the PD resource in GCE. Used to identify the\n          disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n        type: string\n      readOnly:\n        description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts.\n          Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n        type: boolean\n    required:\n    - pdName\n  io.k8s.api.core.v1.GitRepoVolumeSource:\n    description: 'Represents a volume that is populated with the contents of a git\n      repository. Git repo volumes do not support ownership management. Git repo volumes\n      support SELinux relabeling.\n\n\n      DEPRECATED: GitRepo is deprecated. To provision a container with a git repo,\n      mount an EmptyDir into an InitContainer that clones the repo using git, then\n      mount the EmptyDir into the Pod''s container.'\n    properties:\n      directory:\n        description: Target directory name. Must not contain or start with '..'.  If\n          '.' is supplied, the volume directory will be the git repository.  Otherwise,\n          if specified, the volume will contain the git repository in the subdirectory\n          with the given name.\n        type: string\n      repository:\n        description: Repository URL\n        type: string\n      revision:\n        description: Commit hash for the specified revision.\n        type: string\n    required:\n    - repository\n  io.k8s.api.core.v1.GlusterfsVolumeSource:\n    description: Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs\n      volumes do not support ownership management or SELinux relabeling.\n    properties:\n      endpoints:\n        description: 'EndpointsName is the endpoint name that details Glusterfs topology.\n          More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod'\n        type: string\n      path:\n        description: 'Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod'\n        type: string\n      readOnly:\n        description: 'ReadOnly here will force the Glusterfs volume to be mounted\n          with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod'\n        type: boolean\n    required:\n    - endpoints\n    - path\n  io.k8s.api.core.v1.HTTPGetAction:\n    description: HTTPGetAction describes an action based on HTTP Get requests.\n    properties:\n      host:\n        description: Host name to connect to, defaults to the pod IP. You probably\n          want to set \"Host\" in httpHeaders instead.\n        type: string\n      httpHeaders:\n        description: Custom headers to set in the request. HTTP allows repeated headers.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.HTTPHeader'\n        type: array\n      path:\n        description: Path to access on the HTTP server.\n        type: string\n      port:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: Name or number of the port to access on the container. Number\n          must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n      scheme:\n        description: Scheme to use for connecting to the host. Defaults to HTTP.\n        type: string\n    required:\n    - port\n  io.k8s.api.core.v1.HTTPHeader:\n    description: HTTPHeader describes a custom header to be used in HTTP probes\n    properties:\n      name:\n        description: The header field name\n        type: string\n      value:\n        description: The header field value\n        type: string\n    required:\n    - name\n    - value\n  io.k8s.api.core.v1.Handler:\n    description: Handler defines a specific action that should be taken\n    properties:\n      exec:\n        $ref: '#/definitions/io.k8s.api.core.v1.ExecAction'\n        description: One and only one of the following should be specified. Exec specifies\n          the action to take.\n      httpGet:\n        $ref: '#/definitions/io.k8s.api.core.v1.HTTPGetAction'\n        description: HTTPGet specifies the http request to perform.\n      tcpSocket:\n        $ref: '#/definitions/io.k8s.api.core.v1.TCPSocketAction'\n        description: TCPSocket specifies an action involving a TCP port. TCP hooks\n          not yet supported\n  io.k8s.api.core.v1.HostAlias:\n    description: HostAlias holds the mapping between IP and hostnames that will be\n      injected as an entry in the pod's hosts file.\n    properties:\n      hostnames:\n        description: Hostnames for the above IP address.\n        items:\n          type: string\n        type: array\n      ip:\n        description: IP address of the host file entry.\n        type: string\n  io.k8s.api.core.v1.HostPathVolumeSource:\n    description: Represents a host path mapped into a pod. Host path volumes do not\n      support ownership management or SELinux relabeling.\n    properties:\n      path:\n        description: 'Path of the directory on the host. If the path is a symlink,\n          it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n        type: string\n      type:\n        description: 'Type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n        type: string\n    required:\n    - path\n  io.k8s.api.core.v1.ISCSIPersistentVolumeSource:\n    description: ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes\n      can only be mounted as read/write once. ISCSI volumes support ownership management\n      and SELinux relabeling.\n    properties:\n      chapAuthDiscovery:\n        description: whether support iSCSI Discovery CHAP authentication\n        type: boolean\n      chapAuthSession:\n        description: whether support iSCSI Session CHAP authentication\n        type: boolean\n      fsType:\n        description: 'Filesystem type of the volume that you want to mount. Tip: Ensure\n          that the filesystem type is supported by the host operating system. Examples:\n          \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n          More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi'\n        type: string\n      initiatorName:\n        description: Custom iSCSI Initiator Name. If initiatorName is specified with\n          iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume\n          name> will be created for the connection.\n        type: string\n      iqn:\n        description: Target iSCSI Qualified Name.\n        type: string\n      iscsiInterface:\n        description: iSCSI Interface Name that uses an iSCSI transport. Defaults to\n          'default' (tcp).\n        type: string\n      lun:\n        description: iSCSI Target Lun number.\n        format: int32\n        type: integer\n      portals:\n        description: iSCSI Target Portal List. The Portal is either an IP or ip_addr:port\n          if the port is other than default (typically TCP ports 860 and 3260).\n        items:\n          type: string\n        type: array\n      readOnly:\n        description: ReadOnly here will force the ReadOnly setting in VolumeMounts.\n          Defaults to false.\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: CHAP Secret for iSCSI target and initiator authentication\n      targetPortal:\n        description: iSCSI Target Portal. The Portal is either an IP or ip_addr:port\n          if the port is other than default (typically TCP ports 860 and 3260).\n        type: string\n    required:\n    - targetPortal\n    - iqn\n    - lun\n  io.k8s.api.core.v1.ISCSIVolumeSource:\n    description: Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write\n      once. ISCSI volumes support ownership management and SELinux relabeling.\n    properties:\n      chapAuthDiscovery:\n        description: whether support iSCSI Discovery CHAP authentication\n        type: boolean\n      chapAuthSession:\n        description: whether support iSCSI Session CHAP authentication\n        type: boolean\n      fsType:\n        description: 'Filesystem type of the volume that you want to mount. Tip: Ensure\n          that the filesystem type is supported by the host operating system. Examples:\n          \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n          More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi'\n        type: string\n      initiatorName:\n        description: Custom iSCSI Initiator Name. If initiatorName is specified with\n          iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume\n          name> will be created for the connection.\n        type: string\n      iqn:\n        description: Target iSCSI Qualified Name.\n        type: string\n      iscsiInterface:\n        description: iSCSI Interface Name that uses an iSCSI transport. Defaults to\n          'default' (tcp).\n        type: string\n      lun:\n        description: iSCSI Target Lun number.\n        format: int32\n        type: integer\n      portals:\n        description: iSCSI Target Portal List. The portal is either an IP or ip_addr:port\n          if the port is other than default (typically TCP ports 860 and 3260).\n        items:\n          type: string\n        type: array\n      readOnly:\n        description: ReadOnly here will force the ReadOnly setting in VolumeMounts.\n          Defaults to false.\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        description: CHAP Secret for iSCSI target and initiator authentication\n      targetPortal:\n        description: iSCSI Target Portal. The Portal is either an IP or ip_addr:port\n          if the port is other than default (typically TCP ports 860 and 3260).\n        type: string\n    required:\n    - targetPortal\n    - iqn\n    - lun\n  io.k8s.api.core.v1.KeyToPath:\n    description: Maps a string key to a path within a volume.\n    properties:\n      key:\n        description: The key to project.\n        type: string\n      mode:\n        description: 'Optional: mode bits to use on this file, must be a value between\n          0 and 0777. If not specified, the volume defaultMode will be used. This\n          might be in conflict with other options that affect the file mode, like\n          fsGroup, and the result can be other mode bits set.'\n        format: int32\n        type: integer\n      path:\n        description: The relative path of the file to map the key to. May not be an\n          absolute path. May not contain the path element '..'. May not start with\n          the string '..'.\n        type: string\n    required:\n    - key\n    - path\n  io.k8s.api.core.v1.Lifecycle:\n    description: Lifecycle describes actions that the management system should take\n      in response to container lifecycle events. For the PostStart and PreStop lifecycle\n      handlers, management of the container blocks until the action is complete, unless\n      the container process fails, in which case the handler is aborted.\n    properties:\n      postStart:\n        $ref: '#/definitions/io.k8s.api.core.v1.Handler'\n        description: 'PostStart is called immediately after a container is created.\n          If the handler fails, the container is terminated and restarted according\n          to its restart policy. Other management of the container blocks until the\n          hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n      preStop:\n        $ref: '#/definitions/io.k8s.api.core.v1.Handler'\n        description: 'PreStop is called immediately before a container is terminated.\n          The container is terminated after the handler completes. The reason for\n          termination is passed to the handler. Regardless of the outcome of the handler,\n          the container is eventually terminated. Other management of the container\n          blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'\n  io.k8s.api.core.v1.LimitRange:\n    description: LimitRange sets resource usage limits for each kind of resource in\n      a Namespace.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.LimitRangeSpec'\n        description: 'Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: LimitRange\n      version: v1\n  io.k8s.api.core.v1.LimitRangeItem:\n    description: LimitRangeItem defines a min/max usage limit for any resource that\n      matches on kind.\n    properties:\n      default:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: Default resource requirement limit value by resource name if\n          resource limit is omitted.\n        type: object\n      defaultRequest:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: DefaultRequest is the default resource requirement request value\n          by resource name if resource request is omitted.\n        type: object\n      max:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: Max usage constraints on this kind by resource name.\n        type: object\n      maxLimitRequestRatio:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: MaxLimitRequestRatio if specified, the named resource must have\n          a request and limit that are both non-zero where limit divided by request\n          is less than or equal to the enumerated value; this represents the max burst\n          for the named resource.\n        type: object\n      min:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: Min usage constraints on this kind by resource name.\n        type: object\n      type:\n        description: Type of resource that this limit applies to.\n        type: string\n  io.k8s.api.core.v1.LimitRangeList:\n    description: LimitRangeList is a list of LimitRange items.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: LimitRangeList\n      version: v1\n  io.k8s.api.core.v1.LimitRangeSpec:\n    description: LimitRangeSpec defines a min/max usage limit for resources that match\n      on kind.\n    properties:\n      limits:\n        description: Limits is the list of LimitRangeItem objects that are enforced.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.LimitRangeItem'\n        type: array\n    required:\n    - limits\n  io.k8s.api.core.v1.LoadBalancerIngress:\n    description: 'LoadBalancerIngress represents the status of a load-balancer ingress\n      point: traffic intended for the service should be sent to an ingress point.'\n    properties:\n      hostname:\n        description: Hostname is set for load-balancer ingress points that are DNS\n          based (typically AWS load-balancers)\n        type: string\n      ip:\n        description: IP is set for load-balancer ingress points that are IP based\n          (typically GCE or OpenStack load-balancers)\n        type: string\n  io.k8s.api.core.v1.LoadBalancerStatus:\n    description: LoadBalancerStatus represents the status of a load-balancer.\n    properties:\n      ingress:\n        description: Ingress is a list containing ingress points for the load-balancer.\n          Traffic intended for the service should be sent to these ingress points.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.LoadBalancerIngress'\n        type: array\n  io.k8s.api.core.v1.LocalObjectReference:\n    description: LocalObjectReference contains enough information to let you locate\n      the referenced object inside the same namespace.\n    properties:\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n  io.k8s.api.core.v1.LocalVolumeSource:\n    description: Local represents directly-attached storage with node affinity (Beta\n      feature)\n    properties:\n      path:\n        description: The full path to the volume on the node. It can be either a directory\n          or block device (disk, partition, ...). Directories can be represented only\n          by PersistentVolume with VolumeMode=Filesystem. Block devices can be represented\n          only by VolumeMode=Block, which also requires the BlockVolume alpha feature\n          gate to be enabled.\n        type: string\n    required:\n    - path\n  io.k8s.api.core.v1.NFSVolumeSource:\n    description: Represents an NFS mount that lasts the lifetime of a pod. NFS volumes\n      do not support ownership management or SELinux relabeling.\n    properties:\n      path:\n        description: 'Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n        type: string\n      readOnly:\n        description: 'ReadOnly here will force the NFS export to be mounted with read-only\n          permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n        type: boolean\n      server:\n        description: 'Server is the hostname or IP address of the NFS server. More\n          info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n        type: string\n    required:\n    - server\n    - path\n  io.k8s.api.core.v1.Namespace:\n    description: Namespace provides a scope for Names. Use of multiple namespaces\n      is optional.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.NamespaceSpec'\n        description: 'Spec defines the behavior of the Namespace. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.core.v1.NamespaceStatus'\n        description: 'Status describes the current status of a Namespace. More info:\n          https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Namespace\n      version: v1\n  io.k8s.api.core.v1.NamespaceList:\n    description: NamespaceList is a list of Namespaces.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'Items is the list of Namespace objects in the list. More info:\n          https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: NamespaceList\n      version: v1\n  io.k8s.api.core.v1.NamespaceSpec:\n    description: NamespaceSpec describes the attributes on a Namespace.\n    properties:\n      finalizers:\n        description: 'Finalizers is an opaque list of values that must be empty to\n          permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/'\n        items:\n          type: string\n        type: array\n  io.k8s.api.core.v1.NamespaceStatus:\n    description: NamespaceStatus is information about the current status of a Namespace.\n    properties:\n      phase:\n        description: 'Phase is the current lifecycle phase of the namespace. More\n          info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/'\n        type: string\n  io.k8s.api.core.v1.Node:\n    description: Node is a worker node in Kubernetes. Each node will have a unique\n      identifier in the cache (i.e. in etcd).\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeSpec'\n        description: Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n      status:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeStatus'\n        description: 'Most recently observed status of the node. Populated by the\n          system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Node\n      version: v1\n  io.k8s.api.core.v1.NodeAddress:\n    description: NodeAddress contains information for the node's address.\n    properties:\n      address:\n        description: The node address.\n        type: string\n      type:\n        description: Node address type, one of Hostname, ExternalIP or InternalIP.\n        type: string\n    required:\n    - type\n    - address\n  io.k8s.api.core.v1.NodeAffinity:\n    description: Node affinity is a group of node affinity scheduling rules.\n    properties:\n      preferredDuringSchedulingIgnoredDuringExecution:\n        description: The scheduler will prefer to schedule pods to nodes that satisfy\n          the affinity expressions specified by this field, but it may choose a node\n          that violates one or more of the expressions. The node that is most preferred\n          is the one with the greatest sum of weights, i.e. for each node that meets\n          all of the scheduling requirements (resource request, requiredDuringScheduling\n          affinity expressions, etc.), compute a sum by iterating through the elements\n          of this field and adding \"weight\" to the sum if the node matches the corresponding\n          matchExpressions; the node(s) with the highest sum are the most preferred.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm'\n        type: array\n      requiredDuringSchedulingIgnoredDuringExecution:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeSelector'\n        description: If the affinity requirements specified by this field are not\n          met at scheduling time, the pod will not be scheduled onto the node. If\n          the affinity requirements specified by this field cease to be met at some\n          point during pod execution (e.g. due to an update), the system may or may\n          not try to eventually evict the pod from its node.\n  io.k8s.api.core.v1.NodeCondition:\n    description: NodeCondition contains condition information for a node.\n    properties:\n      lastHeartbeatTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time we got an update on a given condition.\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transit from one status to another.\n      message:\n        description: Human readable message indicating details about last transition.\n        type: string\n      reason:\n        description: (brief) reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of node condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.core.v1.NodeConfigSource:\n    description: NodeConfigSource specifies a source of node configuration. Exactly\n      one subfield (excluding metadata) must be non-nil.\n    properties:\n      configMap:\n        $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapNodeConfigSource'\n        description: ConfigMap is a reference to a Node's ConfigMap\n  io.k8s.api.core.v1.NodeConfigStatus:\n    description: NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.\n    properties:\n      active:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeConfigSource'\n        description: Active reports the checkpointed config the node is actively using.\n          Active will represent either the current version of the Assigned config,\n          or the current LastKnownGood config, depending on whether attempting to\n          use the Assigned config results in an error.\n      assigned:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeConfigSource'\n        description: Assigned reports the checkpointed config the node will try to\n          use. When Node.Spec.ConfigSource is updated, the node checkpoints the associated\n          config payload to local disk, along with a record indicating intended config.\n          The node refers to this record to choose its config checkpoint, and reports\n          this record in Assigned. Assigned only updates in the status after the record\n          has been checkpointed to disk. When the Kubelet is restarted, it tries to\n          make the Assigned config the Active config by loading and validating the\n          checkpointed payload identified by Assigned.\n      error:\n        description: Error describes any problems reconciling the Spec.ConfigSource\n          to the Active config. Errors may occur, for example, attempting to checkpoint\n          Spec.ConfigSource to the local Assigned record, attempting to checkpoint\n          the payload associated with Spec.ConfigSource, attempting to load or validate\n          the Assigned config, etc. Errors may occur at different points while syncing\n          config. Earlier errors (e.g. download or checkpointing errors) will not\n          result in a rollback to LastKnownGood, and may resolve across Kubelet retries.\n          Later errors (e.g. loading or validating a checkpointed config) will result\n          in a rollback to LastKnownGood. In the latter case, it is usually possible\n          to resolve the error by fixing the config assigned in Spec.ConfigSource.\n          You can find additional information for debugging by searching the error\n          message in the Kubelet log. Error is a human-readable description of the\n          error state; machines can check whether or not Error is empty, but should\n          not rely on the stability of the Error text across Kubelet versions.\n        type: string\n      lastKnownGood:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeConfigSource'\n        description: LastKnownGood reports the checkpointed config the node will fall\n          back to when it encounters an error attempting to use the Assigned config.\n          The Assigned config becomes the LastKnownGood config when the node determines\n          that the Assigned config is stable and correct. This is currently implemented\n          as a 10-minute soak period starting when the local record of Assigned config\n          is updated. If the Assigned config is Active at the end of this period,\n          it becomes the LastKnownGood. Note that if Spec.ConfigSource is reset to\n          nil (use local defaults), the LastKnownGood is also immediately reset to\n          nil, because the local default config is always assumed good. You should\n          not make assumptions about the node's method of determining config stability\n          and correctness, as this may change or become configurable in the future.\n  io.k8s.api.core.v1.NodeDaemonEndpoints:\n    description: NodeDaemonEndpoints lists ports opened by daemons running on the\n      Node.\n    properties:\n      kubeletEndpoint:\n        $ref: '#/definitions/io.k8s.api.core.v1.DaemonEndpoint'\n        description: Endpoint on which Kubelet is listening.\n  io.k8s.api.core.v1.NodeList:\n    description: NodeList is the whole list of all Nodes which have been registered\n      with master.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of nodes\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Node'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: NodeList\n      version: v1\n  io.k8s.api.core.v1.NodeSelector:\n    description: A node selector represents the union of the results of one or more\n      label queries over a set of nodes; that is, it represents the OR of the selectors\n      represented by the node selector terms.\n    properties:\n      nodeSelectorTerms:\n        description: Required. A list of node selector terms. The terms are ORed.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.NodeSelectorTerm'\n        type: array\n    required:\n    - nodeSelectorTerms\n  io.k8s.api.core.v1.NodeSelectorRequirement:\n    description: A node selector requirement is a selector that contains values, a\n      key, and an operator that relates the key and values.\n    properties:\n      key:\n        description: The label key that the selector applies to.\n        type: string\n      operator:\n        description: Represents a key's relationship to a set of values. Valid operators\n          are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n        type: string\n      values:\n        description: An array of string values. If the operator is In or NotIn, the\n          values array must be non-empty. If the operator is Exists or DoesNotExist,\n          the values array must be empty. If the operator is Gt or Lt, the values\n          array must have a single element, which will be interpreted as an integer.\n          This array is replaced during a strategic merge patch.\n        items:\n          type: string\n        type: array\n    required:\n    - key\n    - operator\n  io.k8s.api.core.v1.NodeSelectorTerm:\n    description: A null or empty node selector term matches no objects. The requirements\n      of them are ANDed. The TopologySelectorTerm type implements a subset of the\n      NodeSelectorTerm.\n    properties:\n      matchExpressions:\n        description: A list of node selector requirements by node's labels.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement'\n        type: array\n      matchFields:\n        description: A list of node selector requirements by node's fields.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement'\n        type: array\n  io.k8s.api.core.v1.NodeSpec:\n    description: NodeSpec describes the attributes that a node is created with.\n    properties:\n      configSource:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeConfigSource'\n        description: If specified, the source to get node configuration from The DynamicKubeletConfig\n          feature gate must be enabled for the Kubelet to use this field\n      externalID:\n        description: 'Deprecated. Not all kubelets will set this field. Remove field\n          after 1.13. see: https://issues.k8s.io/61966'\n        type: string\n      podCIDR:\n        description: PodCIDR represents the pod IP range assigned to the node.\n        type: string\n      providerID:\n        description: 'ID of the node assigned by the cloud provider in the format:\n          <ProviderName>://<ProviderSpecificNodeID>'\n        type: string\n      taints:\n        description: If specified, the node's taints.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Taint'\n        type: array\n      unschedulable:\n        description: 'Unschedulable controls node schedulability of new pods. By default,\n          node is schedulable. More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration'\n        type: boolean\n  io.k8s.api.core.v1.NodeStatus:\n    description: NodeStatus is information about the current status of a node.\n    properties:\n      addresses:\n        description: 'List of addresses reachable to the node. Queried from cloud\n          provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.NodeAddress'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      allocatable:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: Allocatable represents the resources of a node that are available\n          for scheduling. Defaults to Capacity.\n        type: object\n      capacity:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: 'Capacity represents the total resources of a node. More info:\n          https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity'\n        type: object\n      conditions:\n        description: 'Conditions is an array of current observed node conditions.\n          More info: https://kubernetes.io/docs/concepts/nodes/node/#condition'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.NodeCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      config:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeConfigStatus'\n        description: Status of the config assigned to the node via the dynamic Kubelet\n          config feature.\n      daemonEndpoints:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints'\n        description: Endpoints of daemons running on the Node.\n      images:\n        description: List of container images on this node\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ContainerImage'\n        type: array\n      nodeInfo:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeSystemInfo'\n        description: 'Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info'\n      phase:\n        description: 'NodePhase is the recently observed lifecycle phase of the node.\n          More info: https://kubernetes.io/docs/concepts/nodes/node/#phase The field\n          is never populated, and now is deprecated.'\n        type: string\n      volumesAttached:\n        description: List of volumes that are attached to the node.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.AttachedVolume'\n        type: array\n      volumesInUse:\n        description: List of attachable volumes in use (mounted) by the node.\n        items:\n          type: string\n        type: array\n  io.k8s.api.core.v1.NodeSystemInfo:\n    description: NodeSystemInfo is a set of ids/uuids to uniquely identify the node.\n    properties:\n      architecture:\n        description: The Architecture reported by the node\n        type: string\n      bootID:\n        description: Boot ID reported by the node.\n        type: string\n      containerRuntimeVersion:\n        description: ContainerRuntime Version reported by the node through runtime\n          remote API (e.g. docker://1.5.0).\n        type: string\n      kernelVersion:\n        description: Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).\n        type: string\n      kubeProxyVersion:\n        description: KubeProxy Version reported by the node.\n        type: string\n      kubeletVersion:\n        description: Kubelet Version reported by the node.\n        type: string\n      machineID:\n        description: 'MachineID reported by the node. For unique machine identification\n          in the cluster this field is preferred. Learn more from man(5) machine-id:\n          http://man7.org/linux/man-pages/man5/machine-id.5.html'\n        type: string\n      operatingSystem:\n        description: The Operating System reported by the node\n        type: string\n      osImage:\n        description: OS Image reported by the node from /etc/os-release (e.g. Debian\n          GNU/Linux 7 (wheezy)).\n        type: string\n      systemUUID:\n        description: SystemUUID reported by the node. For unique machine identification\n          MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html\n        type: string\n    required:\n    - machineID\n    - systemUUID\n    - bootID\n    - kernelVersion\n    - osImage\n    - containerRuntimeVersion\n    - kubeletVersion\n    - kubeProxyVersion\n    - operatingSystem\n    - architecture\n  io.k8s.api.core.v1.ObjectFieldSelector:\n    description: ObjectFieldSelector selects an APIVersioned field of an object.\n    properties:\n      apiVersion:\n        description: Version of the schema the FieldPath is written in terms of, defaults\n          to \"v1\".\n        type: string\n      fieldPath:\n        description: Path of the field to select in the specified API version.\n        type: string\n    required:\n    - fieldPath\n  io.k8s.api.core.v1.ObjectReference:\n    description: ObjectReference contains enough information to let you inspect or\n      modify the referred object.\n    properties:\n      apiVersion:\n        description: API version of the referent.\n        type: string\n      fieldPath:\n        description: 'If referring to a piece of an object instead of an entire object,\n          this string should contain a valid JSON/Go field access statement, such\n          as desiredState.manifest.containers[2]. For example, if the object reference\n          is to a container within a pod, this would take on a value like: \"spec.containers{name}\"\n          (where \"name\" refers to the name of the container that triggered the event)\n          or if no container name is specified \"spec.containers[2]\" (container with\n          index 2 in this pod). This syntax is chosen only to have some well-defined\n          way of referencing a part of an object.'\n        type: string\n      kind:\n        description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      namespace:\n        description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'\n        type: string\n      resourceVersion:\n        description: 'Specific resourceVersion to which this reference is made, if\n          any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'\n        type: string\n      uid:\n        description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'\n        type: string\n  io.k8s.api.core.v1.PersistentVolume:\n    description: 'PersistentVolume (PV) is a storage resource provisioned by an administrator.\n      It is analogous to a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes'\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec'\n        description: 'Spec defines a specification of a persistent volume owned by\n          the cluster. Provisioned by an administrator. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes'\n      status:\n        $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeStatus'\n        description: 'Status represents the current information/status for the persistent\n          volume. Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: PersistentVolume\n      version: v1\n  io.k8s.api.core.v1.PersistentVolumeClaim:\n    description: PersistentVolumeClaim is a user's request for and claim to a persistent\n      volume\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec'\n        description: 'Spec defines the desired characteristics of a volume requested\n          by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n      status:\n        $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimStatus'\n        description: 'Status represents the current information/status of a persistent\n          volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: PersistentVolumeClaim\n      version: v1\n  io.k8s.api.core.v1.PersistentVolumeClaimCondition:\n    description: PersistentVolumeClaimCondition contails details about state of pvc\n    properties:\n      lastProbeTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time we probed the condition.\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: Human-readable message indicating details about last transition.\n        type: string\n      reason:\n        description: Unique, this should be a short, machine understandable string\n          that gives the reason for condition's last transition. If it reports \"ResizeStarted\"\n          that means the underlying persistent volume is being resized.\n        type: string\n      status:\n        type: string\n      type:\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.core.v1.PersistentVolumeClaimList:\n    description: PersistentVolumeClaimList is a list of PersistentVolumeClaim items.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'A list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: PersistentVolumeClaimList\n      version: v1\n  io.k8s.api.core.v1.PersistentVolumeClaimSpec:\n    description: PersistentVolumeClaimSpec describes the common attributes of storage\n      devices and allows a Source for provider-specific attributes\n    properties:\n      accessModes:\n        description: 'AccessModes contains the desired access modes the volume should\n          have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n        items:\n          type: string\n        type: array\n      resources:\n        $ref: '#/definitions/io.k8s.api.core.v1.ResourceRequirements'\n        description: 'Resources represents the minimum resources the volume should\n          have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: A label query over volumes to consider for binding.\n      storageClassName:\n        description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'\n        type: string\n      volumeMode:\n        description: volumeMode defines what type of volume is required by the claim.\n          Value of Filesystem is implied when not included in claim spec. This is\n          an alpha feature and may change in the future.\n        type: string\n      volumeName:\n        description: VolumeName is the binding reference to the PersistentVolume backing\n          this claim.\n        type: string\n  io.k8s.api.core.v1.PersistentVolumeClaimStatus:\n    description: PersistentVolumeClaimStatus is the current status of a persistent\n      volume claim.\n    properties:\n      accessModes:\n        description: 'AccessModes contains the actual access modes the volume backing\n          the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'\n        items:\n          type: string\n        type: array\n      capacity:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: Represents the actual resources of the underlying volume.\n        type: object\n      conditions:\n        description: Current Condition of persistent volume claim. If underlying persistent\n          volume is being resized then the Condition will be set to 'ResizeStarted'.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      phase:\n        description: Phase represents the current phase of PersistentVolumeClaim.\n        type: string\n  io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource:\n    description: PersistentVolumeClaimVolumeSource references the user's PVC in the\n      same namespace. This volume finds the bound PV and mounts that volume for the\n      pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another\n      type of volume that is owned by someone else (the system).\n    properties:\n      claimName:\n        description: 'ClaimName is the name of a PersistentVolumeClaim in the same\n          namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n        type: string\n      readOnly:\n        description: Will force the ReadOnly setting in VolumeMounts. Default false.\n        type: boolean\n    required:\n    - claimName\n  io.k8s.api.core.v1.PersistentVolumeList:\n    description: PersistentVolumeList is a list of PersistentVolume items.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'List of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: PersistentVolumeList\n      version: v1\n  io.k8s.api.core.v1.PersistentVolumeSpec:\n    description: PersistentVolumeSpec is the specification of a persistent volume.\n    properties:\n      accessModes:\n        description: 'AccessModes contains all ways the volume can be mounted. More\n          info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes'\n        items:\n          type: string\n        type: array\n      awsElasticBlockStore:\n        $ref: '#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource'\n        description: 'AWSElasticBlockStore represents an AWS Disk resource that is\n          attached to a kubelet''s host machine and then exposed to the pod. More\n          info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n      azureDisk:\n        $ref: '#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource'\n        description: AzureDisk represents an Azure Data Disk mount on the host and\n          bind mount to the pod.\n      azureFile:\n        $ref: '#/definitions/io.k8s.api.core.v1.AzureFilePersistentVolumeSource'\n        description: AzureFile represents an Azure File Service mount on the host\n          and bind mount to the pod.\n      capacity:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: 'A description of the persistent volume''s resources and capacity.\n          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity'\n        type: object\n      cephfs:\n        $ref: '#/definitions/io.k8s.api.core.v1.CephFSPersistentVolumeSource'\n        description: CephFS represents a Ceph FS mount on the host that shares a pod's\n          lifetime\n      cinder:\n        $ref: '#/definitions/io.k8s.api.core.v1.CinderPersistentVolumeSource'\n        description: 'Cinder represents a cinder volume attached and mounted on kubelets\n          host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md'\n      claimRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        description: 'ClaimRef is part of a bi-directional binding between PersistentVolume\n          and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName\n          is the authoritative bind between PV and PVC. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding'\n      csi:\n        $ref: '#/definitions/io.k8s.api.core.v1.CSIPersistentVolumeSource'\n        description: CSI represents storage that handled by an external CSI driver\n          (Beta feature).\n      fc:\n        $ref: '#/definitions/io.k8s.api.core.v1.FCVolumeSource'\n        description: FC represents a Fibre Channel resource that is attached to a\n          kubelet's host machine and then exposed to the pod.\n      flexVolume:\n        $ref: '#/definitions/io.k8s.api.core.v1.FlexPersistentVolumeSource'\n        description: FlexVolume represents a generic volume resource that is provisioned/attached\n          using an exec based plugin.\n      flocker:\n        $ref: '#/definitions/io.k8s.api.core.v1.FlockerVolumeSource'\n        description: Flocker represents a Flocker volume attached to a kubelet's host\n          machine and exposed to the pod for its usage. This depends on the Flocker\n          control service being running\n      gcePersistentDisk:\n        $ref: '#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource'\n        description: 'GCEPersistentDisk represents a GCE Disk resource that is attached\n          to a kubelet''s host machine and then exposed to the pod. Provisioned by\n          an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n      glusterfs:\n        $ref: '#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource'\n        description: 'Glusterfs represents a Glusterfs volume that is attached to\n          a host and exposed to the pod. Provisioned by an admin. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md'\n      hostPath:\n        $ref: '#/definitions/io.k8s.api.core.v1.HostPathVolumeSource'\n        description: 'HostPath represents a directory on the host. Provisioned by\n          a developer or tester. This is useful for single-node development and testing\n          only! On-host storage is not supported in any way and WILL NOT WORK in a\n          multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n      iscsi:\n        $ref: '#/definitions/io.k8s.api.core.v1.ISCSIPersistentVolumeSource'\n        description: ISCSI represents an ISCSI Disk resource that is attached to a\n          kubelet's host machine and then exposed to the pod. Provisioned by an admin.\n      local:\n        $ref: '#/definitions/io.k8s.api.core.v1.LocalVolumeSource'\n        description: Local represents directly-attached storage with node affinity\n      mountOptions:\n        description: 'A list of mount options, e.g. [\"ro\", \"soft\"]. Not validated\n          - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options'\n        items:\n          type: string\n        type: array\n      nfs:\n        $ref: '#/definitions/io.k8s.api.core.v1.NFSVolumeSource'\n        description: 'NFS represents an NFS mount on the host. Provisioned by an admin.\n          More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n      nodeAffinity:\n        $ref: '#/definitions/io.k8s.api.core.v1.VolumeNodeAffinity'\n        description: NodeAffinity defines constraints that limit what nodes this volume\n          can be accessed from. This field influences the scheduling of pods that\n          use this volume.\n      persistentVolumeReclaimPolicy:\n        description: 'What happens to a persistent volume when released from its claim.\n          Valid options are Retain (default for manually created PersistentVolumes),\n          Delete (default for dynamically provisioned PersistentVolumes), and Recycle\n          (deprecated). Recycle must be supported by the volume plugin underlying\n          this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming'\n        type: string\n      photonPersistentDisk:\n        $ref: '#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource'\n        description: PhotonPersistentDisk represents a PhotonController persistent\n          disk attached and mounted on kubelets host machine\n      portworxVolume:\n        $ref: '#/definitions/io.k8s.api.core.v1.PortworxVolumeSource'\n        description: PortworxVolume represents a portworx volume attached and mounted\n          on kubelets host machine\n      quobyte:\n        $ref: '#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource'\n        description: Quobyte represents a Quobyte mount on the host that shares a\n          pod's lifetime\n      rbd:\n        $ref: '#/definitions/io.k8s.api.core.v1.RBDPersistentVolumeSource'\n        description: 'RBD represents a Rados Block Device mount on the host that shares\n          a pod''s lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md'\n      scaleIO:\n        $ref: '#/definitions/io.k8s.api.core.v1.ScaleIOPersistentVolumeSource'\n        description: ScaleIO represents a ScaleIO persistent volume attached and mounted\n          on Kubernetes nodes.\n      storageClassName:\n        description: Name of StorageClass to which this persistent volume belongs.\n          Empty value means that this volume does not belong to any StorageClass.\n        type: string\n      storageos:\n        $ref: '#/definitions/io.k8s.api.core.v1.StorageOSPersistentVolumeSource'\n        description: 'StorageOS represents a StorageOS volume that is attached to\n          the kubelet''s host machine and mounted into the pod More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md'\n      volumeMode:\n        description: volumeMode defines if a volume is intended to be used with a\n          formatted filesystem or to remain in raw block state. Value of Filesystem\n          is implied when not included in spec. This is an alpha feature and may change\n          in the future.\n        type: string\n      vsphereVolume:\n        $ref: '#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource'\n        description: VsphereVolume represents a vSphere volume attached and mounted\n          on kubelets host machine\n  io.k8s.api.core.v1.PersistentVolumeStatus:\n    description: PersistentVolumeStatus is the current status of a persistent volume.\n    properties:\n      message:\n        description: A human-readable message indicating details about why the volume\n          is in this state.\n        type: string\n      phase:\n        description: 'Phase indicates if a volume is available, bound to a claim,\n          or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase'\n        type: string\n      reason:\n        description: Reason is a brief CamelCase string that describes any failure\n          and is meant for machine parsing and tidy display in the CLI.\n        type: string\n  io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource:\n    description: Represents a Photon Controller persistent disk resource.\n    properties:\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred\n          to be \"ext4\" if unspecified.\n        type: string\n      pdID:\n        description: ID that identifies Photon Controller persistent disk\n        type: string\n    required:\n    - pdID\n  io.k8s.api.core.v1.Pod:\n    description: Pod is a collection of containers that can run on a host. This resource\n      is created by clients and scheduled onto hosts.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodSpec'\n        description: 'Specification of the desired behavior of the pod. More info:\n          https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodStatus'\n        description: 'Most recently observed status of the pod. This data may not\n          be up to date. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Pod\n      version: v1\n  io.k8s.api.core.v1.PodAffinity:\n    description: Pod affinity is a group of inter pod affinity scheduling rules.\n    properties:\n      preferredDuringSchedulingIgnoredDuringExecution:\n        description: The scheduler will prefer to schedule pods to nodes that satisfy\n          the affinity expressions specified by this field, but it may choose a node\n          that violates one or more of the expressions. The node that is most preferred\n          is the one with the greatest sum of weights, i.e. for each node that meets\n          all of the scheduling requirements (resource request, requiredDuringScheduling\n          affinity expressions, etc.), compute a sum by iterating through the elements\n          of this field and adding \"weight\" to the sum if the node has pods which\n          matches the corresponding podAffinityTerm; the node(s) with the highest\n          sum are the most preferred.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm'\n        type: array\n      requiredDuringSchedulingIgnoredDuringExecution:\n        description: If the affinity requirements specified by this field are not\n          met at scheduling time, the pod will not be scheduled onto the node. If\n          the affinity requirements specified by this field cease to be met at some\n          point during pod execution (e.g. due to a pod label update), the system\n          may or may not try to eventually evict the pod from its node. When there\n          are multiple elements, the lists of nodes corresponding to each podAffinityTerm\n          are intersected, i.e. all terms must be satisfied.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PodAffinityTerm'\n        type: array\n  io.k8s.api.core.v1.PodAffinityTerm:\n    description: Defines a set of pods (namely those matching the labelSelector relative\n      to the given namespace(s)) that this pod should be co-located (affinity) or\n      not co-located (anti-affinity) with, where co-located is defined as running\n      on a node whose value of the label with key <topologyKey> matches that of any\n      node on which a pod of the set of pods is running\n    properties:\n      labelSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: A label query over a set of resources, in this case pods.\n      namespaces:\n        description: namespaces specifies which namespaces the labelSelector applies\n          to (matches against); null or empty list means \"this pod's namespace\"\n        items:\n          type: string\n        type: array\n      topologyKey:\n        description: This pod should be co-located (affinity) or not co-located (anti-affinity)\n          with the pods matching the labelSelector in the specified namespaces, where\n          co-located is defined as running on a node whose value of the label with\n          key topologyKey matches that of any node on which any of the selected pods\n          is running. Empty topologyKey is not allowed.\n        type: string\n    required:\n    - topologyKey\n  io.k8s.api.core.v1.PodAntiAffinity:\n    description: Pod anti affinity is a group of inter pod anti affinity scheduling\n      rules.\n    properties:\n      preferredDuringSchedulingIgnoredDuringExecution:\n        description: The scheduler will prefer to schedule pods to nodes that satisfy\n          the anti-affinity expressions specified by this field, but it may choose\n          a node that violates one or more of the expressions. The node that is most\n          preferred is the one with the greatest sum of weights, i.e. for each node\n          that meets all of the scheduling requirements (resource request, requiredDuringScheduling\n          anti-affinity expressions, etc.), compute a sum by iterating through the\n          elements of this field and adding \"weight\" to the sum if the node has pods\n          which matches the corresponding podAffinityTerm; the node(s) with the highest\n          sum are the most preferred.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm'\n        type: array\n      requiredDuringSchedulingIgnoredDuringExecution:\n        description: If the anti-affinity requirements specified by this field are\n          not met at scheduling time, the pod will not be scheduled onto the node.\n          If the anti-affinity requirements specified by this field cease to be met\n          at some point during pod execution (e.g. due to a pod label update), the\n          system may or may not try to eventually evict the pod from its node. When\n          there are multiple elements, the lists of nodes corresponding to each podAffinityTerm\n          are intersected, i.e. all terms must be satisfied.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PodAffinityTerm'\n        type: array\n  io.k8s.api.core.v1.PodCondition:\n    description: PodCondition contains details for the current condition of this pod.\n    properties:\n      lastProbeTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time we probed the condition.\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: Human-readable message indicating details about last transition.\n        type: string\n      reason:\n        description: Unique, one-word, CamelCase reason for the condition's last transition.\n        type: string\n      status:\n        description: 'Status is the status of the condition. Can be True, False, Unknown.\n          More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions'\n        type: string\n      type:\n        description: 'Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions'\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.core.v1.PodDNSConfig:\n    description: PodDNSConfig defines the DNS parameters of a pod in addition to those\n      generated from DNSPolicy.\n    properties:\n      nameservers:\n        description: A list of DNS name server IP addresses. This will be appended\n          to the base nameservers generated from DNSPolicy. Duplicated nameservers\n          will be removed.\n        items:\n          type: string\n        type: array\n      options:\n        description: A list of DNS resolver options. This will be merged with the\n          base options generated from DNSPolicy. Duplicated entries will be removed.\n          Resolution options given in Options will override those that appear in the\n          base DNSPolicy.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PodDNSConfigOption'\n        type: array\n      searches:\n        description: A list of DNS search domains for host-name lookup. This will\n          be appended to the base search paths generated from DNSPolicy. Duplicated\n          search paths will be removed.\n        items:\n          type: string\n        type: array\n  io.k8s.api.core.v1.PodDNSConfigOption:\n    description: PodDNSConfigOption defines DNS resolver options of a pod.\n    properties:\n      name:\n        description: Required.\n        type: string\n      value:\n        type: string\n  io.k8s.api.core.v1.PodList:\n    description: PodList is a list of Pods.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'List of pods. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: PodList\n      version: v1\n  io.k8s.api.core.v1.PodReadinessGate:\n    description: PodReadinessGate contains the reference to a pod condition\n    properties:\n      conditionType:\n        description: ConditionType refers to a condition in the pod's condition list\n          with matching type.\n        type: string\n    required:\n    - conditionType\n  io.k8s.api.core.v1.PodSecurityContext:\n    description: PodSecurityContext holds pod-level security attributes and common\n      container settings. Some fields are also present in container.securityContext.  Field\n      values of container.securityContext take precedence over field values of PodSecurityContext.\n    properties:\n      fsGroup:\n        description: 'A special supplemental group that applies to all containers\n          in a pod. Some volume types allow the Kubelet to change the ownership of\n          that volume to be owned by the pod:\n\n\n          1. The owning GID will be the FSGroup 2. The setgid bit is set (new files\n          created in the volume will be owned by FSGroup) 3. The permission bits are\n          OR''d with rw-rw----\n\n\n          If unset, the Kubelet will not modify the ownership and permissions of any\n          volume.'\n        format: int64\n        type: integer\n      runAsGroup:\n        description: The GID to run the entrypoint of the container process. Uses\n          runtime default if unset. May also be set in SecurityContext.  If set in\n          both SecurityContext and PodSecurityContext, the value specified in SecurityContext\n          takes precedence for that container.\n        format: int64\n        type: integer\n      runAsNonRoot:\n        description: Indicates that the container must run as a non-root user. If\n          true, the Kubelet will validate the image at runtime to ensure that it does\n          not run as UID 0 (root) and fail to start the container if it does. If unset\n          or false, no such validation will be performed. May also be set in SecurityContext.  If\n          set in both SecurityContext and PodSecurityContext, the value specified\n          in SecurityContext takes precedence.\n        type: boolean\n      runAsUser:\n        description: The UID to run the entrypoint of the container process. Defaults\n          to user specified in image metadata if unspecified. May also be set in SecurityContext.  If\n          set in both SecurityContext and PodSecurityContext, the value specified\n          in SecurityContext takes precedence for that container.\n        format: int64\n        type: integer\n      seLinuxOptions:\n        $ref: '#/definitions/io.k8s.api.core.v1.SELinuxOptions'\n        description: The SELinux context to be applied to all containers. If unspecified,\n          the container runtime will allocate a random SELinux context for each container.  May\n          also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext,\n          the value specified in SecurityContext takes precedence for that container.\n      supplementalGroups:\n        description: A list of groups applied to the first process run in each container,\n          in addition to the container's primary GID.  If unspecified, no groups will\n          be added to any container.\n        items:\n          format: int64\n          type: integer\n        type: array\n      sysctls:\n        description: Sysctls hold a list of namespaced sysctls used for the pod. Pods\n          with unsupported sysctls (by the container runtime) might fail to launch.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Sysctl'\n        type: array\n  io.k8s.api.core.v1.PodSpec:\n    description: PodSpec is a description of a pod.\n    properties:\n      activeDeadlineSeconds:\n        description: Optional duration in seconds the pod may be active on the node\n          relative to StartTime before the system will actively try to mark it failed\n          and kill associated containers. Value must be a positive integer.\n        format: int64\n        type: integer\n      affinity:\n        $ref: '#/definitions/io.k8s.api.core.v1.Affinity'\n        description: If specified, the pod's scheduling constraints\n      automountServiceAccountToken:\n        description: AutomountServiceAccountToken indicates whether a service account\n          token should be automatically mounted.\n        type: boolean\n      containers:\n        description: List of containers belonging to the pod. Containers cannot currently\n          be added or removed. There must be at least one container in a Pod. Cannot\n          be updated.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Container'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n      dnsConfig:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodDNSConfig'\n        description: Specifies the DNS parameters of a pod. Parameters specified here\n          will be merged to the generated DNS configuration based on DNSPolicy.\n      dnsPolicy:\n        description: Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid\n          values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\n          DNS parameters given in DNSConfig will be merged with the policy selected\n          with DNSPolicy. To have DNS options set along with hostNetwork, you have\n          to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.\n        type: string\n      hostAliases:\n        description: HostAliases is an optional list of hosts and IPs that will be\n          injected into the pod's hosts file if specified. This is only valid for\n          non-hostNetwork pods.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.HostAlias'\n        type: array\n        x-kubernetes-patch-merge-key: ip\n        x-kubernetes-patch-strategy: merge\n      hostIPC:\n        description: 'Use the host''s ipc namespace. Optional: Default to false.'\n        type: boolean\n      hostNetwork:\n        description: Host networking requested for this pod. Use the host's network\n          namespace. If this option is set, the ports that will be used must be specified.\n          Default to false.\n        type: boolean\n      hostPID:\n        description: 'Use the host''s pid namespace. Optional: Default to false.'\n        type: boolean\n      hostname:\n        description: Specifies the hostname of the Pod If not specified, the pod's\n          hostname will be set to a system-defined value.\n        type: string\n      imagePullSecrets:\n        description: 'ImagePullSecrets is an optional list of references to secrets\n          in the same namespace to use for pulling any of the images used by this\n          PodSpec. If specified, these secrets will be passed to individual puller\n          implementations for them to use. For example, in the case of docker, only\n          DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n      initContainers:\n        description: 'List of initialization containers belonging to the pod. Init\n          containers are executed in order prior to containers being started. If any\n          init container fails, the pod is considered to have failed and is handled\n          according to its restartPolicy. The name for an init container or normal\n          container must be unique among all containers. Init containers may not have\n          Lifecycle actions, Readiness probes, or Liveness probes. The resourceRequirements\n          of an init container are taken into account during scheduling by finding\n          the highest request/limit for each resource type, and then using the max\n          of of that value or the sum of the normal containers. Limits are applied\n          to init containers in a similar fashion. Init containers cannot currently\n          be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Container'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n      nodeName:\n        description: NodeName is a request to schedule this pod onto a specific node.\n          If it is non-empty, the scheduler simply schedules this pod onto that node,\n          assuming that it fits resource requirements.\n        type: string\n      nodeSelector:\n        additionalProperties:\n          type: string\n        description: 'NodeSelector is a selector which must be true for the pod to\n          fit on a node. Selector which must match a node''s labels for the pod to\n          be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'\n        type: object\n      priority:\n        description: The priority value. Various system components use this field\n          to find the priority of the pod. When Priority Admission Controller is enabled,\n          it prevents users from setting this field. The admission controller populates\n          this field from PriorityClassName. The higher the value, the higher the\n          priority.\n        format: int32\n        type: integer\n      priorityClassName:\n        description: If specified, indicates the pod's priority. \"system-node-critical\"\n          and \"system-cluster-critical\" are two special keywords which indicate the\n          highest priorities with the former being the highest priority. Any other\n          name must be defined by creating a PriorityClass object with that name.\n          If not specified, the pod priority will be default or zero if there is no\n          default.\n        type: string\n      readinessGates:\n        description: 'If specified, all readiness gates will be evaluated for pod\n          readiness. A pod is ready when all its containers are ready AND all conditions\n          specified in the readiness gates have status equal to \"True\" More info:\n          https://github.com/kubernetes/community/blob/master/keps/sig-network/0007-pod-ready%2B%2B.md'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PodReadinessGate'\n        type: array\n      restartPolicy:\n        description: 'Restart policy for all containers within the pod. One of Always,\n          OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy'\n        type: string\n      schedulerName:\n        description: If specified, the pod will be dispatched by specified scheduler.\n          If not specified, the pod will be dispatched by default scheduler.\n        type: string\n      securityContext:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodSecurityContext'\n        description: 'SecurityContext holds pod-level security attributes and common\n          container settings. Optional: Defaults to empty.  See type description for\n          default values of each field.'\n      serviceAccount:\n        description: 'DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.\n          Deprecated: Use serviceAccountName instead.'\n        type: string\n      serviceAccountName:\n        description: 'ServiceAccountName is the name of the ServiceAccount to use\n          to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/'\n        type: string\n      shareProcessNamespace:\n        description: 'Share a single process namespace between all of the containers\n          in a pod. When this is set containers will be able to view and signal processes\n          from other containers in the same pod, and the first process in each container\n          will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both\n          be set. Optional: Default to false. This field is alpha-level and is honored\n          only by servers that enable the PodShareProcessNamespace feature.'\n        type: boolean\n      subdomain:\n        description: If specified, the fully qualified Pod hostname will be \"<hostname>.<subdomain>.<pod\n          namespace>.svc.<cluster domain>\". If not specified, the pod will not have\n          a domainname at all.\n        type: string\n      terminationGracePeriodSeconds:\n        description: Optional duration in seconds the pod needs to terminate gracefully.\n          May be decreased in delete request. Value must be non-negative integer.\n          The value zero indicates delete immediately. If this value is nil, the default\n          grace period will be used instead. The grace period is the duration in seconds\n          after the processes running in the pod are sent a termination signal and\n          the time when the processes are forcibly halted with a kill signal. Set\n          this value longer than the expected cleanup time for your process. Defaults\n          to 30 seconds.\n        format: int64\n        type: integer\n      tolerations:\n        description: If specified, the pod's tolerations.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Toleration'\n        type: array\n      volumes:\n        description: 'List of volumes that can be mounted by containers belonging\n          to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Volume'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge,retainKeys\n    required:\n    - containers\n  io.k8s.api.core.v1.PodStatus:\n    description: PodStatus represents information about the status of a pod. Status\n      may trail the actual state of a system, especially if the node that hosts the\n      pod cannot contact the control plane.\n    properties:\n      conditions:\n        description: 'Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PodCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      containerStatuses:\n        description: 'The list has one entry per container in the manifest. Each entry\n          is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ContainerStatus'\n        type: array\n      hostIP:\n        description: IP address of the host to which the pod is assigned. Empty if\n          not yet scheduled.\n        type: string\n      initContainerStatuses:\n        description: 'The list has one entry per init container in the manifest. The\n          most recent successful init container will have ready = true, the most recently\n          started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ContainerStatus'\n        type: array\n      message:\n        description: A human readable message indicating details about why the pod\n          is in this condition.\n        type: string\n      nominatedNodeName:\n        description: nominatedNodeName is set only when this pod preempts other pods\n          on the node, but it cannot be scheduled right away as preemption victims\n          receive their graceful termination periods. This field does not guarantee\n          that the pod will be scheduled on this node. Scheduler may decide to place\n          the pod elsewhere if other nodes become available sooner. Scheduler may\n          also decide to give the resources on this node to a higher priority pod\n          that is created after preemption. As a result, this field may be different\n          than PodSpec.nodeName when the pod is scheduled.\n        type: string\n      phase:\n        description: 'The phase of a Pod is a simple, high-level summary of where\n          the Pod is in its lifecycle. The conditions array, the reason and message\n          fields, and the individual container status arrays contain more detail about\n          the pod''s status. There are five possible phase values:\n\n\n          Pending: The pod has been accepted by the Kubernetes system, but one or\n          more of the container images has not been created. This includes time before\n          being scheduled as well as time spent downloading images over the network,\n          which could take a while. Running: The pod has been bound to a node, and\n          all of the containers have been created. At least one container is still\n          running, or is in the process of starting or restarting. Succeeded: All\n          containers in the pod have terminated in success, and will not be restarted.\n          Failed: All containers in the pod have terminated, and at least one container\n          has terminated in failure. The container either exited with non-zero status\n          or was terminated by the system. Unknown: For some reason the state of the\n          pod could not be obtained, typically due to an error in communicating with\n          the host of the pod.\n\n\n          More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase'\n        type: string\n      podIP:\n        description: IP address allocated to the pod. Routable at least within the\n          cluster. Empty if not yet allocated.\n        type: string\n      qosClass:\n        description: 'The Quality of Service (QOS) classification assigned to the\n          pod based on resource requirements See PodQOSClass type for available QOS\n          classes More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md'\n        type: string\n      reason:\n        description: A brief CamelCase message indicating details about why the pod\n          is in this state. e.g. 'Evicted'\n        type: string\n      startTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: RFC 3339 date and time at which the object was acknowledged by\n          the Kubelet. This is before the Kubelet pulled the container image(s) for\n          the pod.\n  io.k8s.api.core.v1.PodTemplate:\n    description: PodTemplate describes a template for creating copies of a predefined\n      pod.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: Template defines the pods that will be created from this pod\n          template. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: PodTemplate\n      version: v1\n  io.k8s.api.core.v1.PodTemplateList:\n    description: PodTemplateList is a list of PodTemplates.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of pod templates\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: PodTemplateList\n      version: v1\n  io.k8s.api.core.v1.PodTemplateSpec:\n    description: PodTemplateSpec describes the data a pod should have when created\n      from a template\n    properties:\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodSpec'\n        description: 'Specification of the desired behavior of the pod. More info:\n          https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n  io.k8s.api.core.v1.PortworxVolumeSource:\n    description: PortworxVolumeSource represents a Portworx volume resource.\n    properties:\n      fsType:\n        description: FSType represents the filesystem type to mount Must be a filesystem\n          type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly\n          inferred to be \"ext4\" if unspecified.\n        type: string\n      readOnly:\n        description: Defaults to false (read/write). ReadOnly here will force the\n          ReadOnly setting in VolumeMounts.\n        type: boolean\n      volumeID:\n        description: VolumeID uniquely identifies a Portworx volume\n        type: string\n    required:\n    - volumeID\n  io.k8s.api.core.v1.PreferredSchedulingTerm:\n    description: An empty preferred scheduling term matches all objects with implicit\n      weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects\n      (i.e. is also a no-op).\n    properties:\n      preference:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeSelectorTerm'\n        description: A node selector term, associated with the corresponding weight.\n      weight:\n        description: Weight associated with matching the corresponding nodeSelectorTerm,\n          in the range 1-100.\n        format: int32\n        type: integer\n    required:\n    - weight\n    - preference\n  io.k8s.api.core.v1.Probe:\n    description: Probe describes a health check to be performed against a container\n      to determine whether it is alive or ready to receive traffic.\n    properties:\n      exec:\n        $ref: '#/definitions/io.k8s.api.core.v1.ExecAction'\n        description: One and only one of the following should be specified. Exec specifies\n          the action to take.\n      failureThreshold:\n        description: Minimum consecutive failures for the probe to be considered failed\n          after having succeeded. Defaults to 3. Minimum value is 1.\n        format: int32\n        type: integer\n      httpGet:\n        $ref: '#/definitions/io.k8s.api.core.v1.HTTPGetAction'\n        description: HTTPGet specifies the http request to perform.\n      initialDelaySeconds:\n        description: 'Number of seconds after the container has started before liveness\n          probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n        format: int32\n        type: integer\n      periodSeconds:\n        description: How often (in seconds) to perform the probe. Default to 10 seconds.\n          Minimum value is 1.\n        format: int32\n        type: integer\n      successThreshold:\n        description: Minimum consecutive successes for the probe to be considered\n          successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum\n          value is 1.\n        format: int32\n        type: integer\n      tcpSocket:\n        $ref: '#/definitions/io.k8s.api.core.v1.TCPSocketAction'\n        description: TCPSocket specifies an action involving a TCP port. TCP hooks\n          not yet supported\n      timeoutSeconds:\n        description: 'Number of seconds after which the probe times out. Defaults\n          to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'\n        format: int32\n        type: integer\n  io.k8s.api.core.v1.ProjectedVolumeSource:\n    description: Represents a projected volume source\n    properties:\n      defaultMode:\n        description: Mode bits to use on created files by default. Must be a value\n          between 0 and 0777. Directories within the path are not affected by this\n          setting. This might be in conflict with other options that affect the file\n          mode, like fsGroup, and the result can be other mode bits set.\n        format: int32\n        type: integer\n      sources:\n        description: list of volume projections\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.VolumeProjection'\n        type: array\n    required:\n    - sources\n  io.k8s.api.core.v1.QuobyteVolumeSource:\n    description: Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte\n      volumes do not support ownership management or SELinux relabeling.\n    properties:\n      group:\n        description: Group to map volume access to Default is no group\n        type: string\n      readOnly:\n        description: ReadOnly here will force the Quobyte volume to be mounted with\n          read-only permissions. Defaults to false.\n        type: boolean\n      registry:\n        description: Registry represents a single or multiple Quobyte Registry services\n          specified as a string as host:port pair (multiple entries are separated\n          with commas) which acts as the central registry for volumes\n        type: string\n      user:\n        description: User to map volume access to Defaults to serivceaccount user\n        type: string\n      volume:\n        description: Volume is a string that references an already created Quobyte\n          volume by name.\n        type: string\n    required:\n    - registry\n    - volume\n  io.k8s.api.core.v1.RBDPersistentVolumeSource:\n    description: Represents a Rados Block Device mount that lasts the lifetime of\n      a pod. RBD volumes support ownership management and SELinux relabeling.\n    properties:\n      fsType:\n        description: 'Filesystem type of the volume that you want to mount. Tip: Ensure\n          that the filesystem type is supported by the host operating system. Examples:\n          \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n          More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd'\n        type: string\n      image:\n        description: 'The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: string\n      keyring:\n        description: 'Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring.\n          More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: string\n      monitors:\n        description: 'A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        items:\n          type: string\n        type: array\n      pool:\n        description: 'The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: string\n      readOnly:\n        description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts.\n          Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: 'SecretRef is name of the authentication secret for RBDUser.\n          If provided overrides keyring. Default is nil. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n      user:\n        description: 'The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: string\n    required:\n    - monitors\n    - image\n  io.k8s.api.core.v1.RBDVolumeSource:\n    description: Represents a Rados Block Device mount that lasts the lifetime of\n      a pod. RBD volumes support ownership management and SELinux relabeling.\n    properties:\n      fsType:\n        description: 'Filesystem type of the volume that you want to mount. Tip: Ensure\n          that the filesystem type is supported by the host operating system. Examples:\n          \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n          More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd'\n        type: string\n      image:\n        description: 'The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: string\n      keyring:\n        description: 'Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring.\n          More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: string\n      monitors:\n        description: 'A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        items:\n          type: string\n        type: array\n      pool:\n        description: 'The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: string\n      readOnly:\n        description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts.\n          Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        description: 'SecretRef is name of the authentication secret for RBDUser.\n          If provided overrides keyring. Default is nil. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n      user:\n        description: 'The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it'\n        type: string\n    required:\n    - monitors\n    - image\n  io.k8s.api.core.v1.ReplicationController:\n    description: ReplicationController represents the configuration of a replication\n      controller.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'If the Labels of a ReplicationController are empty, they are\n          defaulted to be the same as the Pod(s) that the replication controller manages.\n          Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerSpec'\n        description: 'Spec defines the specification of the desired behavior of the\n          replication controller. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerStatus'\n        description: 'Status is the most recently observed status of the replication\n          controller. This data may be out of date by some window of time. Populated\n          by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ReplicationController\n      version: v1\n  io.k8s.api.core.v1.ReplicationControllerCondition:\n    description: ReplicationControllerCondition describes the state of a replication\n      controller at a certain point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of replication controller condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.core.v1.ReplicationControllerList:\n    description: ReplicationControllerList is a collection of replication controllers.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ReplicationControllerList\n      version: v1\n  io.k8s.api.core.v1.ReplicationControllerSpec:\n    description: ReplicationControllerSpec is the specification of a replication controller.\n    properties:\n      minReadySeconds:\n        description: Minimum number of seconds for which a newly created pod should\n          be ready without any of its container crashing, for it to be considered\n          available. Defaults to 0 (pod will be considered available as soon as it\n          is ready)\n        format: int32\n        type: integer\n      replicas:\n        description: 'Replicas is the number of desired replicas. This is a pointer\n          to distinguish between explicit zero and unspecified. Defaults to 1. More\n          info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller'\n        format: int32\n        type: integer\n      selector:\n        additionalProperties:\n          type: string\n        description: 'Selector is a label query over pods that should match the Replicas\n          count. If Selector is empty, it is defaulted to the labels present on the\n          Pod template. Label keys and values that must match in order to be controlled\n          by this replication controller, if empty defaulted to labels on Pod template.\n          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n        type: object\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: 'Template is the object that describes the pod that will be created\n          if insufficient replicas are detected. This takes precedence over a TemplateRef.\n          More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template'\n  io.k8s.api.core.v1.ReplicationControllerStatus:\n    description: ReplicationControllerStatus represents the current status of a replication\n      controller.\n    properties:\n      availableReplicas:\n        description: The number of available replicas (ready for at least minReadySeconds)\n          for this replication controller.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a replication\n          controller's current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      fullyLabeledReplicas:\n        description: The number of pods that have labels matching the labels of the\n          pod template of the replication controller.\n        format: int32\n        type: integer\n      observedGeneration:\n        description: ObservedGeneration reflects the generation of the most recently\n          observed replication controller.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: The number of ready replicas for this replication controller.\n        format: int32\n        type: integer\n      replicas:\n        description: 'Replicas is the most recently oberved number of replicas. More\n          info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller'\n        format: int32\n        type: integer\n    required:\n    - replicas\n  io.k8s.api.core.v1.ResourceFieldSelector:\n    description: ResourceFieldSelector represents container resources (cpu, memory)\n      and their output format\n    properties:\n      containerName:\n        description: 'Container name: required for volumes, optional for env vars'\n        type: string\n      divisor:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: Specifies the output format of the exposed resources, defaults\n          to \"1\"\n      resource:\n        description: 'Required: resource to select'\n        type: string\n    required:\n    - resource\n  io.k8s.api.core.v1.ResourceQuota:\n    description: ResourceQuota sets aggregate quota restrictions enforced per namespace\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuotaSpec'\n        description: Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n      status:\n        $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuotaStatus'\n        description: Status defines the actual enforced quota and its current usage.\n          https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ResourceQuota\n      version: v1\n  io.k8s.api.core.v1.ResourceQuotaList:\n    description: ResourceQuotaList is a list of ResourceQuota items.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ResourceQuotaList\n      version: v1\n  io.k8s.api.core.v1.ResourceQuotaSpec:\n    description: ResourceQuotaSpec defines the desired hard limits to enforce for\n      Quota.\n    properties:\n      hard:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: 'hard is the set of desired hard limits for each named resource.\n          More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/'\n        type: object\n      scopeSelector:\n        $ref: '#/definitions/io.k8s.api.core.v1.ScopeSelector'\n        description: scopeSelector is also a collection of filters like scopes that\n          must match each object tracked by a quota but expressed using ScopeSelectorOperator\n          in combination with possible values. For a resource to match, both scopes\n          AND scopeSelector (if specified in spec), must be matched.\n      scopes:\n        description: A collection of filters that must match each object tracked by\n          a quota. If not specified, the quota matches all objects.\n        items:\n          type: string\n        type: array\n  io.k8s.api.core.v1.ResourceQuotaStatus:\n    description: ResourceQuotaStatus defines the enforced hard limits and observed\n      use.\n    properties:\n      hard:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: 'Hard is the set of enforced hard limits for each named resource.\n          More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/'\n        type: object\n      used:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: Used is the current observed total usage of the resource in the\n          namespace.\n        type: object\n  io.k8s.api.core.v1.ResourceRequirements:\n    description: ResourceRequirements describes the compute resource requirements.\n    properties:\n      limits:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: 'Limits describes the maximum amount of compute resources allowed.\n          More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'\n        type: object\n      requests:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity'\n        description: 'Requests describes the minimum amount of compute resources required.\n          If Requests is omitted for a container, it defaults to Limits if that is\n          explicitly specified, otherwise to an implementation-defined value. More\n          info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'\n        type: object\n  io.k8s.api.core.v1.SELinuxOptions:\n    description: SELinuxOptions are the labels to be applied to the container\n    properties:\n      level:\n        description: Level is SELinux level label that applies to the container.\n        type: string\n      role:\n        description: Role is a SELinux role label that applies to the container.\n        type: string\n      type:\n        description: Type is a SELinux type label that applies to the container.\n        type: string\n      user:\n        description: User is a SELinux user label that applies to the container.\n        type: string\n  io.k8s.api.core.v1.ScaleIOPersistentVolumeSource:\n    description: ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume\n    properties:\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred\n          to be \"ext4\" if unspecified.\n        type: string\n      gateway:\n        description: The host address of the ScaleIO API Gateway.\n        type: string\n      protectionDomain:\n        description: The name of the ScaleIO Protection Domain for the configured\n          storage.\n        type: string\n      readOnly:\n        description: Defaults to false (read/write). ReadOnly here will force the\n          ReadOnly setting in VolumeMounts.\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretReference'\n        description: SecretRef references to the secret for ScaleIO user and other\n          sensitive information. If this is not provided, Login operation will fail.\n      sslEnabled:\n        description: Flag to enable/disable SSL communication with Gateway, default\n          false\n        type: boolean\n      storageMode:\n        description: Indicates whether the storage for a volume should be ThickProvisioned\n          or ThinProvisioned.\n        type: string\n      storagePool:\n        description: The ScaleIO Storage Pool associated with the protection domain.\n        type: string\n      system:\n        description: The name of the storage system as configured in ScaleIO.\n        type: string\n      volumeName:\n        description: The name of a volume already created in the ScaleIO system that\n          is associated with this volume source.\n        type: string\n    required:\n    - gateway\n    - system\n    - secretRef\n  io.k8s.api.core.v1.ScaleIOVolumeSource:\n    description: ScaleIOVolumeSource represents a persistent ScaleIO volume\n    properties:\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred\n          to be \"ext4\" if unspecified.\n        type: string\n      gateway:\n        description: The host address of the ScaleIO API Gateway.\n        type: string\n      protectionDomain:\n        description: The name of the ScaleIO Protection Domain for the configured\n          storage.\n        type: string\n      readOnly:\n        description: Defaults to false (read/write). ReadOnly here will force the\n          ReadOnly setting in VolumeMounts.\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        description: SecretRef references to the secret for ScaleIO user and other\n          sensitive information. If this is not provided, Login operation will fail.\n      sslEnabled:\n        description: Flag to enable/disable SSL communication with Gateway, default\n          false\n        type: boolean\n      storageMode:\n        description: Indicates whether the storage for a volume should be ThickProvisioned\n          or ThinProvisioned.\n        type: string\n      storagePool:\n        description: The ScaleIO Storage Pool associated with the protection domain.\n        type: string\n      system:\n        description: The name of the storage system as configured in ScaleIO.\n        type: string\n      volumeName:\n        description: The name of a volume already created in the ScaleIO system that\n          is associated with this volume source.\n        type: string\n    required:\n    - gateway\n    - system\n    - secretRef\n  io.k8s.api.core.v1.ScopeSelector:\n    description: A scope selector represents the AND of the selectors represented\n      by the scoped-resource selector requirements.\n    properties:\n      matchExpressions:\n        description: A list of scope selector requirements by scope of the resources.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ScopedResourceSelectorRequirement'\n        type: array\n  io.k8s.api.core.v1.ScopedResourceSelectorRequirement:\n    description: A scoped-resource selector requirement is a selector that contains\n      values, a scope name, and an operator that relates the scope name and values.\n    properties:\n      operator:\n        description: Represents a scope's relationship to a set of values. Valid operators\n          are In, NotIn, Exists, DoesNotExist.\n        type: string\n      scopeName:\n        description: The name of the scope that the selector applies to.\n        type: string\n      values:\n        description: An array of string values. If the operator is In or NotIn, the\n          values array must be non-empty. If the operator is Exists or DoesNotExist,\n          the values array must be empty. This array is replaced during a strategic\n          merge patch.\n        items:\n          type: string\n        type: array\n    required:\n    - scopeName\n    - operator\n  io.k8s.api.core.v1.Secret:\n    description: Secret holds secret data of a certain type. The total bytes of the\n      values in the Data field must be less than MaxSecretSize bytes.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      data:\n        additionalProperties:\n          format: byte\n          type: string\n        description: Data contains the secret data. Each key must consist of alphanumeric\n          characters, '-', '_' or '.'. The serialized form of the secret data is a\n          base64 encoded string, representing the arbitrary (possibly non-string)\n          data value here. Described in https://tools.ietf.org/html/rfc4648#section-4\n        type: object\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      stringData:\n        additionalProperties:\n          type: string\n        description: stringData allows specifying non-binary secret data in string\n          form. It is provided as a write-only convenience method. All keys and values\n          are merged into the data field on write, overwriting any existing values.\n          It is never output when reading from the API.\n        type: object\n      type:\n        description: Used to facilitate programmatic handling of secret data.\n        type: string\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Secret\n      version: v1\n  io.k8s.api.core.v1.SecretEnvSource:\n    description: 'SecretEnvSource selects a Secret to populate the environment variables\n      with.\n\n\n      The contents of the target Secret''s Data field will represent the key-value\n      pairs as environment variables.'\n    properties:\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      optional:\n        description: Specify whether the Secret must be defined\n        type: boolean\n  io.k8s.api.core.v1.SecretKeySelector:\n    description: SecretKeySelector selects a key of a Secret.\n    properties:\n      key:\n        description: The key of the secret to select from.  Must be a valid secret\n          key.\n        type: string\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      optional:\n        description: Specify whether the Secret or it's key must be defined\n        type: boolean\n    required:\n    - key\n  io.k8s.api.core.v1.SecretList:\n    description: SecretList is a list of Secret.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: SecretList\n      version: v1\n  io.k8s.api.core.v1.SecretProjection:\n    description: 'Adapts a secret into a projected volume.\n\n\n      The contents of the target Secret''s Data field will be presented in a projected\n      volume as files using the keys in the Data field as the file names. Note that\n      this is identical to a secret volume source without the default mode.'\n    properties:\n      items:\n        description: If unspecified, each key-value pair in the Data field of the\n          referenced Secret will be projected into the volume as a file whose name\n          is the key and content is the value. If specified, the listed keys will\n          be projected into the specified paths, and unlisted keys will not be present.\n          If a key is specified which is not present in the Secret, the volume setup\n          will error unless it is marked optional. Paths must be relative and may\n          not contain the '..' path or start with '..'.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.KeyToPath'\n        type: array\n      name:\n        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      optional:\n        description: Specify whether the Secret or its key must be defined\n        type: boolean\n  io.k8s.api.core.v1.SecretReference:\n    description: SecretReference represents a Secret Reference. It has enough information\n      to retrieve secret in any namespace\n    properties:\n      name:\n        description: Name is unique within a namespace to reference a secret resource.\n        type: string\n      namespace:\n        description: Namespace defines the space within which the secret name must\n          be unique.\n        type: string\n  io.k8s.api.core.v1.SecretVolumeSource:\n    description: 'Adapts a Secret into a volume.\n\n\n      The contents of the target Secret''s Data field will be presented in a volume\n      as files using the keys in the Data field as the file names. Secret volumes\n      support ownership management and SELinux relabeling.'\n    properties:\n      defaultMode:\n        description: 'Optional: mode bits to use on created files by default. Must\n          be a value between 0 and 0777. Defaults to 0644. Directories within the\n          path are not affected by this setting. This might be in conflict with other\n          options that affect the file mode, like fsGroup, and the result can be other\n          mode bits set.'\n        format: int32\n        type: integer\n      items:\n        description: If unspecified, each key-value pair in the Data field of the\n          referenced Secret will be projected into the volume as a file whose name\n          is the key and content is the value. If specified, the listed keys will\n          be projected into the specified paths, and unlisted keys will not be present.\n          If a key is specified which is not present in the Secret, the volume setup\n          will error unless it is marked optional. Paths must be relative and may\n          not contain the '..' path or start with '..'.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.KeyToPath'\n        type: array\n      optional:\n        description: Specify whether the Secret or it's keys must be defined\n        type: boolean\n      secretName:\n        description: 'Name of the secret in the pod''s namespace to use. More info:\n          https://kubernetes.io/docs/concepts/storage/volumes#secret'\n        type: string\n  io.k8s.api.core.v1.SecurityContext:\n    description: SecurityContext holds security configuration that will be applied\n      to a container. Some fields are present in both SecurityContext and PodSecurityContext.  When\n      both are set, the values in SecurityContext take precedence.\n    properties:\n      allowPrivilegeEscalation:\n        description: 'AllowPrivilegeEscalation controls whether a process can gain\n          more privileges than its parent process. This bool directly controls if\n          the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation\n          is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN'\n        type: boolean\n      capabilities:\n        $ref: '#/definitions/io.k8s.api.core.v1.Capabilities'\n        description: The capabilities to add/drop when running containers. Defaults\n          to the default set of capabilities granted by the container runtime.\n      privileged:\n        description: Run container in privileged mode. Processes in privileged containers\n          are essentially equivalent to root on the host. Defaults to false.\n        type: boolean\n      readOnlyRootFilesystem:\n        description: Whether this container has a read-only root filesystem. Default\n          is false.\n        type: boolean\n      runAsGroup:\n        description: The GID to run the entrypoint of the container process. Uses\n          runtime default if unset. May also be set in PodSecurityContext.  If set\n          in both SecurityContext and PodSecurityContext, the value specified in SecurityContext\n          takes precedence.\n        format: int64\n        type: integer\n      runAsNonRoot:\n        description: Indicates that the container must run as a non-root user. If\n          true, the Kubelet will validate the image at runtime to ensure that it does\n          not run as UID 0 (root) and fail to start the container if it does. If unset\n          or false, no such validation will be performed. May also be set in PodSecurityContext.  If\n          set in both SecurityContext and PodSecurityContext, the value specified\n          in SecurityContext takes precedence.\n        type: boolean\n      runAsUser:\n        description: The UID to run the entrypoint of the container process. Defaults\n          to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If\n          set in both SecurityContext and PodSecurityContext, the value specified\n          in SecurityContext takes precedence.\n        format: int64\n        type: integer\n      seLinuxOptions:\n        $ref: '#/definitions/io.k8s.api.core.v1.SELinuxOptions'\n        description: The SELinux context to be applied to the container. If unspecified,\n          the container runtime will allocate a random SELinux context for each container.  May\n          also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext,\n          the value specified in SecurityContext takes precedence.\n  io.k8s.api.core.v1.Service:\n    description: Service is a named abstraction of software service (for example,\n      mysql) consisting of local port (for example 3306) that the proxy listens on,\n      and the selector that determines which pods will answer requests sent through\n      the proxy.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.core.v1.ServiceSpec'\n        description: Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status\n      status:\n        $ref: '#/definitions/io.k8s.api.core.v1.ServiceStatus'\n        description: 'Most recently observed status of the service. Populated by the\n          system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Service\n      version: v1\n  io.k8s.api.core.v1.ServiceAccount:\n    description: 'ServiceAccount binds together: * a name, understood by users, and\n      perhaps by peripheral systems, for an identity * a principal that can be authenticated\n      and authorized * a set of secrets'\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      automountServiceAccountToken:\n        description: AutomountServiceAccountToken indicates whether pods running as\n          this service account should have an API token automatically mounted. Can\n          be overridden at the pod level.\n        type: boolean\n      imagePullSecrets:\n        description: 'ImagePullSecrets is a list of references to secrets in the same\n          namespace to use for pulling any images in pods that reference this ServiceAccount.\n          ImagePullSecrets are distinct from Secrets because Secrets can be mounted\n          in the pod, but ImagePullSecrets are only accessed by the kubelet. More\n          info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      secrets:\n        description: 'Secrets is the list of secrets allowed to be used by pods running\n          using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ServiceAccount\n      version: v1\n  io.k8s.api.core.v1.ServiceAccountList:\n    description: ServiceAccountList is a list of ServiceAccount objects\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ServiceAccountList\n      version: v1\n  io.k8s.api.core.v1.ServiceAccountTokenProjection:\n    description: ServiceAccountTokenProjection represents a projected service account\n      token volume. This projection can be used to insert a service account token\n      into the pods runtime filesystem for use against APIs (Kubernetes API Server\n      or otherwise).\n    properties:\n      audience:\n        description: Audience is the intended audience of the token. A recipient of\n          a token must identify itself with an identifier specified in the audience\n          of the token, and otherwise should reject the token. The audience defaults\n          to the identifier of the apiserver.\n        type: string\n      expirationSeconds:\n        description: ExpirationSeconds is the requested duration of validity of the\n          service account token. As the token approaches expiration, the kubelet volume\n          plugin will proactively rotate the service account token. The kubelet will\n          start trying to rotate the token if the token is older than 80 percent of\n          its time to live or if the token is older than 24 hours.Defaults to 1 hour\n          and must be at least 10 minutes.\n        format: int64\n        type: integer\n      path:\n        description: Path is the path relative to the mount point of the file to project\n          the token into.\n        type: string\n    required:\n    - path\n  io.k8s.api.core.v1.ServiceList:\n    description: ServiceList holds a list of services.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: List of services\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Service'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: ServiceList\n      version: v1\n  io.k8s.api.core.v1.ServicePort:\n    description: ServicePort contains information on service's port.\n    properties:\n      name:\n        description: The name of this port within the service. This must be a DNS_LABEL.\n          All ports within a ServiceSpec must have unique names. This maps to the\n          'Name' field in EndpointPort objects. Optional if only one ServicePort is\n          defined on this service.\n        type: string\n      nodePort:\n        description: 'The port on each node on which this service is exposed when\n          type=NodePort or LoadBalancer. Usually assigned by the system. If specified,\n          it will be allocated to the service if unused or else creation of the service\n          will fail. Default is to auto-allocate a port if the ServiceType of this\n          Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport'\n        format: int32\n        type: integer\n      port:\n        description: The port that will be exposed by this service.\n        format: int32\n        type: integer\n      protocol:\n        description: The IP protocol for this port. Supports \"TCP\" and \"UDP\". Default\n          is TCP.\n        type: string\n      targetPort:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'Number or name of the port to access on the pods targeted by\n          the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n          If this is a string, it will be looked up as a named port in the target\n          Pod''s container ports. If this is not specified, the value of the ''port''\n          field is used (an identity map). This field is ignored for services with\n          clusterIP=None, and should be omitted or set equal to the ''port'' field.\n          More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service'\n    required:\n    - port\n  io.k8s.api.core.v1.ServiceSpec:\n    description: ServiceSpec describes the attributes that a user creates on a service.\n    properties:\n      clusterIP:\n        description: 'clusterIP is the IP address of the service and is usually assigned\n          randomly by the master. If an address is specified manually and is not in\n          use by others, it will be allocated to the service; otherwise, creation\n          of the service will fail. This field can not be changed through updates.\n          Valid values are \"None\", empty string (\"\"), or a valid IP address. \"None\"\n          can be specified for headless services when proxying is not required. Only\n          applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type\n          is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'\n        type: string\n      externalIPs:\n        description: externalIPs is a list of IP addresses for which nodes in the\n          cluster will also accept traffic for this service.  These IPs are not managed\n          by Kubernetes.  The user is responsible for ensuring that traffic arrives\n          at a node with this IP.  A common example is external load-balancers that\n          are not part of the Kubernetes system.\n        items:\n          type: string\n        type: array\n      externalName:\n        description: externalName is the external reference that kubedns or equivalent\n          will return as a CNAME record for this service. No proxying will be involved.\n          Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)\n          and requires Type to be ExternalName.\n        type: string\n      externalTrafficPolicy:\n        description: externalTrafficPolicy denotes if this Service desires to route\n          external traffic to node-local or cluster-wide endpoints. \"Local\" preserves\n          the client source IP and avoids a second hop for LoadBalancer and Nodeport\n          type services, but risks potentially imbalanced traffic spreading. \"Cluster\"\n          obscures the client source IP and may cause a second hop to another node,\n          but should have good overall load-spreading.\n        type: string\n      healthCheckNodePort:\n        description: healthCheckNodePort specifies the healthcheck nodePort for the\n          service. If not specified, HealthCheckNodePort is created by the service\n          api backend with the allocated nodePort. Will use user-specified nodePort\n          value if specified by the client. Only effects when Type is set to LoadBalancer\n          and ExternalTrafficPolicy is set to Local.\n        format: int32\n        type: integer\n      loadBalancerIP:\n        description: 'Only applies to Service Type: LoadBalancer LoadBalancer will\n          get created with the IP specified in this field. This feature depends on\n          whether the underlying cloud-provider supports specifying the loadBalancerIP\n          when a load balancer is created. This field will be ignored if the cloud-provider\n          does not support the feature.'\n        type: string\n      loadBalancerSourceRanges:\n        description: 'If specified and supported by the platform, this will restrict\n          traffic through the cloud-provider load-balancer will be restricted to the\n          specified client IPs. This field will be ignored if the cloud-provider does\n          not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/'\n        items:\n          type: string\n        type: array\n      ports:\n        description: 'The list of ports that are exposed by this service. More info:\n          https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.ServicePort'\n        type: array\n        x-kubernetes-patch-merge-key: port\n        x-kubernetes-patch-strategy: merge\n      publishNotReadyAddresses:\n        description: publishNotReadyAddresses, when set to true, indicates that DNS\n          implementations must publish the notReadyAddresses of subsets for the Endpoints\n          associated with the Service. The default value is false. The primary use\n          case for setting this field is to use a StatefulSet's Headless Service to\n          propagate SRV records for its Pods without respect to their readiness for\n          purpose of peer discovery.\n        type: boolean\n      selector:\n        additionalProperties:\n          type: string\n        description: 'Route service traffic to pods with label keys and values matching\n          this selector. If empty or not present, the service is assumed to have an\n          external process managing its endpoints, which Kubernetes will not modify.\n          Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if\n          type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/'\n        type: object\n      sessionAffinity:\n        description: 'Supports \"ClientIP\" and \"None\". Used to maintain session affinity.\n          Enable client IP based session affinity. Must be ClientIP or None. Defaults\n          to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'\n        type: string\n      sessionAffinityConfig:\n        $ref: '#/definitions/io.k8s.api.core.v1.SessionAffinityConfig'\n        description: sessionAffinityConfig contains the configurations of session\n          affinity.\n      type:\n        description: 'type determines how the Service is exposed. Defaults to ClusterIP.\n          Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\"\n          maps to the specified externalName. \"ClusterIP\" allocates a cluster-internal\n          IP address for load-balancing to endpoints. Endpoints are determined by\n          the selector or if that is not specified, by manual construction of an Endpoints\n          object. If clusterIP is \"None\", no virtual IP is allocated and the endpoints\n          are published as a set of endpoints rather than a stable IP. \"NodePort\"\n          builds on ClusterIP and allocates a port on every node which routes to the\n          clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer\n          (if supported in the current cloud) which routes to the clusterIP. More\n          info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types'\n        type: string\n  io.k8s.api.core.v1.ServiceStatus:\n    description: ServiceStatus represents the current status of a service.\n    properties:\n      loadBalancer:\n        $ref: '#/definitions/io.k8s.api.core.v1.LoadBalancerStatus'\n        description: LoadBalancer contains the current status of the load-balancer,\n          if one is present.\n  io.k8s.api.core.v1.SessionAffinityConfig:\n    description: SessionAffinityConfig represents the configurations of session affinity.\n    properties:\n      clientIP:\n        $ref: '#/definitions/io.k8s.api.core.v1.ClientIPConfig'\n        description: clientIP contains the configurations of Client IP based session\n          affinity.\n  io.k8s.api.core.v1.StorageOSPersistentVolumeSource:\n    description: Represents a StorageOS persistent volume resource.\n    properties:\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred\n          to be \"ext4\" if unspecified.\n        type: string\n      readOnly:\n        description: Defaults to false (read/write). ReadOnly here will force the\n          ReadOnly setting in VolumeMounts.\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        description: SecretRef specifies the secret to use for obtaining the StorageOS\n          API credentials.  If not specified, default values will be attempted.\n      volumeName:\n        description: VolumeName is the human-readable name of the StorageOS volume.  Volume\n          names are only unique within a namespace.\n        type: string\n      volumeNamespace:\n        description: VolumeNamespace specifies the scope of the volume within StorageOS.  If\n          no namespace is specified then the Pod's namespace will be used.  This allows\n          the Kubernetes name scoping to be mirrored within StorageOS for tighter\n          integration. Set VolumeName to any name to override the default behaviour.\n          Set to \"default\" if you are not using namespaces within StorageOS. Namespaces\n          that do not pre-exist within StorageOS will be created.\n        type: string\n  io.k8s.api.core.v1.StorageOSVolumeSource:\n    description: Represents a StorageOS persistent volume resource.\n    properties:\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred\n          to be \"ext4\" if unspecified.\n        type: string\n      readOnly:\n        description: Defaults to false (read/write). ReadOnly here will force the\n          ReadOnly setting in VolumeMounts.\n        type: boolean\n      secretRef:\n        $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n        description: SecretRef specifies the secret to use for obtaining the StorageOS\n          API credentials.  If not specified, default values will be attempted.\n      volumeName:\n        description: VolumeName is the human-readable name of the StorageOS volume.  Volume\n          names are only unique within a namespace.\n        type: string\n      volumeNamespace:\n        description: VolumeNamespace specifies the scope of the volume within StorageOS.  If\n          no namespace is specified then the Pod's namespace will be used.  This allows\n          the Kubernetes name scoping to be mirrored within StorageOS for tighter\n          integration. Set VolumeName to any name to override the default behaviour.\n          Set to \"default\" if you are not using namespaces within StorageOS. Namespaces\n          that do not pre-exist within StorageOS will be created.\n        type: string\n  io.k8s.api.core.v1.Sysctl:\n    description: Sysctl defines a kernel parameter to be set\n    properties:\n      name:\n        description: Name of a property to set\n        type: string\n      value:\n        description: Value of a property to set\n        type: string\n    required:\n    - name\n    - value\n  io.k8s.api.core.v1.TCPSocketAction:\n    description: TCPSocketAction describes an action based on opening a socket\n    properties:\n      host:\n        description: 'Optional: Host name to connect to, defaults to the pod IP.'\n        type: string\n      port:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: Number or name of the port to access on the container. Number\n          must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\n    required:\n    - port\n  io.k8s.api.core.v1.Taint:\n    description: The node this Taint is attached to has the \"effect\" on any pod that\n      does not tolerate the Taint.\n    properties:\n      effect:\n        description: Required. The effect of the taint on pods that do not tolerate\n          the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.\n        type: string\n      key:\n        description: Required. The taint key to be applied to a node.\n        type: string\n      timeAdded:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: TimeAdded represents the time at which the taint was added. It\n          is only written for NoExecute taints.\n      value:\n        description: Required. The taint value corresponding to the taint key.\n        type: string\n    required:\n    - key\n    - effect\n  io.k8s.api.core.v1.Toleration:\n    description: The pod this Toleration is attached to tolerates any taint that matches\n      the triple <key,value,effect> using the matching operator <operator>.\n    properties:\n      effect:\n        description: Effect indicates the taint effect to match. Empty means match\n          all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule\n          and NoExecute.\n        type: string\n      key:\n        description: Key is the taint key that the toleration applies to. Empty means\n          match all taint keys. If the key is empty, operator must be Exists; this\n          combination means to match all values and all keys.\n        type: string\n      operator:\n        description: Operator represents a key's relationship to the value. Valid\n          operators are Exists and Equal. Defaults to Equal. Exists is equivalent\n          to wildcard for value, so that a pod can tolerate all taints of a particular\n          category.\n        type: string\n      tolerationSeconds:\n        description: TolerationSeconds represents the period of time the toleration\n          (which must be of effect NoExecute, otherwise this field is ignored) tolerates\n          the taint. By default, it is not set, which means tolerate the taint forever\n          (do not evict). Zero and negative values will be treated as 0 (evict immediately)\n          by the system.\n        format: int64\n        type: integer\n      value:\n        description: Value is the taint value the toleration matches to. If the operator\n          is Exists, the value should be empty, otherwise just a regular string.\n        type: string\n  io.k8s.api.core.v1.TopologySelectorLabelRequirement:\n    description: A topology selector requirement is a selector that matches given\n      label. This is an alpha feature and may change in the future.\n    properties:\n      key:\n        description: The label key that the selector applies to.\n        type: string\n      values:\n        description: An array of string values. One value must match the label to\n          be selected. Each entry in Values is ORed.\n        items:\n          type: string\n        type: array\n    required:\n    - key\n    - values\n  io.k8s.api.core.v1.TopologySelectorTerm:\n    description: A topology selector term represents the result of label queries.\n      A null or empty topology selector term matches no objects. The requirements\n      of them are ANDed. It provides a subset of functionality as NodeSelectorTerm.\n      This is an alpha feature and may change in the future.\n    properties:\n      matchLabelExpressions:\n        description: A list of topology selector requirements by labels.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.TopologySelectorLabelRequirement'\n        type: array\n  io.k8s.api.core.v1.Volume:\n    description: Volume represents a named volume in a pod that may be accessed by\n      any container in the pod.\n    properties:\n      awsElasticBlockStore:\n        $ref: '#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource'\n        description: 'AWSElasticBlockStore represents an AWS Disk resource that is\n          attached to a kubelet''s host machine and then exposed to the pod. More\n          info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'\n      azureDisk:\n        $ref: '#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource'\n        description: AzureDisk represents an Azure Data Disk mount on the host and\n          bind mount to the pod.\n      azureFile:\n        $ref: '#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource'\n        description: AzureFile represents an Azure File Service mount on the host\n          and bind mount to the pod.\n      cephfs:\n        $ref: '#/definitions/io.k8s.api.core.v1.CephFSVolumeSource'\n        description: CephFS represents a Ceph FS mount on the host that shares a pod's\n          lifetime\n      cinder:\n        $ref: '#/definitions/io.k8s.api.core.v1.CinderVolumeSource'\n        description: 'Cinder represents a cinder volume attached and mounted on kubelets\n          host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md'\n      configMap:\n        $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource'\n        description: ConfigMap represents a configMap that should populate this volume\n      downwardAPI:\n        $ref: '#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource'\n        description: DownwardAPI represents downward API about the pod that should\n          populate this volume\n      emptyDir:\n        $ref: '#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource'\n        description: 'EmptyDir represents a temporary directory that shares a pod''s\n          lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'\n      fc:\n        $ref: '#/definitions/io.k8s.api.core.v1.FCVolumeSource'\n        description: FC represents a Fibre Channel resource that is attached to a\n          kubelet's host machine and then exposed to the pod.\n      flexVolume:\n        $ref: '#/definitions/io.k8s.api.core.v1.FlexVolumeSource'\n        description: FlexVolume represents a generic volume resource that is provisioned/attached\n          using an exec based plugin.\n      flocker:\n        $ref: '#/definitions/io.k8s.api.core.v1.FlockerVolumeSource'\n        description: Flocker represents a Flocker volume attached to a kubelet's host\n          machine. This depends on the Flocker control service being running\n      gcePersistentDisk:\n        $ref: '#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource'\n        description: 'GCEPersistentDisk represents a GCE Disk resource that is attached\n          to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'\n      gitRepo:\n        $ref: '#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource'\n        description: 'GitRepo represents a git repository at a particular revision.\n          DEPRECATED: GitRepo is deprecated. To provision a container with a git repo,\n          mount an EmptyDir into an InitContainer that clones the repo using git,\n          then mount the EmptyDir into the Pod''s container.'\n      glusterfs:\n        $ref: '#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource'\n        description: 'Glusterfs represents a Glusterfs mount on the host that shares\n          a pod''s lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md'\n      hostPath:\n        $ref: '#/definitions/io.k8s.api.core.v1.HostPathVolumeSource'\n        description: 'HostPath represents a pre-existing file or directory on the\n          host machine that is directly exposed to the container. This is generally\n          used for system agents or other privileged things that are allowed to see\n          the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'\n      iscsi:\n        $ref: '#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource'\n        description: 'ISCSI represents an ISCSI Disk resource that is attached to\n          a kubelet''s host machine and then exposed to the pod. More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md'\n      name:\n        description: 'Volume''s name. Must be a DNS_LABEL and unique within the pod.\n          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'\n        type: string\n      nfs:\n        $ref: '#/definitions/io.k8s.api.core.v1.NFSVolumeSource'\n        description: 'NFS represents an NFS mount on the host that shares a pod''s\n          lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'\n      persistentVolumeClaim:\n        $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource'\n        description: 'PersistentVolumeClaimVolumeSource represents a reference to\n          a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'\n      photonPersistentDisk:\n        $ref: '#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource'\n        description: PhotonPersistentDisk represents a PhotonController persistent\n          disk attached and mounted on kubelets host machine\n      portworxVolume:\n        $ref: '#/definitions/io.k8s.api.core.v1.PortworxVolumeSource'\n        description: PortworxVolume represents a portworx volume attached and mounted\n          on kubelets host machine\n      projected:\n        $ref: '#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource'\n        description: Items for all in one resources secrets, configmaps, and downward\n          API\n      quobyte:\n        $ref: '#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource'\n        description: Quobyte represents a Quobyte mount on the host that shares a\n          pod's lifetime\n      rbd:\n        $ref: '#/definitions/io.k8s.api.core.v1.RBDVolumeSource'\n        description: 'RBD represents a Rados Block Device mount on the host that shares\n          a pod''s lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md'\n      scaleIO:\n        $ref: '#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource'\n        description: ScaleIO represents a ScaleIO persistent volume attached and mounted\n          on Kubernetes nodes.\n      secret:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretVolumeSource'\n        description: 'Secret represents a secret that should populate this volume.\n          More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'\n      storageos:\n        $ref: '#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource'\n        description: StorageOS represents a StorageOS volume attached and mounted\n          on Kubernetes nodes.\n      vsphereVolume:\n        $ref: '#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource'\n        description: VsphereVolume represents a vSphere volume attached and mounted\n          on kubelets host machine\n    required:\n    - name\n  io.k8s.api.core.v1.VolumeDevice:\n    description: volumeDevice describes a mapping of a raw block device within a container.\n    properties:\n      devicePath:\n        description: devicePath is the path inside of the container that the device\n          will be mapped to.\n        type: string\n      name:\n        description: name must match the name of a persistentVolumeClaim in the pod\n        type: string\n    required:\n    - name\n    - devicePath\n  io.k8s.api.core.v1.VolumeMount:\n    description: VolumeMount describes a mounting of a Volume within a container.\n    properties:\n      mountPath:\n        description: Path within the container at which the volume should be mounted.  Must\n          not contain ':'.\n        type: string\n      mountPropagation:\n        description: mountPropagation determines how mounts are propagated from the\n          host to container and the other way around. When not set, MountPropagationNone\n          is used. This field is beta in 1.10.\n        type: string\n      name:\n        description: This must match the Name of a Volume.\n        type: string\n      readOnly:\n        description: Mounted read-only if true, read-write otherwise (false or unspecified).\n          Defaults to false.\n        type: boolean\n      subPath:\n        description: Path within the volume from which the container's volume should\n          be mounted. Defaults to \"\" (volume's root).\n        type: string\n    required:\n    - name\n    - mountPath\n  io.k8s.api.core.v1.VolumeNodeAffinity:\n    description: VolumeNodeAffinity defines constraints that limit what nodes this\n      volume can be accessed from.\n    properties:\n      required:\n        $ref: '#/definitions/io.k8s.api.core.v1.NodeSelector'\n        description: Required specifies hard node constraints that must be met.\n  io.k8s.api.core.v1.VolumeProjection:\n    description: Projection that may be projected along with other supported volume\n      types\n    properties:\n      configMap:\n        $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapProjection'\n        description: information about the configMap data to project\n      downwardAPI:\n        $ref: '#/definitions/io.k8s.api.core.v1.DownwardAPIProjection'\n        description: information about the downwardAPI data to project\n      secret:\n        $ref: '#/definitions/io.k8s.api.core.v1.SecretProjection'\n        description: information about the secret data to project\n      serviceAccountToken:\n        $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccountTokenProjection'\n        description: information about the serviceAccountToken data to project\n  io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource:\n    description: Represents a vSphere volume resource.\n    properties:\n      fsType:\n        description: Filesystem type to mount. Must be a filesystem type supported\n          by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred\n          to be \"ext4\" if unspecified.\n        type: string\n      storagePolicyID:\n        description: Storage Policy Based Management (SPBM) profile ID associated\n          with the StoragePolicyName.\n        type: string\n      storagePolicyName:\n        description: Storage Policy Based Management (SPBM) profile name.\n        type: string\n      volumePath:\n        description: Path that identifies vSphere volume vmdk\n        type: string\n    required:\n    - volumePath\n  io.k8s.api.core.v1.WeightedPodAffinityTerm:\n    description: The weights of all of the matched WeightedPodAffinityTerm fields\n      are added per-node to find the most preferred node(s)\n    properties:\n      podAffinityTerm:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodAffinityTerm'\n        description: Required. A pod affinity term, associated with the corresponding\n          weight.\n      weight:\n        description: weight associated with matching the corresponding podAffinityTerm,\n          in the range 1-100.\n        format: int32\n        type: integer\n    required:\n    - weight\n    - podAffinityTerm\n  io.k8s.api.events.v1beta1.Event:\n    description: Event is a report of an event somewhere in the cluster. It generally\n      denotes some state change in the system.\n    properties:\n      action:\n        description: What action was taken/failed regarding to the regarding object.\n        type: string\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      deprecatedCount:\n        description: Deprecated field assuring backward compatibility with core.v1\n          Event type\n        format: int32\n        type: integer\n      deprecatedFirstTimestamp:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Deprecated field assuring backward compatibility with core.v1\n          Event type\n      deprecatedLastTimestamp:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Deprecated field assuring backward compatibility with core.v1\n          Event type\n      deprecatedSource:\n        $ref: '#/definitions/io.k8s.api.core.v1.EventSource'\n        description: Deprecated field assuring backward compatibility with core.v1\n          Event type\n      eventTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime'\n        description: Required. Time when this Event was first observed.\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      note:\n        description: Optional. A human-readable description of the status of this\n          operation. Maximal length of the note is 1kB, but libraries should be prepared\n          to handle values up to 64kB.\n        type: string\n      reason:\n        description: Why the action was taken.\n        type: string\n      regarding:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        description: The object this Event is about. In most cases it's an Object\n          reporting controller implements. E.g. ReplicaSetController implements ReplicaSets\n          and this event is emitted because it acts on some changes in a ReplicaSet\n          object.\n      related:\n        $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n        description: Optional secondary object for more complex actions. E.g. when\n          regarding object triggers a creation or deletion of related object.\n      reportingController:\n        description: Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.\n        type: string\n      reportingInstance:\n        description: ID of the controller instance, e.g. `kubelet-xyzf`.\n        type: string\n      series:\n        $ref: '#/definitions/io.k8s.api.events.v1beta1.EventSeries'\n        description: Data about the Event series this event represents or nil if it's\n          a singleton Event.\n      type:\n        description: Type of this event (Normal, Warning), new types could be added\n          in the future.\n        type: string\n    required:\n    - eventTime\n    x-kubernetes-group-version-kind:\n    - group: events.k8s.io\n      kind: Event\n      version: v1beta1\n  io.k8s.api.events.v1beta1.EventList:\n    description: EventList is a list of Event objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of schema objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.events.v1beta1.Event'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: events.k8s.io\n      kind: EventList\n      version: v1beta1\n  io.k8s.api.events.v1beta1.EventSeries:\n    description: EventSeries contain information on series of events, i.e. thing that\n      was/is happening continuously for some time.\n    properties:\n      count:\n        description: Number of occurrences in this series up to the last heartbeat\n          time\n        format: int32\n        type: integer\n      lastObservedTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime'\n        description: Time when last Event from the series was seen before last heartbeat.\n      state:\n        description: Information whether this series is ongoing or finished.\n        type: string\n    required:\n    - count\n    - lastObservedTime\n    - state\n  io.k8s.api.extensions.v1beta1.AllowedFlexVolume:\n    description: 'AllowedFlexVolume represents a single Flexvolume that is allowed\n      to be used. Deprecated: use AllowedFlexVolume from policy API Group instead.'\n    properties:\n      driver:\n        description: driver is the name of the Flexvolume driver.\n        type: string\n    required:\n    - driver\n  io.k8s.api.extensions.v1beta1.AllowedHostPath:\n    description: 'AllowedHostPath defines the host volume conditions that will be\n      enabled by a policy for pods to use. It requires the path prefix to be defined.\n      Deprecated: use AllowedHostPath from policy API Group instead.'\n    properties:\n      pathPrefix:\n        description: 'pathPrefix is the path prefix that the host volume must match.\n          It does not support `*`. Trailing slashes are trimmed when validating the\n          path prefix with a host path.\n\n\n          Examples: `/foo` would allow `/foo`, `/foo/` and `/foo/bar` `/foo` would\n          not allow `/food` or `/etc/foo`'\n        type: string\n      readOnly:\n        description: when set to true, will allow host volumes matching the pathPrefix\n          only if all volume mounts are readOnly.\n        type: boolean\n  io.k8s.api.extensions.v1beta1.DaemonSet:\n    description: DEPRECATED - This group version of DaemonSet is deprecated by apps/v1beta2/DaemonSet.\n      See the release notes for more information. DaemonSet represents the configuration\n      of a daemon set.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetSpec'\n        description: 'The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetStatus'\n        description: 'The current status of this daemon set. This data may be out\n          of date by some window of time. Populated by the system. Read-only. More\n          info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: DaemonSet\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.DaemonSetCondition:\n    description: DaemonSetCondition describes the state of a DaemonSet at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of DaemonSet condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.extensions.v1beta1.DaemonSetList:\n    description: DaemonSetList is a collection of daemon sets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: A list of daemon sets.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: DaemonSetList\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.DaemonSetSpec:\n    description: DaemonSetSpec is the specification of a daemon set.\n    properties:\n      minReadySeconds:\n        description: The minimum number of seconds for which a newly created DaemonSet\n          pod should be ready without any of its container crashing, for it to be\n          considered available. Defaults to 0 (pod will be considered available as\n          soon as it is ready).\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: The number of old history to retain to allow rollback. This is\n          a pointer to distinguish between explicit zero and not specified. Defaults\n          to 10.\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'A label query over pods that are managed by the daemon set.\n          Must match in order to be controlled. If empty, defaulted to labels on Pod\n          template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: 'An object that describes the pod that will be created. The DaemonSet\n          will create exactly one copy of this pod on every node that matches the\n          template''s node selector (or on every node if no node selector is specified).\n          More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template'\n      templateGeneration:\n        description: DEPRECATED. A sequence number representing a specific generation\n          of the template. Populated by the system. It can be set only during the\n          creation.\n        format: int64\n        type: integer\n      updateStrategy:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy'\n        description: An update strategy to replace existing DaemonSet pods with new\n          pods.\n    required:\n    - template\n  io.k8s.api.extensions.v1beta1.DaemonSetStatus:\n    description: DaemonSetStatus represents the current status of a daemon set.\n    properties:\n      collisionCount:\n        description: Count of hash collisions for the DaemonSet. The DaemonSet controller\n          uses this field as a collision avoidance mechanism when it needs to create\n          the name for the newest ControllerRevision.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a DaemonSet's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      currentNumberScheduled:\n        description: 'The number of nodes that are running at least 1 daemon pod and\n          are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      desiredNumberScheduled:\n        description: 'The total number of nodes that should be running the daemon\n          pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      numberAvailable:\n        description: The number of nodes that should be running the daemon pod and\n          have one or more of the daemon pod running and available (ready for at least\n          spec.minReadySeconds)\n        format: int32\n        type: integer\n      numberMisscheduled:\n        description: 'The number of nodes that are running the daemon pod, but are\n          not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/'\n        format: int32\n        type: integer\n      numberReady:\n        description: The number of nodes that should be running the daemon pod and\n          have one or more of the daemon pod running and ready.\n        format: int32\n        type: integer\n      numberUnavailable:\n        description: The number of nodes that should be running the daemon pod and\n          have none of the daemon pod running and available (ready for at least spec.minReadySeconds)\n        format: int32\n        type: integer\n      observedGeneration:\n        description: The most recent generation observed by the daemon set controller.\n        format: int64\n        type: integer\n      updatedNumberScheduled:\n        description: The total number of nodes that are running updated daemon pod\n        format: int32\n        type: integer\n    required:\n    - currentNumberScheduled\n    - numberMisscheduled\n    - desiredNumberScheduled\n    - numberReady\n  io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy:\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet'\n        description: Rolling update config params. Present only if type = \"RollingUpdate\".\n      type:\n        description: Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\".\n          Default is OnDelete.\n        type: string\n  io.k8s.api.extensions.v1beta1.Deployment:\n    description: DEPRECATED - This group version of Deployment is deprecated by apps/v1beta2/Deployment.\n      See the release notes for more information. Deployment enables declarative updates\n      for Pods and ReplicaSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object metadata.\n      spec:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentSpec'\n        description: Specification of the desired behavior of the Deployment.\n      status:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentStatus'\n        description: Most recently observed status of the Deployment.\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: Deployment\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.DeploymentCondition:\n    description: DeploymentCondition describes the state of a deployment at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      lastUpdateTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The last time this condition was updated.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of deployment condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.extensions.v1beta1.DeploymentList:\n    description: DeploymentList is a list of Deployments.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of Deployments.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard list metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: DeploymentList\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.DeploymentRollback:\n    description: DEPRECATED. DeploymentRollback stores the information required to\n      rollback a deployment.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      name:\n        description: 'Required: This must match the Name of a deployment.'\n        type: string\n      rollbackTo:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RollbackConfig'\n        description: The config of this deployment rollback.\n      updatedAnnotations:\n        additionalProperties:\n          type: string\n        description: The annotations to be updated to a deployment\n        type: object\n    required:\n    - name\n    - rollbackTo\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: DeploymentRollback\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.DeploymentSpec:\n    description: DeploymentSpec is the specification of the desired behavior of the\n      Deployment.\n    properties:\n      minReadySeconds:\n        description: Minimum number of seconds for which a newly created pod should\n          be ready without any of its container crashing, for it to be considered\n          available. Defaults to 0 (pod will be considered available as soon as it\n          is ready)\n        format: int32\n        type: integer\n      paused:\n        description: Indicates that the deployment is paused and will not be processed\n          by the deployment controller.\n        type: boolean\n      progressDeadlineSeconds:\n        description: The maximum time in seconds for a deployment to make progress\n          before it is considered to be failed. The deployment controller will continue\n          to process failed deployments and a condition with a ProgressDeadlineExceeded\n          reason will be surfaced in the deployment status. Note that progress will\n          not be estimated during the time a deployment is paused. This is not set\n          by default.\n        format: int32\n        type: integer\n      replicas:\n        description: Number of desired pods. This is a pointer to distinguish between\n          explicit zero and not specified. Defaults to 1.\n        format: int32\n        type: integer\n      revisionHistoryLimit:\n        description: The number of old ReplicaSets to retain to allow rollback. This\n          is a pointer to distinguish between explicit zero and not specified.\n        format: int32\n        type: integer\n      rollbackTo:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RollbackConfig'\n        description: DEPRECATED. The config this deployment is rolling back to. Will\n          be cleared after rollback is done.\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: Label selector for pods. Existing ReplicaSets whose pods are\n          selected by this will be the ones affected by this deployment.\n      strategy:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentStrategy'\n        description: The deployment strategy to use to replace existing pods with\n          new ones.\n        x-kubernetes-patch-strategy: retainKeys\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: Template describes the pods that will be created.\n    required:\n    - template\n  io.k8s.api.extensions.v1beta1.DeploymentStatus:\n    description: DeploymentStatus is the most recently observed status of the Deployment.\n    properties:\n      availableReplicas:\n        description: Total number of available pods (ready for at least minReadySeconds)\n          targeted by this deployment.\n        format: int32\n        type: integer\n      collisionCount:\n        description: Count of hash collisions for the Deployment. The Deployment controller\n          uses this field as a collision avoidance mechanism when it needs to create\n          the name for the newest ReplicaSet.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a deployment's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      observedGeneration:\n        description: The generation observed by the deployment controller.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: Total number of ready pods targeted by this deployment.\n        format: int32\n        type: integer\n      replicas:\n        description: Total number of non-terminated pods targeted by this deployment\n          (their labels match the selector).\n        format: int32\n        type: integer\n      unavailableReplicas:\n        description: Total number of unavailable pods targeted by this deployment.\n          This is the total number of pods that are still required for the deployment\n          to have 100% available capacity. They may either be pods that are running\n          but not yet available or pods that still have not been created.\n        format: int32\n        type: integer\n      updatedReplicas:\n        description: Total number of non-terminated pods targeted by this deployment\n          that have the desired template spec.\n        format: int32\n        type: integer\n  io.k8s.api.extensions.v1beta1.DeploymentStrategy:\n    description: DeploymentStrategy describes how to replace existing pods with new\n      ones.\n    properties:\n      rollingUpdate:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RollingUpdateDeployment'\n        description: Rolling update config params. Present only if DeploymentStrategyType\n          = RollingUpdate.\n      type:\n        description: Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default\n          is RollingUpdate.\n        type: string\n  io.k8s.api.extensions.v1beta1.FSGroupStrategyOptions:\n    description: 'FSGroupStrategyOptions defines the strategy type and options used\n      to create the strategy. Deprecated: use FSGroupStrategyOptions from policy API\n      Group instead.'\n    properties:\n      ranges:\n        description: ranges are the allowed ranges of fs groups.  If you would like\n          to force a single fs group then supply a single range with the same start\n          and end. Required for MustRunAs.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IDRange'\n        type: array\n      rule:\n        description: rule is the strategy that will dictate what FSGroup is used in\n          the SecurityContext.\n        type: string\n  io.k8s.api.extensions.v1beta1.HTTPIngressPath:\n    description: HTTPIngressPath associates a path regex with a backend. Incoming\n      urls matching the path are forwarded to the backend.\n    properties:\n      backend:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressBackend'\n        description: Backend defines the referenced service endpoint to which the\n          traffic will be forwarded to.\n      path:\n        description: Path is an extended POSIX regex as defined by IEEE Std 1003.1,\n          (i.e this follows the egrep/unix syntax, not the perl syntax) matched against\n          the path of an incoming request. Currently it can contain characters disallowed\n          from the conventional \"path\" part of a URL as defined by RFC 3986. Paths\n          must begin with a '/'. If unspecified, the path defaults to a catch all\n          sending traffic to the backend.\n        type: string\n    required:\n    - backend\n  io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue:\n    description: 'HTTPIngressRuleValue is a list of http selectors pointing to backends.\n      In the example: http://<host>/<path>?<searchpart> -> backend where where parts\n      of the url correspond to RFC 3986, this resource will be used to match against\n      everything after the last ''/'' and before the first ''?'' or ''#''.'\n    properties:\n      paths:\n        description: A collection of paths that map requests to backends.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.HTTPIngressPath'\n        type: array\n    required:\n    - paths\n  io.k8s.api.extensions.v1beta1.HostPortRange:\n    description: 'HostPortRange defines a range of host ports that will be enabled\n      by a policy for pods to use.  It requires both the start and end to be defined.\n      Deprecated: use HostPortRange from policy API Group instead.'\n    properties:\n      max:\n        description: max is the end of the range, inclusive.\n        format: int32\n        type: integer\n      min:\n        description: min is the start of the range, inclusive.\n        format: int32\n        type: integer\n    required:\n    - min\n    - max\n  io.k8s.api.extensions.v1beta1.IDRange:\n    description: 'IDRange provides a min/max of an allowed range of IDs. Deprecated:\n      use IDRange from policy API Group instead.'\n    properties:\n      max:\n        description: max is the end of the range, inclusive.\n        format: int64\n        type: integer\n      min:\n        description: min is the start of the range, inclusive.\n        format: int64\n        type: integer\n    required:\n    - min\n    - max\n  io.k8s.api.extensions.v1beta1.IPBlock:\n    description: DEPRECATED 1.9 - This group version of IPBlock is deprecated by networking/v1/IPBlock.\n      IPBlock describes a particular CIDR (Ex. \"192.168.1.1/24\") that is allowed to\n      the pods matched by a NetworkPolicySpec's podSelector. The except entry describes\n      CIDRs that should not be included within this rule.\n    properties:\n      cidr:\n        description: CIDR is a string representing the IP Block Valid examples are\n          \"192.168.1.1/24\"\n        type: string\n      except:\n        description: Except is a slice of CIDRs that should not be included within\n          an IP Block Valid examples are \"192.168.1.1/24\" Except values will be rejected\n          if they are outside the CIDR range\n        items:\n          type: string\n        type: array\n    required:\n    - cidr\n  io.k8s.api.extensions.v1beta1.Ingress:\n    description: Ingress is a collection of rules that allow inbound connections to\n      reach the endpoints defined by a backend. An Ingress can be configured to give\n      services externally-reachable urls, load balance traffic, terminate SSL, offer\n      name based virtual hosting etc.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressSpec'\n        description: 'Spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressStatus'\n        description: 'Status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: Ingress\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.IngressBackend:\n    description: IngressBackend describes all endpoints for a given service and port.\n    properties:\n      serviceName:\n        description: Specifies the name of the referenced service.\n        type: string\n      servicePort:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: Specifies the port of the referenced service.\n    required:\n    - serviceName\n    - servicePort\n  io.k8s.api.extensions.v1beta1.IngressList:\n    description: IngressList is a collection of Ingress.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of Ingress.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: IngressList\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.IngressRule:\n    description: IngressRule represents the rules mapping the paths under a specified\n      host to the related backend services. Incoming requests are first evaluated\n      for a host match, then routed to the backend associated with the matching IngressRuleValue.\n    properties:\n      host:\n        description: \"Host is the fully qualified domain name of a network host, as\\\n          \\ defined by RFC 3986. Note the following deviations from the \\\"host\\\" part\\\n          \\ of the URI as defined in the RFC: 1. IPs are not allowed. Currently an\\\n          \\ IngressRuleValue can only apply to the\\n\\t  IP in the Spec of the parent\\\n          \\ Ingress.\\n2. The `:` delimiter is not respected because ports are not\\\n          \\ allowed.\\n\\t  Currently the port of an Ingress is implicitly :80 for http\\\n          \\ and\\n\\t  :443 for https.\\nBoth these may change in the future. Incoming\\\n          \\ requests are matched against the host before the IngressRuleValue. If\\\n          \\ the host is unspecified, the Ingress routes all traffic based on the specified\\\n          \\ IngressRuleValue.\"\n        type: string\n      http:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue'\n  io.k8s.api.extensions.v1beta1.IngressSpec:\n    description: IngressSpec describes the Ingress the user wishes to exist.\n    properties:\n      backend:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressBackend'\n        description: A default backend capable of servicing requests that don't match\n          any rule. At least one of 'backend' or 'rules' must be specified. This field\n          is optional to allow the loadbalancer controller or defaulting logic to\n          specify a global default.\n      rules:\n        description: A list of host rules used to configure the Ingress. If unspecified,\n          or no rule matches, all traffic is sent to the default backend.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressRule'\n        type: array\n      tls:\n        description: TLS configuration. Currently the Ingress only supports a single\n          TLS port, 443. If multiple members of this list specify different hosts,\n          they will be multiplexed on the same port according to the hostname specified\n          through the SNI TLS extension, if the ingress controller fulfilling the\n          ingress supports SNI.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressTLS'\n        type: array\n  io.k8s.api.extensions.v1beta1.IngressStatus:\n    description: IngressStatus describe the current state of the Ingress.\n    properties:\n      loadBalancer:\n        $ref: '#/definitions/io.k8s.api.core.v1.LoadBalancerStatus'\n        description: LoadBalancer contains the current status of the load-balancer.\n  io.k8s.api.extensions.v1beta1.IngressTLS:\n    description: IngressTLS describes the transport layer security associated with\n      an Ingress.\n    properties:\n      hosts:\n        description: Hosts are a list of hosts included in the TLS certificate. The\n          values in this list must match the name/s used in the tlsSecret. Defaults\n          to the wildcard host setting for the loadbalancer controller fulfilling\n          this Ingress, if left unspecified.\n        items:\n          type: string\n        type: array\n      secretName:\n        description: SecretName is the name of the secret used to terminate SSL traffic\n          on 443. Field is left optional to allow SSL routing based on SNI hostname\n          alone. If the SNI host in a listener conflicts with the \"Host\" header field\n          used by an IngressRule, the SNI host is used for termination and value of\n          the Host header is used for routing.\n        type: string\n  io.k8s.api.extensions.v1beta1.NetworkPolicy:\n    description: DEPRECATED 1.9 - This group version of NetworkPolicy is deprecated\n      by networking/v1/NetworkPolicy. NetworkPolicy describes what network traffic\n      is allowed for a set of Pods\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicySpec'\n        description: Specification of the desired behavior for this NetworkPolicy.\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: NetworkPolicy\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.NetworkPolicyEgressRule:\n    description: DEPRECATED 1.9 - This group version of NetworkPolicyEgressRule is\n      deprecated by networking/v1/NetworkPolicyEgressRule. NetworkPolicyEgressRule\n      describes a particular set of traffic that is allowed out of pods matched by\n      a NetworkPolicySpec's podSelector. The traffic must match both ports and to.\n      This type is beta-level in 1.8\n    properties:\n      ports:\n        description: List of destination ports for outgoing traffic. Each item in\n          this list is combined using a logical OR. If this field is empty or missing,\n          this rule matches all ports (traffic not restricted by port). If this field\n          is present and contains at least one item, then this rule allows traffic\n          only if the traffic matches at least one port in the list.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyPort'\n        type: array\n      to:\n        description: List of destinations for outgoing traffic of pods selected for\n          this rule. Items in this list are combined using a logical OR operation.\n          If this field is empty or missing, this rule matches all destinations (traffic\n          not restricted by destination). If this field is present and contains at\n          least one item, this rule allows traffic only if the traffic matches at\n          least one item in the to list.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyPeer'\n        type: array\n  io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule:\n    description: DEPRECATED 1.9 - This group version of NetworkPolicyIngressRule is\n      deprecated by networking/v1/NetworkPolicyIngressRule. This NetworkPolicyIngressRule\n      matches traffic if and only if the traffic matches both ports AND from.\n    properties:\n      from:\n        description: List of sources which should be able to access the pods selected\n          for this rule. Items in this list are combined using a logical OR operation.\n          If this field is empty or missing, this rule matches all sources (traffic\n          not restricted by source). If this field is present and contains at least\n          on item, this rule allows traffic only if the traffic matches at least one\n          item in the from list.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyPeer'\n        type: array\n      ports:\n        description: List of ports which should be made accessible on the pods selected\n          for this rule. Each item in this list is combined using a logical OR. If\n          this field is empty or missing, this rule matches all ports (traffic not\n          restricted by port). If this field is present and contains at least one\n          item, then this rule allows traffic only if the traffic matches at least\n          one port in the list.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyPort'\n        type: array\n  io.k8s.api.extensions.v1beta1.NetworkPolicyList:\n    description: DEPRECATED 1.9 - This group version of NetworkPolicyList is deprecated\n      by networking/v1/NetworkPolicyList. Network Policy List is a list of NetworkPolicy\n      objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of schema objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: NetworkPolicyList\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.NetworkPolicyPeer:\n    description: DEPRECATED 1.9 - This group version of NetworkPolicyPeer is deprecated\n      by networking/v1/NetworkPolicyPeer.\n    properties:\n      ipBlock:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IPBlock'\n        description: IPBlock defines policy on a particular IPBlock. If this field\n          is set then neither of the other fields can be.\n      namespaceSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'Selects Namespaces using cluster-scoped labels. This field follows\n          standard label selector semantics; if present but empty, it selects all\n          namespaces.\n\n\n          If PodSelector is also set, then the NetworkPolicyPeer as a whole selects\n          the Pods matching PodSelector in the Namespaces selected by NamespaceSelector.\n          Otherwise it selects all Pods in the Namespaces selected by NamespaceSelector.'\n      podSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'This is a label selector which selects Pods. This field follows\n          standard label selector semantics; if present but empty, it selects all\n          pods.\n\n\n          If NamespaceSelector is also set, then the NetworkPolicyPeer as a whole\n          selects the Pods matching PodSelector in the Namespaces selected by NamespaceSelector.\n          Otherwise it selects the Pods matching PodSelector in the policy''s own\n          Namespace.'\n  io.k8s.api.extensions.v1beta1.NetworkPolicyPort:\n    description: DEPRECATED 1.9 - This group version of NetworkPolicyPort is deprecated\n      by networking/v1/NetworkPolicyPort.\n    properties:\n      port:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: If specified, the port on the given protocol.  This can either\n          be a numerical or named port on a pod.  If this field is not provided, this\n          matches all port names and numbers. If present, only traffic on the specified\n          protocol AND port will be matched.\n      protocol:\n        description: Optional.  The protocol (TCP or UDP) which traffic must match.\n          If not specified, this field defaults to TCP.\n        type: string\n  io.k8s.api.extensions.v1beta1.NetworkPolicySpec:\n    description: DEPRECATED 1.9 - This group version of NetworkPolicySpec is deprecated\n      by networking/v1/NetworkPolicySpec.\n    properties:\n      egress:\n        description: List of egress rules to be applied to the selected pods. Outgoing\n          traffic is allowed if there are no NetworkPolicies selecting the pod (and\n          cluster policy otherwise allows the traffic), OR if the traffic matches\n          at least one egress rule across all of the NetworkPolicy objects whose podSelector\n          matches the pod. If this field is empty then this NetworkPolicy limits all\n          outgoing traffic (and serves solely to ensure that the pods it selects are\n          isolated by default). This field is beta-level in 1.8\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyEgressRule'\n        type: array\n      ingress:\n        description: List of ingress rules to be applied to the selected pods. Traffic\n          is allowed to a pod if there are no NetworkPolicies selecting the pod OR\n          if the traffic source is the pod's local node, OR if the traffic matches\n          at least one ingress rule across all of the NetworkPolicy objects whose\n          podSelector matches the pod. If this field is empty then this NetworkPolicy\n          does not allow any traffic (and serves solely to ensure that the pods it\n          selects are isolated by default).\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule'\n        type: array\n      podSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: Selects the pods to which this NetworkPolicy object applies.  The\n          array of ingress rules is applied to any pods selected by this field. Multiple\n          network policies can select the same set of pods.  In this case, the ingress\n          rules for each are combined additively. This field is NOT optional and follows\n          standard label selector semantics. An empty podSelector matches all pods\n          in this namespace.\n      policyTypes:\n        description: List of rule types that the NetworkPolicy relates to. Valid options\n          are Ingress, Egress, or Ingress,Egress. If this field is not specified,\n          it will default based on the existence of Ingress or Egress rules; policies\n          that contain an Egress section are assumed to affect Egress, and all policies\n          (whether or not they contain an Ingress section) are assumed to affect Ingress.\n          If you want to write an egress-only policy, you must explicitly specify\n          policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies\n          that no egress is allowed, you must specify a policyTypes value that include\n          \"Egress\" (since such a policy would not include an Egress section and would\n          otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8\n        items:\n          type: string\n        type: array\n    required:\n    - podSelector\n  io.k8s.api.extensions.v1beta1.PodSecurityPolicy:\n    description: 'PodSecurityPolicy governs the ability to make requests that affect\n      the Security Context that will be applied to a pod and container. Deprecated:\n      use PodSecurityPolicy from policy API Group instead.'\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicySpec'\n        description: spec defines the policy enforced.\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: PodSecurityPolicy\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.PodSecurityPolicyList:\n    description: 'PodSecurityPolicyList is a list of PodSecurityPolicy objects. Deprecated:\n      use PodSecurityPolicyList from policy API Group instead.'\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: items is a list of schema objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: PodSecurityPolicyList\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.PodSecurityPolicySpec:\n    description: 'PodSecurityPolicySpec defines the policy enforced. Deprecated: use\n      PodSecurityPolicySpec from policy API Group instead.'\n    properties:\n      allowPrivilegeEscalation:\n        description: allowPrivilegeEscalation determines if a pod can request to allow\n          privilege escalation. If unspecified, defaults to true.\n        type: boolean\n      allowedCapabilities:\n        description: allowedCapabilities is a list of capabilities that can be requested\n          to add to the container. Capabilities in this field may be added at the\n          pod author's discretion. You must not list a capability in both allowedCapabilities\n          and requiredDropCapabilities.\n        items:\n          type: string\n        type: array\n      allowedFlexVolumes:\n        description: allowedFlexVolumes is a whitelist of allowed Flexvolumes.  Empty\n          or nil indicates that all Flexvolumes may be used.  This parameter is effective\n          only when the usage of the Flexvolumes is allowed in the \"volumes\" field.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.AllowedFlexVolume'\n        type: array\n      allowedHostPaths:\n        description: allowedHostPaths is a white list of allowed host paths. Empty\n          indicates that all host paths may be used.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.AllowedHostPath'\n        type: array\n      allowedUnsafeSysctls:\n        description: 'allowedUnsafeSysctls is a list of explicitly allowed unsafe\n          sysctls, defaults to none. Each entry is either a plain sysctl name or ends\n          in \"*\" in which case it is considered as a prefix of allowed sysctls. Single\n          * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed\n          unsafe sysctls explicitly to avoid rejection.\n\n\n          Examples: e.g. \"foo/*\" allows \"foo/bar\", \"foo/baz\", etc. e.g. \"foo.*\" allows\n          \"foo.bar\", \"foo.baz\", etc.'\n        items:\n          type: string\n        type: array\n      defaultAddCapabilities:\n        description: defaultAddCapabilities is the default set of capabilities that\n          will be added to the container unless the pod spec specifically drops the\n          capability.  You may not list a capability in both defaultAddCapabilities\n          and requiredDropCapabilities. Capabilities added here are implicitly allowed,\n          and need not be included in the allowedCapabilities list.\n        items:\n          type: string\n        type: array\n      defaultAllowPrivilegeEscalation:\n        description: defaultAllowPrivilegeEscalation controls the default setting\n          for whether a process can gain more privileges than its parent process.\n        type: boolean\n      forbiddenSysctls:\n        description: 'forbiddenSysctls is a list of explicitly forbidden sysctls,\n          defaults to none. Each entry is either a plain sysctl name or ends in \"*\"\n          in which case it is considered as a prefix of forbidden sysctls. Single\n          * means all sysctls are forbidden.\n\n\n          Examples: e.g. \"foo/*\" forbids \"foo/bar\", \"foo/baz\", etc. e.g. \"foo.*\" forbids\n          \"foo.bar\", \"foo.baz\", etc.'\n        items:\n          type: string\n        type: array\n      fsGroup:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.FSGroupStrategyOptions'\n        description: fsGroup is the strategy that will dictate what fs group is used\n          by the SecurityContext.\n      hostIPC:\n        description: hostIPC determines if the policy allows the use of HostIPC in\n          the pod spec.\n        type: boolean\n      hostNetwork:\n        description: hostNetwork determines if the policy allows the use of HostNetwork\n          in the pod spec.\n        type: boolean\n      hostPID:\n        description: hostPID determines if the policy allows the use of HostPID in\n          the pod spec.\n        type: boolean\n      hostPorts:\n        description: hostPorts determines which host port ranges are allowed to be\n          exposed.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.HostPortRange'\n        type: array\n      privileged:\n        description: privileged determines if a pod can request to be run as privileged.\n        type: boolean\n      readOnlyRootFilesystem:\n        description: readOnlyRootFilesystem when set to true will force containers\n          to run with a read only root file system.  If the container specifically\n          requests to run with a non-read only root file system the PSP should deny\n          the pod. If set to false the container may run with a read only root file\n          system if it wishes but it will not be forced to.\n        type: boolean\n      requiredDropCapabilities:\n        description: requiredDropCapabilities are the capabilities that will be dropped\n          from the container.  These are required to be dropped and cannot be added.\n        items:\n          type: string\n        type: array\n      runAsUser:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RunAsUserStrategyOptions'\n        description: runAsUser is the strategy that will dictate the allowable RunAsUser\n          values that may be set.\n      seLinux:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.SELinuxStrategyOptions'\n        description: seLinux is the strategy that will dictate the allowable labels\n          that may be set.\n      supplementalGroups:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.SupplementalGroupsStrategyOptions'\n        description: supplementalGroups is the strategy that will dictate what supplemental\n          groups are used by the SecurityContext.\n      volumes:\n        description: volumes is a white list of allowed volume plugins. Empty indicates\n          that no volumes may be used. To allow all volumes you may use '*'.\n        items:\n          type: string\n        type: array\n    required:\n    - seLinux\n    - runAsUser\n    - supplementalGroups\n    - fsGroup\n  io.k8s.api.extensions.v1beta1.ReplicaSet:\n    description: DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1beta2/ReplicaSet.\n      See the release notes for more information. ReplicaSet ensures that a specified\n      number of pod replicas are running at any given time.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'If the Labels of a ReplicaSet are empty, they are defaulted\n          to be the same as the Pod(s) that the ReplicaSet manages. Standard object''s\n          metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetSpec'\n        description: 'Spec defines the specification of the desired behavior of the\n          ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n      status:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetStatus'\n        description: 'Status is the most recently observed status of the ReplicaSet.\n          This data may be out of date by some window of time. Populated by the system.\n          Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: ReplicaSet\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.ReplicaSetCondition:\n    description: ReplicaSetCondition describes the state of a replica set at a certain\n      point.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: The last time the condition transitioned from one status to another.\n      message:\n        description: A human readable message indicating details about the transition.\n        type: string\n      reason:\n        description: The reason for the condition's last transition.\n        type: string\n      status:\n        description: Status of the condition, one of True, False, Unknown.\n        type: string\n      type:\n        description: Type of replica set condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.api.extensions.v1beta1.ReplicaSetList:\n    description: ReplicaSetList is a collection of ReplicaSets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: 'List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller'\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: ReplicaSetList\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.ReplicaSetSpec:\n    description: ReplicaSetSpec is the specification of a ReplicaSet.\n    properties:\n      minReadySeconds:\n        description: Minimum number of seconds for which a newly created pod should\n          be ready without any of its container crashing, for it to be considered\n          available. Defaults to 0 (pod will be considered available as soon as it\n          is ready)\n        format: int32\n        type: integer\n      replicas:\n        description: 'Replicas is the number of desired replicas. This is a pointer\n          to distinguish between explicit zero and unspecified. Defaults to 1. More\n          info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller'\n        format: int32\n        type: integer\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'Selector is a label query over pods that should match the replica\n          count. If the selector is empty, it is defaulted to the labels present on\n          the pod template. Label keys and values that must match in order to be controlled\n          by this replica set. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n      template:\n        $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n        description: 'Template is the object that describes the pod that will be created\n          if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template'\n  io.k8s.api.extensions.v1beta1.ReplicaSetStatus:\n    description: ReplicaSetStatus represents the current status of a ReplicaSet.\n    properties:\n      availableReplicas:\n        description: The number of available replicas (ready for at least minReadySeconds)\n          for this replica set.\n        format: int32\n        type: integer\n      conditions:\n        description: Represents the latest available observations of a replica set's\n          current state.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n      fullyLabeledReplicas:\n        description: The number of pods that have labels matching the labels of the\n          pod template of the replicaset.\n        format: int32\n        type: integer\n      observedGeneration:\n        description: ObservedGeneration reflects the generation of the most recently\n          observed ReplicaSet.\n        format: int64\n        type: integer\n      readyReplicas:\n        description: The number of ready replicas for this replica set.\n        format: int32\n        type: integer\n      replicas:\n        description: 'Replicas is the most recently oberved number of replicas. More\n          info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller'\n        format: int32\n        type: integer\n    required:\n    - replicas\n  io.k8s.api.extensions.v1beta1.RollbackConfig:\n    description: DEPRECATED.\n    properties:\n      revision:\n        description: The revision to rollback to. If set to 0, rollback to the last\n          revision.\n        format: int64\n        type: integer\n  io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet:\n    description: Spec to control the desired behavior of daemon set rolling update.\n    properties:\n      maxUnavailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of DaemonSet pods that can be unavailable\n          during the update. Value can be an absolute number (ex: 5) or a percentage\n          of total number of DaemonSet pods at the start of the update (ex: 10%).\n          Absolute number is calculated from percentage by rounding up. This cannot\n          be 0. Default value is 1. Example: when this is set to 30%, at most 30%\n          of the total number of nodes that should be running the daemon pod (i.e.\n          status.desiredNumberScheduled) can have their pods stopped for an update\n          at any given time. The update starts by stopping at most 30% of those DaemonSet\n          pods and then brings up new DaemonSet pods in their place. Once the new\n          pods are available, it then proceeds onto other DaemonSet pods, thus ensuring\n          that at least 70% of original number of DaemonSet pods are available at\n          all times during the update.'\n  io.k8s.api.extensions.v1beta1.RollingUpdateDeployment:\n    description: Spec to control the desired behavior of rolling update.\n    properties:\n      maxSurge:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of pods that can be scheduled above the desired\n          number of pods. Value can be an absolute number (ex: 5) or a percentage\n          of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute\n          number is calculated from percentage by rounding up. By default, a value\n          of 1 is used. Example: when this is set to 30%, the new RC can be scaled\n          up immediately when the rolling update starts, such that the total number\n          of old and new pods do not exceed 130% of desired pods. Once old pods have\n          been killed, new RC can be scaled up further, ensuring that total number\n          of pods running at any time during the update is atmost 130% of desired\n          pods.'\n      maxUnavailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: 'The maximum number of pods that can be unavailable during the\n          update. Value can be an absolute number (ex: 5) or a percentage of desired\n          pods (ex: 10%). Absolute number is calculated from percentage by rounding\n          down. This can not be 0 if MaxSurge is 0. By default, a fixed value of 1\n          is used. Example: when this is set to 30%, the old RC can be scaled down\n          to 70% of desired pods immediately when the rolling update starts. Once\n          new pods are ready, old RC can be scaled down further, followed by scaling\n          up the new RC, ensuring that the total number of pods available at all times\n          during the update is at least 70% of desired pods.'\n  io.k8s.api.extensions.v1beta1.RunAsUserStrategyOptions:\n    description: 'RunAsUserStrategyOptions defines the strategy type and any options\n      used to create the strategy. Deprecated: use RunAsUserStrategyOptions from policy\n      API Group instead.'\n    properties:\n      ranges:\n        description: ranges are the allowed ranges of uids that may be used. If you\n          would like to force a single uid then supply a single range with the same\n          start and end. Required for MustRunAs.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IDRange'\n        type: array\n      rule:\n        description: rule is the strategy that will dictate the allowable RunAsUser\n          values that may be set.\n        type: string\n    required:\n    - rule\n  io.k8s.api.extensions.v1beta1.SELinuxStrategyOptions:\n    description: 'SELinuxStrategyOptions defines the strategy type and any options\n      used to create the strategy. Deprecated: use SELinuxStrategyOptions from policy\n      API Group instead.'\n    properties:\n      rule:\n        description: rule is the strategy that will dictate the allowable labels that\n          may be set.\n        type: string\n      seLinuxOptions:\n        $ref: '#/definitions/io.k8s.api.core.v1.SELinuxOptions'\n        description: 'seLinuxOptions required to run as; required for MustRunAs More\n          info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n    required:\n    - rule\n  io.k8s.api.extensions.v1beta1.Scale:\n    description: represents a scaling request for a resource.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.'\n      spec:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ScaleSpec'\n        description: 'defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.'\n      status:\n        $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ScaleStatus'\n        description: 'current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.\n          Read-only.'\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: Scale\n      version: v1beta1\n  io.k8s.api.extensions.v1beta1.ScaleSpec:\n    description: describes the attributes of a scale subresource\n    properties:\n      replicas:\n        description: desired number of instances for the scaled object.\n        format: int32\n        type: integer\n  io.k8s.api.extensions.v1beta1.ScaleStatus:\n    description: represents the current status of a scale subresource.\n    properties:\n      replicas:\n        description: actual number of observed instances of the scaled object.\n        format: int32\n        type: integer\n      selector:\n        additionalProperties:\n          type: string\n        description: 'label query over pods that should match the replicas count.\n          More info: http://kubernetes.io/docs/user-guide/labels#label-selectors'\n        type: object\n      targetSelector:\n        description: 'label selector for pods that should match the replicas count.\n          This is a serializated version of both map-based and more expressive set-based\n          selectors. This is done to avoid introspection in the clients. The string\n          will be in the same format as the query-param syntax. If the target type\n          only supports map-based selectors, both this field and map-based selector\n          field are populated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'\n        type: string\n    required:\n    - replicas\n  io.k8s.api.extensions.v1beta1.SupplementalGroupsStrategyOptions:\n    description: 'SupplementalGroupsStrategyOptions defines the strategy type and\n      options used to create the strategy. Deprecated: use SupplementalGroupsStrategyOptions\n      from policy API Group instead.'\n    properties:\n      ranges:\n        description: ranges are the allowed ranges of supplemental groups.  If you\n          would like to force a single supplemental group then supply a single range\n          with the same start and end. Required for MustRunAs.\n        items:\n          $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IDRange'\n        type: array\n      rule:\n        description: rule is the strategy that will dictate what supplemental groups\n          is used in the SecurityContext.\n        type: string\n  io.k8s.api.networking.v1.IPBlock:\n    description: IPBlock describes a particular CIDR (Ex. \"192.168.1.1/24\") that is\n      allowed to the pods matched by a NetworkPolicySpec's podSelector. The except\n      entry describes CIDRs that should not be included within this rule.\n    properties:\n      cidr:\n        description: CIDR is a string representing the IP Block Valid examples are\n          \"192.168.1.1/24\"\n        type: string\n      except:\n        description: Except is a slice of CIDRs that should not be included within\n          an IP Block Valid examples are \"192.168.1.1/24\" Except values will be rejected\n          if they are outside the CIDR range\n        items:\n          type: string\n        type: array\n    required:\n    - cidr\n  io.k8s.api.networking.v1.NetworkPolicy:\n    description: NetworkPolicy describes what network traffic is allowed for a set\n      of Pods\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicySpec'\n        description: Specification of the desired behavior for this NetworkPolicy.\n    x-kubernetes-group-version-kind:\n    - group: networking.k8s.io\n      kind: NetworkPolicy\n      version: v1\n  io.k8s.api.networking.v1.NetworkPolicyEgressRule:\n    description: NetworkPolicyEgressRule describes a particular set of traffic that\n      is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic\n      must match both ports and to. This type is beta-level in 1.8\n    properties:\n      ports:\n        description: List of destination ports for outgoing traffic. Each item in\n          this list is combined using a logical OR. If this field is empty or missing,\n          this rule matches all ports (traffic not restricted by port). If this field\n          is present and contains at least one item, then this rule allows traffic\n          only if the traffic matches at least one port in the list.\n        items:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort'\n        type: array\n      to:\n        description: List of destinations for outgoing traffic of pods selected for\n          this rule. Items in this list are combined using a logical OR operation.\n          If this field is empty or missing, this rule matches all destinations (traffic\n          not restricted by destination). If this field is present and contains at\n          least one item, this rule allows traffic only if the traffic matches at\n          least one item in the to list.\n        items:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyPeer'\n        type: array\n  io.k8s.api.networking.v1.NetworkPolicyIngressRule:\n    description: NetworkPolicyIngressRule describes a particular set of traffic that\n      is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic\n      must match both ports and from.\n    properties:\n      from:\n        description: List of sources which should be able to access the pods selected\n          for this rule. Items in this list are combined using a logical OR operation.\n          If this field is empty or missing, this rule matches all sources (traffic\n          not restricted by source). If this field is present and contains at least\n          on item, this rule allows traffic only if the traffic matches at least one\n          item in the from list.\n        items:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyPeer'\n        type: array\n      ports:\n        description: List of ports which should be made accessible on the pods selected\n          for this rule. Each item in this list is combined using a logical OR. If\n          this field is empty or missing, this rule matches all ports (traffic not\n          restricted by port). If this field is present and contains at least one\n          item, then this rule allows traffic only if the traffic matches at least\n          one port in the list.\n        items:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort'\n        type: array\n  io.k8s.api.networking.v1.NetworkPolicyList:\n    description: NetworkPolicyList is a list of NetworkPolicy objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of schema objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: networking.k8s.io\n      kind: NetworkPolicyList\n      version: v1\n  io.k8s.api.networking.v1.NetworkPolicyPeer:\n    description: NetworkPolicyPeer describes a peer to allow traffic from. Only certain\n      combinations of fields are allowed\n    properties:\n      ipBlock:\n        $ref: '#/definitions/io.k8s.api.networking.v1.IPBlock'\n        description: IPBlock defines policy on a particular IPBlock. If this field\n          is set then neither of the other fields can be.\n      namespaceSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'Selects Namespaces using cluster-scoped labels. This field follows\n          standard label selector semantics; if present but empty, it selects all\n          namespaces.\n\n\n          If PodSelector is also set, then the NetworkPolicyPeer as a whole selects\n          the Pods matching PodSelector in the Namespaces selected by NamespaceSelector.\n          Otherwise it selects all Pods in the Namespaces selected by NamespaceSelector.'\n      podSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: 'This is a label selector which selects Pods. This field follows\n          standard label selector semantics; if present but empty, it selects all\n          pods.\n\n\n          If NamespaceSelector is also set, then the NetworkPolicyPeer as a whole\n          selects the Pods matching PodSelector in the Namespaces selected by NamespaceSelector.\n          Otherwise it selects the Pods matching PodSelector in the policy''s own\n          Namespace.'\n  io.k8s.api.networking.v1.NetworkPolicyPort:\n    description: NetworkPolicyPort describes a port to allow traffic on\n    properties:\n      port:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: The port on the given protocol. This can either be a numerical\n          or named port on a pod. If this field is not provided, this matches all\n          port names and numbers.\n      protocol:\n        description: The protocol (TCP or UDP) which traffic must match. If not specified,\n          this field defaults to TCP.\n        type: string\n  io.k8s.api.networking.v1.NetworkPolicySpec:\n    description: NetworkPolicySpec provides the specification of a NetworkPolicy\n    properties:\n      egress:\n        description: List of egress rules to be applied to the selected pods. Outgoing\n          traffic is allowed if there are no NetworkPolicies selecting the pod (and\n          cluster policy otherwise allows the traffic), OR if the traffic matches\n          at least one egress rule across all of the NetworkPolicy objects whose podSelector\n          matches the pod. If this field is empty then this NetworkPolicy limits all\n          outgoing traffic (and serves solely to ensure that the pods it selects are\n          isolated by default). This field is beta-level in 1.8\n        items:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyEgressRule'\n        type: array\n      ingress:\n        description: List of ingress rules to be applied to the selected pods. Traffic\n          is allowed to a pod if there are no NetworkPolicies selecting the pod (and\n          cluster policy otherwise allows the traffic), OR if the traffic source is\n          the pod's local node, OR if the traffic matches at least one ingress rule\n          across all of the NetworkPolicy objects whose podSelector matches the pod.\n          If this field is empty then this NetworkPolicy does not allow any traffic\n          (and serves solely to ensure that the pods it selects are isolated by default)\n        items:\n          $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyIngressRule'\n        type: array\n      podSelector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: Selects the pods to which this NetworkPolicy object applies.\n          The array of ingress rules is applied to any pods selected by this field.\n          Multiple network policies can select the same set of pods. In this case,\n          the ingress rules for each are combined additively. This field is NOT optional\n          and follows standard label selector semantics. An empty podSelector matches\n          all pods in this namespace.\n      policyTypes:\n        description: List of rule types that the NetworkPolicy relates to. Valid options\n          are Ingress, Egress, or Ingress,Egress. If this field is not specified,\n          it will default based on the existence of Ingress or Egress rules; policies\n          that contain an Egress section are assumed to affect Egress, and all policies\n          (whether or not they contain an Ingress section) are assumed to affect Ingress.\n          If you want to write an egress-only policy, you must explicitly specify\n          policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies\n          that no egress is allowed, you must specify a policyTypes value that include\n          \"Egress\" (since such a policy would not include an Egress section and would\n          otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8\n        items:\n          type: string\n        type: array\n    required:\n    - podSelector\n  io.k8s.api.policy.v1beta1.AllowedFlexVolume:\n    description: AllowedFlexVolume represents a single Flexvolume that is allowed\n      to be used.\n    properties:\n      driver:\n        description: driver is the name of the Flexvolume driver.\n        type: string\n    required:\n    - driver\n  io.k8s.api.policy.v1beta1.AllowedHostPath:\n    description: AllowedHostPath defines the host volume conditions that will be enabled\n      by a policy for pods to use. It requires the path prefix to be defined.\n    properties:\n      pathPrefix:\n        description: 'pathPrefix is the path prefix that the host volume must match.\n          It does not support `*`. Trailing slashes are trimmed when validating the\n          path prefix with a host path.\n\n\n          Examples: `/foo` would allow `/foo`, `/foo/` and `/foo/bar` `/foo` would\n          not allow `/food` or `/etc/foo`'\n        type: string\n      readOnly:\n        description: when set to true, will allow host volumes matching the pathPrefix\n          only if all volume mounts are readOnly.\n        type: boolean\n  io.k8s.api.policy.v1beta1.Eviction:\n    description: Eviction evicts a pod from its node subject to certain policies and\n      safety constraints. This is a subresource of Pod.  A request to cause such an\n      eviction is created by POSTing to .../pods/<pod name>/evictions.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      deleteOptions:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions'\n        description: DeleteOptions may be provided\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: ObjectMeta describes the pod that is being evicted.\n    x-kubernetes-group-version-kind:\n    - group: policy\n      kind: Eviction\n      version: v1beta1\n  io.k8s.api.policy.v1beta1.FSGroupStrategyOptions:\n    description: FSGroupStrategyOptions defines the strategy type and options used\n      to create the strategy.\n    properties:\n      ranges:\n        description: ranges are the allowed ranges of fs groups.  If you would like\n          to force a single fs group then supply a single range with the same start\n          and end. Required for MustRunAs.\n        items:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.IDRange'\n        type: array\n      rule:\n        description: rule is the strategy that will dictate what FSGroup is used in\n          the SecurityContext.\n        type: string\n  io.k8s.api.policy.v1beta1.HostPortRange:\n    description: HostPortRange defines a range of host ports that will be enabled\n      by a policy for pods to use.  It requires both the start and end to be defined.\n    properties:\n      max:\n        description: max is the end of the range, inclusive.\n        format: int32\n        type: integer\n      min:\n        description: min is the start of the range, inclusive.\n        format: int32\n        type: integer\n    required:\n    - min\n    - max\n  io.k8s.api.policy.v1beta1.IDRange:\n    description: IDRange provides a min/max of an allowed range of IDs.\n    properties:\n      max:\n        description: max is the end of the range, inclusive.\n        format: int64\n        type: integer\n      min:\n        description: min is the start of the range, inclusive.\n        format: int64\n        type: integer\n    required:\n    - min\n    - max\n  io.k8s.api.policy.v1beta1.PodDisruptionBudget:\n    description: PodDisruptionBudget is an object to define the max disruption that\n      can be caused to a collection of pods\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec'\n        description: Specification of the desired behavior of the PodDisruptionBudget.\n      status:\n        $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus'\n        description: Most recently observed status of the PodDisruptionBudget.\n    x-kubernetes-group-version-kind:\n    - group: policy\n      kind: PodDisruptionBudget\n      version: v1beta1\n  io.k8s.api.policy.v1beta1.PodDisruptionBudgetList:\n    description: PodDisruptionBudgetList is a collection of PodDisruptionBudgets.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        items:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: policy\n      kind: PodDisruptionBudgetList\n      version: v1beta1\n  io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec:\n    description: PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.\n    properties:\n      maxUnavailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: An eviction is allowed if at most \"maxUnavailable\" pods selected\n          by \"selector\" are unavailable after the eviction, i.e. even in absence of\n          the evicted pod. For example, one can prevent all voluntary evictions by\n          specifying 0. This is a mutually exclusive setting with \"minAvailable\".\n      minAvailable:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString'\n        description: An eviction is allowed if at least \"minAvailable\" pods selected\n          by \"selector\" will still be available after the eviction, i.e. even in the\n          absence of the evicted pod.  So for example you can prevent all voluntary\n          evictions by specifying \"100%\".\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: Label query over pods whose evictions are managed by the disruption\n          budget.\n  io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus:\n    description: PodDisruptionBudgetStatus represents information about the status\n      of a PodDisruptionBudget. Status may trail the actual state of a system.\n    properties:\n      currentHealthy:\n        description: current number of healthy pods\n        format: int32\n        type: integer\n      desiredHealthy:\n        description: minimum desired number of healthy pods\n        format: int32\n        type: integer\n      disruptedPods:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: DisruptedPods contains information about pods whose eviction\n          was processed by the API server eviction subresource handler but has not\n          yet been observed by the PodDisruptionBudget controller. A pod will be in\n          this map from the time when the API server processed the eviction request\n          to the time when the pod is seen by PDB controller as having been marked\n          for deletion (or after a timeout). The key in the map is the name of the\n          pod and the value is the time when the API server processed the eviction\n          request. If the deletion didn't occur and a pod is still there it will be\n          removed from the list automatically by PodDisruptionBudget controller after\n          some time. If everything goes smooth this map should be empty for the most\n          of the time. Large number of entries in the map may indicate problems with\n          pod deletions.\n        type: object\n      disruptionsAllowed:\n        description: Number of pod disruptions that are currently allowed.\n        format: int32\n        type: integer\n      expectedPods:\n        description: total number of pods counted by this disruption budget\n        format: int32\n        type: integer\n      observedGeneration:\n        description: Most recent generation observed when updating this PDB status.\n          PodDisruptionsAllowed and other status informatio is valid only if observedGeneration\n          equals to PDB's object generation.\n        format: int64\n        type: integer\n    required:\n    - disruptedPods\n    - disruptionsAllowed\n    - currentHealthy\n    - desiredHealthy\n    - expectedPods\n  io.k8s.api.policy.v1beta1.PodSecurityPolicy:\n    description: PodSecurityPolicy governs the ability to make requests that affect\n      the Security Context that will be applied to a pod and container.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicySpec'\n        description: spec defines the policy enforced.\n    x-kubernetes-group-version-kind:\n    - group: policy\n      kind: PodSecurityPolicy\n      version: v1beta1\n  io.k8s.api.policy.v1beta1.PodSecurityPolicyList:\n    description: PodSecurityPolicyList is a list of PodSecurityPolicy objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: items is a list of schema objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodSecurityPolicy'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: policy\n      kind: PodSecurityPolicyList\n      version: v1beta1\n  io.k8s.api.policy.v1beta1.PodSecurityPolicySpec:\n    description: PodSecurityPolicySpec defines the policy enforced.\n    properties:\n      allowPrivilegeEscalation:\n        description: allowPrivilegeEscalation determines if a pod can request to allow\n          privilege escalation. If unspecified, defaults to true.\n        type: boolean\n      allowedCapabilities:\n        description: allowedCapabilities is a list of capabilities that can be requested\n          to add to the container. Capabilities in this field may be added at the\n          pod author's discretion. You must not list a capability in both allowedCapabilities\n          and requiredDropCapabilities.\n        items:\n          type: string\n        type: array\n      allowedFlexVolumes:\n        description: allowedFlexVolumes is a whitelist of allowed Flexvolumes.  Empty\n          or nil indicates that all Flexvolumes may be used.  This parameter is effective\n          only when the usage of the Flexvolumes is allowed in the \"volumes\" field.\n        items:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.AllowedFlexVolume'\n        type: array\n      allowedHostPaths:\n        description: allowedHostPaths is a white list of allowed host paths. Empty\n          indicates that all host paths may be used.\n        items:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.AllowedHostPath'\n        type: array\n      allowedUnsafeSysctls:\n        description: 'allowedUnsafeSysctls is a list of explicitly allowed unsafe\n          sysctls, defaults to none. Each entry is either a plain sysctl name or ends\n          in \"*\" in which case it is considered as a prefix of allowed sysctls. Single\n          * means all unsafe sysctls are allowed. Kubelet has to whitelist all allowed\n          unsafe sysctls explicitly to avoid rejection.\n\n\n          Examples: e.g. \"foo/*\" allows \"foo/bar\", \"foo/baz\", etc. e.g. \"foo.*\" allows\n          \"foo.bar\", \"foo.baz\", etc.'\n        items:\n          type: string\n        type: array\n      defaultAddCapabilities:\n        description: defaultAddCapabilities is the default set of capabilities that\n          will be added to the container unless the pod spec specifically drops the\n          capability.  You may not list a capability in both defaultAddCapabilities\n          and requiredDropCapabilities. Capabilities added here are implicitly allowed,\n          and need not be included in the allowedCapabilities list.\n        items:\n          type: string\n        type: array\n      defaultAllowPrivilegeEscalation:\n        description: defaultAllowPrivilegeEscalation controls the default setting\n          for whether a process can gain more privileges than its parent process.\n        type: boolean\n      forbiddenSysctls:\n        description: 'forbiddenSysctls is a list of explicitly forbidden sysctls,\n          defaults to none. Each entry is either a plain sysctl name or ends in \"*\"\n          in which case it is considered as a prefix of forbidden sysctls. Single\n          * means all sysctls are forbidden.\n\n\n          Examples: e.g. \"foo/*\" forbids \"foo/bar\", \"foo/baz\", etc. e.g. \"foo.*\" forbids\n          \"foo.bar\", \"foo.baz\", etc.'\n        items:\n          type: string\n        type: array\n      fsGroup:\n        $ref: '#/definitions/io.k8s.api.policy.v1beta1.FSGroupStrategyOptions'\n        description: fsGroup is the strategy that will dictate what fs group is used\n          by the SecurityContext.\n      hostIPC:\n        description: hostIPC determines if the policy allows the use of HostIPC in\n          the pod spec.\n        type: boolean\n      hostNetwork:\n        description: hostNetwork determines if the policy allows the use of HostNetwork\n          in the pod spec.\n        type: boolean\n      hostPID:\n        description: hostPID determines if the policy allows the use of HostPID in\n          the pod spec.\n        type: boolean\n      hostPorts:\n        description: hostPorts determines which host port ranges are allowed to be\n          exposed.\n        items:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.HostPortRange'\n        type: array\n      privileged:\n        description: privileged determines if a pod can request to be run as privileged.\n        type: boolean\n      readOnlyRootFilesystem:\n        description: readOnlyRootFilesystem when set to true will force containers\n          to run with a read only root file system.  If the container specifically\n          requests to run with a non-read only root file system the PSP should deny\n          the pod. If set to false the container may run with a read only root file\n          system if it wishes but it will not be forced to.\n        type: boolean\n      requiredDropCapabilities:\n        description: requiredDropCapabilities are the capabilities that will be dropped\n          from the container.  These are required to be dropped and cannot be added.\n        items:\n          type: string\n        type: array\n      runAsUser:\n        $ref: '#/definitions/io.k8s.api.policy.v1beta1.RunAsUserStrategyOptions'\n        description: runAsUser is the strategy that will dictate the allowable RunAsUser\n          values that may be set.\n      seLinux:\n        $ref: '#/definitions/io.k8s.api.policy.v1beta1.SELinuxStrategyOptions'\n        description: seLinux is the strategy that will dictate the allowable labels\n          that may be set.\n      supplementalGroups:\n        $ref: '#/definitions/io.k8s.api.policy.v1beta1.SupplementalGroupsStrategyOptions'\n        description: supplementalGroups is the strategy that will dictate what supplemental\n          groups are used by the SecurityContext.\n      volumes:\n        description: volumes is a white list of allowed volume plugins. Empty indicates\n          that no volumes may be used. To allow all volumes you may use '*'.\n        items:\n          type: string\n        type: array\n    required:\n    - seLinux\n    - runAsUser\n    - supplementalGroups\n    - fsGroup\n  io.k8s.api.policy.v1beta1.RunAsUserStrategyOptions:\n    description: RunAsUserStrategyOptions defines the strategy type and any options\n      used to create the strategy.\n    properties:\n      ranges:\n        description: ranges are the allowed ranges of uids that may be used. If you\n          would like to force a single uid then supply a single range with the same\n          start and end. Required for MustRunAs.\n        items:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.IDRange'\n        type: array\n      rule:\n        description: rule is the strategy that will dictate the allowable RunAsUser\n          values that may be set.\n        type: string\n    required:\n    - rule\n  io.k8s.api.policy.v1beta1.SELinuxStrategyOptions:\n    description: SELinuxStrategyOptions defines the strategy type and any options\n      used to create the strategy.\n    properties:\n      rule:\n        description: rule is the strategy that will dictate the allowable labels that\n          may be set.\n        type: string\n      seLinuxOptions:\n        $ref: '#/definitions/io.k8s.api.core.v1.SELinuxOptions'\n        description: 'seLinuxOptions required to run as; required for MustRunAs More\n          info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'\n    required:\n    - rule\n  io.k8s.api.policy.v1beta1.SupplementalGroupsStrategyOptions:\n    description: SupplementalGroupsStrategyOptions defines the strategy type and options\n      used to create the strategy.\n    properties:\n      ranges:\n        description: ranges are the allowed ranges of supplemental groups.  If you\n          would like to force a single supplemental group then supply a single range\n          with the same start and end. Required for MustRunAs.\n        items:\n          $ref: '#/definitions/io.k8s.api.policy.v1beta1.IDRange'\n        type: array\n      rule:\n        description: rule is the strategy that will dictate what supplemental groups\n          is used in the SecurityContext.\n        type: string\n  io.k8s.api.rbac.v1.AggregationRule:\n    description: AggregationRule describes how to locate ClusterRoles to aggregate\n      into the ClusterRole\n    properties:\n      clusterRoleSelectors:\n        description: ClusterRoleSelectors holds a list of selectors which will be\n          used to find ClusterRoles and create the rules. If any of the selectors\n          match, then the ClusterRole's permissions will be added\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        type: array\n  io.k8s.api.rbac.v1.ClusterRole:\n    description: ClusterRole is a cluster level, logical grouping of PolicyRules that\n      can be referenced as a unit by a RoleBinding or ClusterRoleBinding.\n    properties:\n      aggregationRule:\n        $ref: '#/definitions/io.k8s.api.rbac.v1.AggregationRule'\n        description: AggregationRule is an optional field that describes how to build\n          the Rules for this ClusterRole. If AggregationRule is set, then the Rules\n          are controller managed and direct changes to Rules will be stomped by the\n          controller.\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      rules:\n        description: Rules holds all the PolicyRules for this ClusterRole\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.PolicyRule'\n        type: array\n    required:\n    - rules\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRole\n      version: v1\n  io.k8s.api.rbac.v1.ClusterRoleBinding:\n    description: ClusterRoleBinding references a ClusterRole, but not contain it.  It\n      can reference a ClusterRole in the global namespace, and adds who information\n      via Subject.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      roleRef:\n        $ref: '#/definitions/io.k8s.api.rbac.v1.RoleRef'\n        description: RoleRef can only reference a ClusterRole in the global namespace.\n          If the RoleRef cannot be resolved, the Authorizer must return an error.\n      subjects:\n        description: Subjects holds references to the objects the role applies to.\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.Subject'\n        type: array\n    required:\n    - roleRef\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleBinding\n      version: v1\n  io.k8s.api.rbac.v1.ClusterRoleBindingList:\n    description: ClusterRoleBindingList is a collection of ClusterRoleBindings\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of ClusterRoleBindings\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleBindingList\n      version: v1\n  io.k8s.api.rbac.v1.ClusterRoleList:\n    description: ClusterRoleList is a collection of ClusterRoles\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of ClusterRoles\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.ClusterRole'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleList\n      version: v1\n  io.k8s.api.rbac.v1.PolicyRule:\n    description: PolicyRule holds information that describes a policy rule, but does\n      not contain information about who the rule applies to or which namespace the\n      rule applies to.\n    properties:\n      apiGroups:\n        description: APIGroups is the name of the APIGroup that contains the resources.  If\n          multiple API groups are specified, any action requested against one of the\n          enumerated resources in any API group will be allowed.\n        items:\n          type: string\n        type: array\n      nonResourceURLs:\n        description: NonResourceURLs is a set of partial urls that a user should have\n          access to.  *s are allowed, but only as the full, final step in the path\n          Since non-resource URLs are not namespaced, this field is only applicable\n          for ClusterRoles referenced from a ClusterRoleBinding. Rules can either\n          apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL\n          paths (such as \"/api\"),  but not both.\n        items:\n          type: string\n        type: array\n      resourceNames:\n        description: ResourceNames is an optional white list of names that the rule\n          applies to.  An empty set means that everything is allowed.\n        items:\n          type: string\n        type: array\n      resources:\n        description: Resources is a list of resources this rule applies to.  ResourceAll\n          represents all resources.\n        items:\n          type: string\n        type: array\n      verbs:\n        description: Verbs is a list of Verbs that apply to ALL the ResourceKinds\n          and AttributeRestrictions contained in this rule.  VerbAll represents all\n          kinds.\n        items:\n          type: string\n        type: array\n    required:\n    - verbs\n  io.k8s.api.rbac.v1.Role:\n    description: Role is a namespaced, logical grouping of PolicyRules that can be\n      referenced as a unit by a RoleBinding.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      rules:\n        description: Rules holds all the PolicyRules for this Role\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.PolicyRule'\n        type: array\n    required:\n    - rules\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: Role\n      version: v1\n  io.k8s.api.rbac.v1.RoleBinding:\n    description: RoleBinding references a role, but does not contain it.  It can reference\n      a Role in the same namespace or a ClusterRole in the global namespace. It adds\n      who information via Subjects and namespace information by which namespace it\n      exists in.  RoleBindings in a given namespace only have effect in that namespace.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      roleRef:\n        $ref: '#/definitions/io.k8s.api.rbac.v1.RoleRef'\n        description: RoleRef can reference a Role in the current namespace or a ClusterRole\n          in the global namespace. If the RoleRef cannot be resolved, the Authorizer\n          must return an error.\n      subjects:\n        description: Subjects holds references to the objects the role applies to.\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.Subject'\n        type: array\n    required:\n    - roleRef\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleBinding\n      version: v1\n  io.k8s.api.rbac.v1.RoleBindingList:\n    description: RoleBindingList is a collection of RoleBindings\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of RoleBindings\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.RoleBinding'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleBindingList\n      version: v1\n  io.k8s.api.rbac.v1.RoleList:\n    description: RoleList is a collection of Roles\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of Roles\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1.Role'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleList\n      version: v1\n  io.k8s.api.rbac.v1.RoleRef:\n    description: RoleRef contains information that points to the role being used\n    properties:\n      apiGroup:\n        description: APIGroup is the group for the resource being referenced\n        type: string\n      kind:\n        description: Kind is the type of resource being referenced\n        type: string\n      name:\n        description: Name is the name of resource being referenced\n        type: string\n    required:\n    - apiGroup\n    - kind\n    - name\n  io.k8s.api.rbac.v1.Subject:\n    description: Subject contains a reference to the object or user identities a role\n      binding applies to.  This can either hold a direct API object reference, or\n      a value for non-objects such as user and group names.\n    properties:\n      apiGroup:\n        description: APIGroup holds the API group of the referenced subject. Defaults\n          to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\"\n          for User and Group subjects.\n        type: string\n      kind:\n        description: Kind of object being referenced. Values defined by this API group\n          are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized\n          the kind value, the Authorizer should report an error.\n        type: string\n      name:\n        description: Name of the object being referenced.\n        type: string\n      namespace:\n        description: Namespace of the referenced object.  If the object kind is non-namespace,\n          such as \"User\" or \"Group\", and this value is not empty the Authorizer should\n          report an error.\n        type: string\n    required:\n    - kind\n    - name\n  io.k8s.api.rbac.v1alpha1.AggregationRule:\n    description: AggregationRule describes how to locate ClusterRoles to aggregate\n      into the ClusterRole\n    properties:\n      clusterRoleSelectors:\n        description: ClusterRoleSelectors holds a list of selectors which will be\n          used to find ClusterRoles and create the rules. If any of the selectors\n          match, then the ClusterRole's permissions will be added\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        type: array\n  io.k8s.api.rbac.v1alpha1.ClusterRole:\n    description: ClusterRole is a cluster level, logical grouping of PolicyRules that\n      can be referenced as a unit by a RoleBinding or ClusterRoleBinding.\n    properties:\n      aggregationRule:\n        $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.AggregationRule'\n        description: AggregationRule is an optional field that describes how to build\n          the Rules for this ClusterRole. If AggregationRule is set, then the Rules\n          are controller managed and direct changes to Rules will be stomped by the\n          controller.\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      rules:\n        description: Rules holds all the PolicyRules for this ClusterRole\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.PolicyRule'\n        type: array\n    required:\n    - rules\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRole\n      version: v1alpha1\n  io.k8s.api.rbac.v1alpha1.ClusterRoleBinding:\n    description: ClusterRoleBinding references a ClusterRole, but not contain it.  It\n      can reference a ClusterRole in the global namespace, and adds who information\n      via Subject.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      roleRef:\n        $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleRef'\n        description: RoleRef can only reference a ClusterRole in the global namespace.\n          If the RoleRef cannot be resolved, the Authorizer must return an error.\n      subjects:\n        description: Subjects holds references to the objects the role applies to.\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Subject'\n        type: array\n    required:\n    - roleRef\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleBinding\n      version: v1alpha1\n  io.k8s.api.rbac.v1alpha1.ClusterRoleBindingList:\n    description: ClusterRoleBindingList is a collection of ClusterRoleBindings\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of ClusterRoleBindings\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleBindingList\n      version: v1alpha1\n  io.k8s.api.rbac.v1alpha1.ClusterRoleList:\n    description: ClusterRoleList is a collection of ClusterRoles\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of ClusterRoles\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleList\n      version: v1alpha1\n  io.k8s.api.rbac.v1alpha1.PolicyRule:\n    description: PolicyRule holds information that describes a policy rule, but does\n      not contain information about who the rule applies to or which namespace the\n      rule applies to.\n    properties:\n      apiGroups:\n        description: APIGroups is the name of the APIGroup that contains the resources.  If\n          multiple API groups are specified, any action requested against one of the\n          enumerated resources in any API group will be allowed.\n        items:\n          type: string\n        type: array\n      nonResourceURLs:\n        description: NonResourceURLs is a set of partial urls that a user should have\n          access to.  *s are allowed, but only as the full, final step in the path\n          This name is intentionally different than the internal type so that the\n          DefaultConvert works nicely and because the ordering may be different. Since\n          non-resource URLs are not namespaced, this field is only applicable for\n          ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply\n          to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths\n          (such as \"/api\"),  but not both.\n        items:\n          type: string\n        type: array\n      resourceNames:\n        description: ResourceNames is an optional white list of names that the rule\n          applies to.  An empty set means that everything is allowed.\n        items:\n          type: string\n        type: array\n      resources:\n        description: Resources is a list of resources this rule applies to.  ResourceAll\n          represents all resources.\n        items:\n          type: string\n        type: array\n      verbs:\n        description: Verbs is a list of Verbs that apply to ALL the ResourceKinds\n          and AttributeRestrictions contained in this rule.  VerbAll represents all\n          kinds.\n        items:\n          type: string\n        type: array\n    required:\n    - verbs\n  io.k8s.api.rbac.v1alpha1.Role:\n    description: Role is a namespaced, logical grouping of PolicyRules that can be\n      referenced as a unit by a RoleBinding.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      rules:\n        description: Rules holds all the PolicyRules for this Role\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.PolicyRule'\n        type: array\n    required:\n    - rules\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: Role\n      version: v1alpha1\n  io.k8s.api.rbac.v1alpha1.RoleBinding:\n    description: RoleBinding references a role, but does not contain it.  It can reference\n      a Role in the same namespace or a ClusterRole in the global namespace. It adds\n      who information via Subjects and namespace information by which namespace it\n      exists in.  RoleBindings in a given namespace only have effect in that namespace.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      roleRef:\n        $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleRef'\n        description: RoleRef can reference a Role in the current namespace or a ClusterRole\n          in the global namespace. If the RoleRef cannot be resolved, the Authorizer\n          must return an error.\n      subjects:\n        description: Subjects holds references to the objects the role applies to.\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Subject'\n        type: array\n    required:\n    - roleRef\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleBinding\n      version: v1alpha1\n  io.k8s.api.rbac.v1alpha1.RoleBindingList:\n    description: RoleBindingList is a collection of RoleBindings\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of RoleBindings\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleBindingList\n      version: v1alpha1\n  io.k8s.api.rbac.v1alpha1.RoleList:\n    description: RoleList is a collection of Roles\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of Roles\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleList\n      version: v1alpha1\n  io.k8s.api.rbac.v1alpha1.RoleRef:\n    description: RoleRef contains information that points to the role being used\n    properties:\n      apiGroup:\n        description: APIGroup is the group for the resource being referenced\n        type: string\n      kind:\n        description: Kind is the type of resource being referenced\n        type: string\n      name:\n        description: Name is the name of resource being referenced\n        type: string\n    required:\n    - apiGroup\n    - kind\n    - name\n  io.k8s.api.rbac.v1alpha1.Subject:\n    description: Subject contains a reference to the object or user identities a role\n      binding applies to.  This can either hold a direct API object reference, or\n      a value for non-objects such as user and group names.\n    properties:\n      apiVersion:\n        description: APIVersion holds the API group and version of the referenced\n          subject. Defaults to \"v1\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io/v1alpha1\"\n          for User and Group subjects.\n        type: string\n      kind:\n        description: Kind of object being referenced. Values defined by this API group\n          are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized\n          the kind value, the Authorizer should report an error.\n        type: string\n      name:\n        description: Name of the object being referenced.\n        type: string\n      namespace:\n        description: Namespace of the referenced object.  If the object kind is non-namespace,\n          such as \"User\" or \"Group\", and this value is not empty the Authorizer should\n          report an error.\n        type: string\n    required:\n    - kind\n    - name\n  io.k8s.api.rbac.v1beta1.AggregationRule:\n    description: AggregationRule describes how to locate ClusterRoles to aggregate\n      into the ClusterRole\n    properties:\n      clusterRoleSelectors:\n        description: ClusterRoleSelectors holds a list of selectors which will be\n          used to find ClusterRoles and create the rules. If any of the selectors\n          match, then the ClusterRole's permissions will be added\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        type: array\n  io.k8s.api.rbac.v1beta1.ClusterRole:\n    description: ClusterRole is a cluster level, logical grouping of PolicyRules that\n      can be referenced as a unit by a RoleBinding or ClusterRoleBinding.\n    properties:\n      aggregationRule:\n        $ref: '#/definitions/io.k8s.api.rbac.v1beta1.AggregationRule'\n        description: AggregationRule is an optional field that describes how to build\n          the Rules for this ClusterRole. If AggregationRule is set, then the Rules\n          are controller managed and direct changes to Rules will be stomped by the\n          controller.\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      rules:\n        description: Rules holds all the PolicyRules for this ClusterRole\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.PolicyRule'\n        type: array\n    required:\n    - rules\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRole\n      version: v1beta1\n  io.k8s.api.rbac.v1beta1.ClusterRoleBinding:\n    description: ClusterRoleBinding references a ClusterRole, but not contain it.  It\n      can reference a ClusterRole in the global namespace, and adds who information\n      via Subject.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      roleRef:\n        $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleRef'\n        description: RoleRef can only reference a ClusterRole in the global namespace.\n          If the RoleRef cannot be resolved, the Authorizer must return an error.\n      subjects:\n        description: Subjects holds references to the objects the role applies to.\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Subject'\n        type: array\n    required:\n    - roleRef\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleBinding\n      version: v1beta1\n  io.k8s.api.rbac.v1beta1.ClusterRoleBindingList:\n    description: ClusterRoleBindingList is a collection of ClusterRoleBindings\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of ClusterRoleBindings\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleBindingList\n      version: v1beta1\n  io.k8s.api.rbac.v1beta1.ClusterRoleList:\n    description: ClusterRoleList is a collection of ClusterRoles\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of ClusterRoles\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: ClusterRoleList\n      version: v1beta1\n  io.k8s.api.rbac.v1beta1.PolicyRule:\n    description: PolicyRule holds information that describes a policy rule, but does\n      not contain information about who the rule applies to or which namespace the\n      rule applies to.\n    properties:\n      apiGroups:\n        description: APIGroups is the name of the APIGroup that contains the resources.  If\n          multiple API groups are specified, any action requested against one of the\n          enumerated resources in any API group will be allowed.\n        items:\n          type: string\n        type: array\n      nonResourceURLs:\n        description: NonResourceURLs is a set of partial urls that a user should have\n          access to.  *s are allowed, but only as the full, final step in the path\n          Since non-resource URLs are not namespaced, this field is only applicable\n          for ClusterRoles referenced from a ClusterRoleBinding. Rules can either\n          apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL\n          paths (such as \"/api\"),  but not both.\n        items:\n          type: string\n        type: array\n      resourceNames:\n        description: ResourceNames is an optional white list of names that the rule\n          applies to.  An empty set means that everything is allowed.\n        items:\n          type: string\n        type: array\n      resources:\n        description: Resources is a list of resources this rule applies to.  '*' represents\n          all resources in the specified apiGroups. '*/foo' represents the subresource\n          'foo' for all resources in the specified apiGroups.\n        items:\n          type: string\n        type: array\n      verbs:\n        description: Verbs is a list of Verbs that apply to ALL the ResourceKinds\n          and AttributeRestrictions contained in this rule.  VerbAll represents all\n          kinds.\n        items:\n          type: string\n        type: array\n    required:\n    - verbs\n  io.k8s.api.rbac.v1beta1.Role:\n    description: Role is a namespaced, logical grouping of PolicyRules that can be\n      referenced as a unit by a RoleBinding.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      rules:\n        description: Rules holds all the PolicyRules for this Role\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.PolicyRule'\n        type: array\n    required:\n    - rules\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: Role\n      version: v1beta1\n  io.k8s.api.rbac.v1beta1.RoleBinding:\n    description: RoleBinding references a role, but does not contain it.  It can reference\n      a Role in the same namespace or a ClusterRole in the global namespace. It adds\n      who information via Subjects and namespace information by which namespace it\n      exists in.  RoleBindings in a given namespace only have effect in that namespace.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object's metadata.\n      roleRef:\n        $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleRef'\n        description: RoleRef can reference a Role in the current namespace or a ClusterRole\n          in the global namespace. If the RoleRef cannot be resolved, the Authorizer\n          must return an error.\n      subjects:\n        description: Subjects holds references to the objects the role applies to.\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Subject'\n        type: array\n    required:\n    - roleRef\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleBinding\n      version: v1beta1\n  io.k8s.api.rbac.v1beta1.RoleBindingList:\n    description: RoleBindingList is a collection of RoleBindings\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of RoleBindings\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleBindingList\n      version: v1beta1\n  io.k8s.api.rbac.v1beta1.RoleList:\n    description: RoleList is a collection of Roles\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of Roles\n        items:\n          $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard object's metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: rbac.authorization.k8s.io\n      kind: RoleList\n      version: v1beta1\n  io.k8s.api.rbac.v1beta1.RoleRef:\n    description: RoleRef contains information that points to the role being used\n    properties:\n      apiGroup:\n        description: APIGroup is the group for the resource being referenced\n        type: string\n      kind:\n        description: Kind is the type of resource being referenced\n        type: string\n      name:\n        description: Name is the name of resource being referenced\n        type: string\n    required:\n    - apiGroup\n    - kind\n    - name\n  io.k8s.api.rbac.v1beta1.Subject:\n    description: Subject contains a reference to the object or user identities a role\n      binding applies to.  This can either hold a direct API object reference, or\n      a value for non-objects such as user and group names.\n    properties:\n      apiGroup:\n        description: APIGroup holds the API group of the referenced subject. Defaults\n          to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\"\n          for User and Group subjects.\n        type: string\n      kind:\n        description: Kind of object being referenced. Values defined by this API group\n          are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized\n          the kind value, the Authorizer should report an error.\n        type: string\n      name:\n        description: Name of the object being referenced.\n        type: string\n      namespace:\n        description: Namespace of the referenced object.  If the object kind is non-namespace,\n          such as \"User\" or \"Group\", and this value is not empty the Authorizer should\n          report an error.\n        type: string\n    required:\n    - kind\n    - name\n  io.k8s.api.scheduling.v1alpha1.PriorityClass:\n    description: PriorityClass defines mapping from a priority class name to the priority\n      integer value. The value can be any valid integer.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      description:\n        description: description is an arbitrary string that usually provides guidelines\n          on when this priority class should be used.\n        type: string\n      globalDefault:\n        description: globalDefault specifies whether this PriorityClass should be\n          considered as the default priority for pods that do not have any priority\n          class. Only one PriorityClass can be marked as `globalDefault`. However,\n          if more than one PriorityClasses exists with their `globalDefault` field\n          set to true, the smallest value of such global default PriorityClasses will\n          be used as the default priority.\n        type: boolean\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      value:\n        description: The value of this priority class. This is the actual priority\n          that pods receive when they have the name of this class in their pod spec.\n        format: int32\n        type: integer\n    required:\n    - value\n    x-kubernetes-group-version-kind:\n    - group: scheduling.k8s.io\n      kind: PriorityClass\n      version: v1alpha1\n  io.k8s.api.scheduling.v1alpha1.PriorityClassList:\n    description: PriorityClassList is a collection of priority classes.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: items is the list of PriorityClasses\n        items:\n          $ref: '#/definitions/io.k8s.api.scheduling.v1alpha1.PriorityClass'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: scheduling.k8s.io\n      kind: PriorityClassList\n      version: v1alpha1\n  io.k8s.api.scheduling.v1beta1.PriorityClass:\n    description: PriorityClass defines mapping from a priority class name to the priority\n      integer value. The value can be any valid integer.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      description:\n        description: description is an arbitrary string that usually provides guidelines\n          on when this priority class should be used.\n        type: string\n      globalDefault:\n        description: globalDefault specifies whether this PriorityClass should be\n          considered as the default priority for pods that do not have any priority\n          class. Only one PriorityClass can be marked as `globalDefault`. However,\n          if more than one PriorityClasses exists with their `globalDefault` field\n          set to true, the smallest value of such global default PriorityClasses will\n          be used as the default priority.\n        type: boolean\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      value:\n        description: The value of this priority class. This is the actual priority\n          that pods receive when they have the name of this class in their pod spec.\n        format: int32\n        type: integer\n    required:\n    - value\n    x-kubernetes-group-version-kind:\n    - group: scheduling.k8s.io\n      kind: PriorityClass\n      version: v1beta1\n  io.k8s.api.scheduling.v1beta1.PriorityClassList:\n    description: PriorityClassList is a collection of priority classes.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: items is the list of PriorityClasses\n        items:\n          $ref: '#/definitions/io.k8s.api.scheduling.v1beta1.PriorityClass'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: scheduling.k8s.io\n      kind: PriorityClassList\n      version: v1beta1\n  io.k8s.api.settings.v1alpha1.PodPreset:\n    description: PodPreset is a policy resource that defines additional runtime requirements\n      for a Pod.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPresetSpec'\n    x-kubernetes-group-version-kind:\n    - group: settings.k8s.io\n      kind: PodPreset\n      version: v1alpha1\n  io.k8s.api.settings.v1alpha1.PodPresetList:\n    description: PodPresetList is a list of PodPreset objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is a list of schema objects.\n        items:\n          $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: settings.k8s.io\n      kind: PodPresetList\n      version: v1alpha1\n  io.k8s.api.settings.v1alpha1.PodPresetSpec:\n    description: PodPresetSpec is a description of a pod preset.\n    properties:\n      env:\n        description: Env defines the collection of EnvVar to inject into containers.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.EnvVar'\n        type: array\n      envFrom:\n        description: EnvFrom defines the collection of EnvFromSource to inject into\n          containers.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.EnvFromSource'\n        type: array\n      selector:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector'\n        description: Selector is a label query over a set of resources, in this case\n          pods. Required.\n      volumeMounts:\n        description: VolumeMounts defines the collection of VolumeMount to inject\n          into containers.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.VolumeMount'\n        type: array\n      volumes:\n        description: Volumes defines the collection of Volume to inject into the pod.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.Volume'\n        type: array\n  io.k8s.api.storage.v1.StorageClass:\n    description: 'StorageClass describes the parameters for a class of storage for\n      which PersistentVolumes can be dynamically provisioned.\n\n\n      StorageClasses are non-namespaced; the name of the storage class according to\n      etcd is in ObjectMeta.Name.'\n    properties:\n      allowVolumeExpansion:\n        description: AllowVolumeExpansion shows whether the storage class allow volume\n          expand\n        type: boolean\n      allowedTopologies:\n        description: Restrict the node topologies where volumes can be dynamically\n          provisioned. Each volume plugin defines its own supported topology specifications.\n          An empty TopologySelectorTerm list means there is no topology restriction.\n          This field is alpha-level and is only honored by servers that enable the\n          DynamicProvisioningScheduling feature.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.TopologySelectorTerm'\n        type: array\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      mountOptions:\n        description: Dynamically provisioned PersistentVolumes of this storage class\n          are created with these mountOptions, e.g. [\"ro\", \"soft\"]. Not validated\n          - mount of the PVs will simply fail if one is invalid.\n        items:\n          type: string\n        type: array\n      parameters:\n        additionalProperties:\n          type: string\n        description: Parameters holds the parameters for the provisioner that should\n          create volumes of this storage class.\n        type: object\n      provisioner:\n        description: Provisioner indicates the type of the provisioner.\n        type: string\n      reclaimPolicy:\n        description: Dynamically provisioned PersistentVolumes of this storage class\n          are created with this reclaimPolicy. Defaults to Delete.\n        type: string\n      volumeBindingMode:\n        description: VolumeBindingMode indicates how PersistentVolumeClaims should\n          be provisioned and bound.  When unset, VolumeBindingImmediate is used. This\n          field is alpha-level and is only honored by servers that enable the VolumeScheduling\n          feature.\n        type: string\n    required:\n    - provisioner\n    x-kubernetes-group-version-kind:\n    - group: storage.k8s.io\n      kind: StorageClass\n      version: v1\n  io.k8s.api.storage.v1.StorageClassList:\n    description: StorageClassList is a collection of storage classes.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of StorageClasses\n        items:\n          $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: storage.k8s.io\n      kind: StorageClassList\n      version: v1\n  io.k8s.api.storage.v1alpha1.VolumeAttachment:\n    description: 'VolumeAttachment captures the intent to attach or detach the specified\n      volume to/from the specified node.\n\n\n      VolumeAttachment objects are non-namespaced.'\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachmentSpec'\n        description: Specification of the desired attach/detach volume behavior. Populated\n          by the Kubernetes system.\n      status:\n        $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachmentStatus'\n        description: Status of the VolumeAttachment request. Populated by the entity\n          completing the attach or detach operation, i.e. the external-attacher.\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: storage.k8s.io\n      kind: VolumeAttachment\n      version: v1alpha1\n  io.k8s.api.storage.v1alpha1.VolumeAttachmentList:\n    description: VolumeAttachmentList is a collection of VolumeAttachment objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of VolumeAttachments\n        items:\n          $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachment'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: storage.k8s.io\n      kind: VolumeAttachmentList\n      version: v1alpha1\n  io.k8s.api.storage.v1alpha1.VolumeAttachmentSource:\n    description: VolumeAttachmentSource represents a volume that should be attached.\n      Right now only PersistenVolumes can be attached via external attacher, in future\n      we may allow also inline volumes in pods. Exactly one member can be set.\n    properties:\n      persistentVolumeName:\n        description: Name of the persistent volume to attach.\n        type: string\n  io.k8s.api.storage.v1alpha1.VolumeAttachmentSpec:\n    description: VolumeAttachmentSpec is the specification of a VolumeAttachment request.\n    properties:\n      attacher:\n        description: Attacher indicates the name of the volume driver that MUST handle\n          this request. This is the name returned by GetPluginName().\n        type: string\n      nodeName:\n        description: The node that the volume should be attached to.\n        type: string\n      source:\n        $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeAttachmentSource'\n        description: Source represents the volume that should be attached.\n    required:\n    - attacher\n    - source\n    - nodeName\n  io.k8s.api.storage.v1alpha1.VolumeAttachmentStatus:\n    description: VolumeAttachmentStatus is the status of a VolumeAttachment request.\n    properties:\n      attachError:\n        $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeError'\n        description: The last error encountered during attach operation, if any. This\n          field must only be set by the entity completing the attach operation, i.e.\n          the external-attacher.\n      attached:\n        description: Indicates the volume is successfully attached. This field must\n          only be set by the entity completing the attach operation, i.e. the external-attacher.\n        type: boolean\n      attachmentMetadata:\n        additionalProperties:\n          type: string\n        description: Upon successful attach, this field is populated with any information\n          returned by the attach operation that must be passed into subsequent WaitForAttach\n          or Mount calls. This field must only be set by the entity completing the\n          attach operation, i.e. the external-attacher.\n        type: object\n      detachError:\n        $ref: '#/definitions/io.k8s.api.storage.v1alpha1.VolumeError'\n        description: The last error encountered during detach operation, if any. This\n          field must only be set by the entity completing the detach operation, i.e.\n          the external-attacher.\n    required:\n    - attached\n  io.k8s.api.storage.v1alpha1.VolumeError:\n    description: VolumeError captures an error encountered during a volume operation.\n    properties:\n      message:\n        description: String detailing the error encountered during Attach or Detach\n          operation. This string maybe logged, so it should not contain sensitive\n          information.\n        type: string\n      time:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Time the error was encountered.\n  io.k8s.api.storage.v1beta1.StorageClass:\n    description: 'StorageClass describes the parameters for a class of storage for\n      which PersistentVolumes can be dynamically provisioned.\n\n\n      StorageClasses are non-namespaced; the name of the storage class according to\n      etcd is in ObjectMeta.Name.'\n    properties:\n      allowVolumeExpansion:\n        description: AllowVolumeExpansion shows whether the storage class allow volume\n          expand\n        type: boolean\n      allowedTopologies:\n        description: Restrict the node topologies where volumes can be dynamically\n          provisioned. Each volume plugin defines its own supported topology specifications.\n          An empty TopologySelectorTerm list means there is no topology restriction.\n          This field is alpha-level and is only honored by servers that enable the\n          DynamicProvisioningScheduling feature.\n        items:\n          $ref: '#/definitions/io.k8s.api.core.v1.TopologySelectorTerm'\n        type: array\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      mountOptions:\n        description: Dynamically provisioned PersistentVolumes of this storage class\n          are created with these mountOptions, e.g. [\"ro\", \"soft\"]. Not validated\n          - mount of the PVs will simply fail if one is invalid.\n        items:\n          type: string\n        type: array\n      parameters:\n        additionalProperties:\n          type: string\n        description: Parameters holds the parameters for the provisioner that should\n          create volumes of this storage class.\n        type: object\n      provisioner:\n        description: Provisioner indicates the type of the provisioner.\n        type: string\n      reclaimPolicy:\n        description: Dynamically provisioned PersistentVolumes of this storage class\n          are created with this reclaimPolicy. Defaults to Delete.\n        type: string\n      volumeBindingMode:\n        description: VolumeBindingMode indicates how PersistentVolumeClaims should\n          be provisioned and bound.  When unset, VolumeBindingImmediate is used. This\n          field is alpha-level and is only honored by servers that enable the VolumeScheduling\n          feature.\n        type: string\n    required:\n    - provisioner\n    x-kubernetes-group-version-kind:\n    - group: storage.k8s.io\n      kind: StorageClass\n      version: v1beta1\n  io.k8s.api.storage.v1beta1.StorageClassList:\n    description: StorageClassList is a collection of storage classes.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of StorageClasses\n        items:\n          $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: storage.k8s.io\n      kind: StorageClassList\n      version: v1beta1\n  io.k8s.api.storage.v1beta1.VolumeAttachment:\n    description: 'VolumeAttachment captures the intent to attach or detach the specified\n      volume to/from the specified node.\n\n\n      VolumeAttachment objects are non-namespaced.'\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: 'Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      spec:\n        $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachmentSpec'\n        description: Specification of the desired attach/detach volume behavior. Populated\n          by the Kubernetes system.\n      status:\n        $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachmentStatus'\n        description: Status of the VolumeAttachment request. Populated by the entity\n          completing the attach or detach operation, i.e. the external-attacher.\n    required:\n    - spec\n    x-kubernetes-group-version-kind:\n    - group: storage.k8s.io\n      kind: VolumeAttachment\n      version: v1beta1\n  io.k8s.api.storage.v1beta1.VolumeAttachmentList:\n    description: VolumeAttachmentList is a collection of VolumeAttachment objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of VolumeAttachments\n        items:\n          $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachment'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: storage.k8s.io\n      kind: VolumeAttachmentList\n      version: v1beta1\n  io.k8s.api.storage.v1beta1.VolumeAttachmentSource:\n    description: VolumeAttachmentSource represents a volume that should be attached.\n      Right now only PersistenVolumes can be attached via external attacher, in future\n      we may allow also inline volumes in pods. Exactly one member can be set.\n    properties:\n      persistentVolumeName:\n        description: Name of the persistent volume to attach.\n        type: string\n  io.k8s.api.storage.v1beta1.VolumeAttachmentSpec:\n    description: VolumeAttachmentSpec is the specification of a VolumeAttachment request.\n    properties:\n      attacher:\n        description: Attacher indicates the name of the volume driver that MUST handle\n          this request. This is the name returned by GetPluginName().\n        type: string\n      nodeName:\n        description: The node that the volume should be attached to.\n        type: string\n      source:\n        $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeAttachmentSource'\n        description: Source represents the volume that should be attached.\n    required:\n    - attacher\n    - source\n    - nodeName\n  io.k8s.api.storage.v1beta1.VolumeAttachmentStatus:\n    description: VolumeAttachmentStatus is the status of a VolumeAttachment request.\n    properties:\n      attachError:\n        $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeError'\n        description: The last error encountered during attach operation, if any. This\n          field must only be set by the entity completing the attach operation, i.e.\n          the external-attacher.\n      attached:\n        description: Indicates the volume is successfully attached. This field must\n          only be set by the entity completing the attach operation, i.e. the external-attacher.\n        type: boolean\n      attachmentMetadata:\n        additionalProperties:\n          type: string\n        description: Upon successful attach, this field is populated with any information\n          returned by the attach operation that must be passed into subsequent WaitForAttach\n          or Mount calls. This field must only be set by the entity completing the\n          attach operation, i.e. the external-attacher.\n        type: object\n      detachError:\n        $ref: '#/definitions/io.k8s.api.storage.v1beta1.VolumeError'\n        description: The last error encountered during detach operation, if any. This\n          field must only be set by the entity completing the detach operation, i.e.\n          the external-attacher.\n    required:\n    - attached\n  io.k8s.api.storage.v1beta1.VolumeError:\n    description: VolumeError captures an error encountered during a volume operation.\n    properties:\n      message:\n        description: String detailing the error encountered during Attach or Detach\n          operation. This string maybe logged, so it should not contain sensitive\n          information.\n        type: string\n      time:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Time the error was encountered.\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition:\n    description: CustomResourceColumnDefinition specifies a column for server side\n      printing.\n    properties:\n      JSONPath:\n        description: JSONPath is a simple JSON path, i.e. with array notation.\n        type: string\n      description:\n        description: description is a human readable description of this column.\n        type: string\n      format:\n        description: format is an optional OpenAPI type definition for this column.\n          The 'name' format is applied to the primary identifier column to assist\n          in clients identifying column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types\n          for more.\n        type: string\n      name:\n        description: name is a human readable name for the column.\n        type: string\n      priority:\n        description: priority is an integer defining the relative importance of this\n          column compared to others. Lower numbers are considered higher priority.\n          Columns that may be omitted in limited space scenarios should be given a\n          higher priority.\n        format: int32\n        type: integer\n      type:\n        description: type is an OpenAPI type definition for this column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types\n          for more.\n        type: string\n    required:\n    - name\n    - type\n    - JSONPath\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition:\n    description: CustomResourceDefinition represents a resource that should be exposed\n      on the API server.  Its name MUST be in the format <.spec.name>.<.spec.group>.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec'\n        description: Spec describes how the user wants the resources to appear\n      status:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus'\n        description: Status indicates the actual state of the CustomResourceDefinition\n    x-kubernetes-group-version-kind:\n    - group: apiextensions.k8s.io\n      kind: CustomResourceDefinition\n      version: v1beta1\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition:\n    description: CustomResourceDefinitionCondition contains details for the current\n      condition of this pod.\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: Human-readable message indicating details about last transition.\n        type: string\n      reason:\n        description: Unique, one-word, CamelCase reason for the condition's last transition.\n        type: string\n      status:\n        description: Status is the status of the condition. Can be True, False, Unknown.\n        type: string\n      type:\n        description: Type is the type of the condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList:\n    description: CustomResourceDefinitionList is a list of CustomResourceDefinition\n      objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items individual CustomResourceDefinitions\n        items:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apiextensions.k8s.io\n      kind: CustomResourceDefinitionList\n      version: v1beta1\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames:\n    description: CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition\n    properties:\n      categories:\n        description: Categories is a list of grouped resources custom resources belong\n          to (e.g. 'all')\n        items:\n          type: string\n        type: array\n      kind:\n        description: Kind is the serialized kind of the resource.  It is normally\n          CamelCase and singular.\n        type: string\n      listKind:\n        description: ListKind is the serialized kind of the list for this resource.  Defaults\n          to <kind>List.\n        type: string\n      plural:\n        description: 'Plural is the plural name of the resource to serve.  It must\n          match the name of the CustomResourceDefinition-registration too: plural.group\n          and it must be all lowercase.'\n        type: string\n      shortNames:\n        description: ShortNames are short names for the resource.  It must be all\n          lowercase.\n        items:\n          type: string\n        type: array\n      singular:\n        description: Singular is the singular name of the resource.  It must be all\n          lowercase  Defaults to lowercased <kind>\n        type: string\n    required:\n    - plural\n    - kind\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec:\n    description: CustomResourceDefinitionSpec describes how a user wants their resource\n      to appear\n    properties:\n      additionalPrinterColumns:\n        description: AdditionalPrinterColumns are additional columns shown e.g. in\n          kubectl next to the name. Defaults to a created-at column.\n        items:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition'\n        type: array\n      group:\n        description: Group is the group this resource belongs in\n        type: string\n      names:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames'\n        description: Names are the names used to describe this custom resource\n      scope:\n        description: Scope indicates whether this resource is cluster or namespace\n          scoped.  Default is namespaced\n        type: string\n      subresources:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources'\n        description: Subresources describes the subresources for CustomResources\n      validation:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation'\n        description: Validation describes the validation methods for CustomResources\n      version:\n        description: 'Version is the version this resource belongs in Should be always\n          first item in Versions field if provided. Optional, but at least one of\n          Version or Versions must be set. Deprecated: Please use `Versions`.'\n        type: string\n      versions:\n        description: 'Versions is the list of all supported versions for this resource.\n          If Version field is provided, this field is optional. Validation: All versions\n          must use the same validation schema for now. i.e., top level Validation\n          field is applied to all of these versions. Order: The version name will\n          be used to compute the order. If the version string is \"kube-like\", it will\n          sort above non \"kube-like\" version strings, which are ordered lexicographically.\n          \"Kube-like\" versions start with a \"v\", then are followed by a number (the\n          major version), then optionally the string \"alpha\" or \"beta\" and another\n          number (the minor version). These are sorted first by GA > beta > alpha\n          (where GA is a version with no suffix such as beta or alpha), and then by\n          comparing major version, then minor version. An example sorted list of versions:\n          v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.'\n        items:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion'\n        type: array\n    required:\n    - group\n    - names\n    - scope\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus:\n    description: CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition\n    properties:\n      acceptedNames:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames'\n        description: AcceptedNames are the names that are actually being used to serve\n          discovery They may be different than the names in spec.\n      conditions:\n        description: Conditions indicate state for particular aspects of a CustomResourceDefinition\n        items:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition'\n        type: array\n      storedVersions:\n        description: StoredVersions are all versions of CustomResources that were\n          ever persisted. Tracking these versions allows a migration path for stored\n          versions in etcd. The field is mutable so the migration controller can first\n          finish a migration to another version (i.e. that no old objects are left\n          in the storage), and then remove the rest of the versions from this list.\n          None of the versions in this list can be removed from the spec.Versions\n          field.\n        items:\n          type: string\n        type: array\n    required:\n    - conditions\n    - acceptedNames\n    - storedVersions\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion:\n    properties:\n      name:\n        description: \"Name is the version name, e.g. \\u201Cv1\\u201D, \\u201Cv2beta1\\u201D\\\n          , etc.\"\n        type: string\n      served:\n        description: Served is a flag enabling/disabling this version from being served\n          via REST APIs\n        type: boolean\n      storage:\n        description: Storage flags the version as storage version. There must be exactly\n          one flagged as storage version.\n        type: boolean\n    required:\n    - name\n    - served\n    - storage\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale:\n    description: CustomResourceSubresourceScale defines how to serve the scale subresource\n      for CustomResources.\n    properties:\n      labelSelectorPath:\n        description: LabelSelectorPath defines the JSON path inside of a CustomResource\n          that corresponds to Scale.Status.Selector. Only JSON paths without the array\n          notation are allowed. Must be a JSON Path under .status. Must be set to\n          work with HPA. If there is no value under the given path in the CustomResource,\n          the status label selector value in the /scale subresource will default to\n          the empty string.\n        type: string\n      specReplicasPath:\n        description: SpecReplicasPath defines the JSON path inside of a CustomResource\n          that corresponds to Scale.Spec.Replicas. Only JSON paths without the array\n          notation are allowed. Must be a JSON Path under .spec. If there is no value\n          under the given path in the CustomResource, the /scale subresource will\n          return an error on GET.\n        type: string\n      statusReplicasPath:\n        description: StatusReplicasPath defines the JSON path inside of a CustomResource\n          that corresponds to Scale.Status.Replicas. Only JSON paths without the array\n          notation are allowed. Must be a JSON Path under .status. If there is no\n          value under the given path in the CustomResource, the status replica value\n          in the /scale subresource will default to 0.\n        type: string\n    required:\n    - specReplicasPath\n    - statusReplicasPath\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus:\n    description: CustomResourceSubresourceStatus defines how to serve the status subresource\n      for CustomResources. Status is represented by the `.status` JSON path inside\n      of a CustomResource. When set, * exposes a /status subresource for the custom\n      resource * PUT requests to the /status subresource take a custom resource object,\n      and ignore changes to anything except the status stanza * PUT/POST/PATCH requests\n      to the custom resource ignore changes to the status stanza\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources:\n    description: CustomResourceSubresources defines the status and scale subresources\n      for CustomResources.\n    properties:\n      scale:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale'\n        description: Scale denotes the scale subresource for CustomResources\n      status:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus'\n        description: Status denotes the status subresource for CustomResources\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation:\n    description: CustomResourceValidation is a list of validation methods for CustomResources.\n    properties:\n      openAPIV3Schema:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n        description: OpenAPIV3Schema is the OpenAPI v3 schema to be validated against.\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation:\n    description: ExternalDocumentation allows referencing an external resource for\n      extended documentation.\n    properties:\n      description:\n        type: string\n      url:\n        type: string\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSON:\n    description: 'JSON represents any valid JSON value. These types are supported:\n      bool, int64, float64, string, []interface{}, map[string]interface{} and nil.'\n    properties:\n      Raw:\n        format: byte\n        type: string\n    required:\n    - Raw\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps:\n    description: JSONSchemaProps is a JSON-Schema following Specification Draft 4\n      (http://json-schema.org/).\n    properties:\n      $ref:\n        type: string\n      $schema:\n        type: string\n      additionalItems:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool'\n      additionalProperties:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool'\n      allOf:\n        items:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n        type: array\n      anyOf:\n        items:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n        type: array\n      default:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSON'\n      definitions:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n        type: object\n      dependencies:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray'\n        type: object\n      description:\n        type: string\n      enum:\n        items:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSON'\n        type: array\n      example:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSON'\n      exclusiveMaximum:\n        type: boolean\n      exclusiveMinimum:\n        type: boolean\n      externalDocs:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation'\n      format:\n        type: string\n      id:\n        type: string\n      items:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n      maxItems:\n        format: int64\n        type: integer\n      maxLength:\n        format: int64\n        type: integer\n      maxProperties:\n        format: int64\n        type: integer\n      maximum:\n        format: double\n        type: number\n      minItems:\n        format: int64\n        type: integer\n      minLength:\n        format: int64\n        type: integer\n      minProperties:\n        format: int64\n        type: integer\n      minimum:\n        format: double\n        type: number\n      multipleOf:\n        format: double\n        type: number\n      not:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n      oneOf:\n        items:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n        type: array\n      pattern:\n        type: string\n      patternProperties:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n        type: object\n      properties:\n        additionalProperties:\n          $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n        type: object\n      required:\n        items:\n          type: string\n        type: array\n      title:\n        type: string\n      type:\n        type: string\n      uniqueItems:\n        type: boolean\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool:\n    description: JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value.\n      Defaults to true for the boolean property.\n    properties:\n      Allows:\n        type: boolean\n      Schema:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n    required:\n    - Allows\n    - Schema\n  io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray:\n    description: JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string\n      array.\n    properties:\n      Property:\n        items:\n          type: string\n        type: array\n      Schema:\n        $ref: '#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps'\n    required:\n    - Schema\n    - Property\n  io.k8s.apimachinery.pkg.api.resource.Quantity:\n    description: \"Quantity is a fixed-point representation of a number. It provides\\\n      \\ convenient marshaling/unmarshaling in JSON and YAML, in addition to String()\\\n      \\ and Int64() accessors.\\n\\nThe serialization format is:\\n\\n<quantity>     \\\n      \\   ::= <signedNumber><suffix>\\n  (Note that <suffix> may be empty, from the\\\n      \\ \\\"\\\" case in <decimalSI>.)\\n<digit>           ::= 0 | 1 | ... | 9 <digits>\\\n      \\          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits>\\\n      \\ | <digits>. | .<digits> <sign>            ::= \\\"+\\\" | \\\"-\\\" <signedNumber>\\\n      \\    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent>\\\n      \\ | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei\\n  (International\\\n      \\ System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\\n<decimalSI>\\\n      \\       ::= m | \\\"\\\" | k | M | G | T | P | E\\n  (Note that 1024 = 1Ki but 1000\\\n      \\ = 1k; I didn't choose the capitalization.)\\n<decimalExponent> ::= \\\"e\\\" <signedNumber>\\\n      \\ | \\\"E\\\" <signedNumber>\\n\\nNo matter which of the three exponent forms is used,\\\n      \\ no quantity may represent a number greater than 2^63-1 in magnitude, nor may\\\n      \\ it have more than 3 decimal places. Numbers larger or more precise will be\\\n      \\ capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended\\\n      \\ in the future if we require larger or smaller quantities.\\n\\nWhen a Quantity\\\n      \\ is parsed from a string, it will remember the type of suffix it had, and will\\\n      \\ use the same type again when it is serialized.\\n\\nBefore serializing, Quantity\\\n      \\ will be put in \\\"canonical form\\\". This means that Exponent/suffix will be\\\n      \\ adjusted up or down (with a corresponding increase or decrease in Mantissa)\\\n      \\ such that:\\n  a. No precision is lost\\n  b. No fractional digits will be emitted\\n\\\n      \\  c. The exponent (or suffix) is as large as possible.\\nThe sign will be omitted\\\n      \\ unless the number is negative.\\n\\nExamples:\\n  1.5 will be serialized as \\\"\\\n      1500m\\\"\\n  1.5Gi will be serialized as \\\"1536Mi\\\"\\n\\nNOTE: We reserve the right\\\n      \\ to amend this canonical format, perhaps to\\n  allow 1.5 to be canonical.\\n\\\n      \\  or after March 2015.\\n\\nNote that the quantity will NEVER be internally represented\\\n      \\ by a floating point number. That is the whole point of this exercise.\\n\\n\\\n      Non-canonical values will still parse as long as they are well formed, but will\\\n      \\ be re-emitted in their canonical form. (So always use canonical form, or don't\\\n      \\ diff.)\\n\\nThis format is intended to make it difficult to use these numbers\\\n      \\ without writing some sort of special handling code in the hopes that that\\\n      \\ will cause implementors to also use a fixed point implementation.\"\n    type: string\n  io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup:\n    description: APIGroup contains the name, the supported versions, and the preferred\n      version of a group.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      name:\n        description: name is the name of the group.\n        type: string\n      preferredVersion:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery'\n        description: preferredVersion is the version preferred by the API server,\n          which probably is the storage version.\n      serverAddressByClientCIDRs:\n        description: 'a map of client CIDR to server address that is serving this\n          group. This is to help clients reach servers in the most network-efficient\n          way possible. Clients can use the appropriate server address as per the\n          CIDR that they match. In case of multiple matches, clients should use the\n          longest matching CIDR. The server returns only those CIDRs that it thinks\n          that the client can match. For example: the master will return an internal\n          IP CIDR only, if the client reaches the server using an internal IP. Server\n          looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr\n          (in that order) to get the client IP.'\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR'\n        type: array\n      versions:\n        description: versions are the versions supported in this group.\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery'\n        type: array\n    required:\n    - name\n    - versions\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: APIGroup\n      version: v1\n  io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList:\n    description: APIGroupList is a list of APIGroup, to allow clients to discover\n      the API at /apis.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      groups:\n        description: groups is a list of APIGroup.\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n    required:\n    - groups\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: APIGroupList\n      version: v1\n  io.k8s.apimachinery.pkg.apis.meta.v1.APIResource:\n    description: APIResource specifies the name of a resource and whether it is namespaced.\n    properties:\n      categories:\n        description: categories is a list of the grouped resources this resource belongs\n          to (e.g. 'all')\n        items:\n          type: string\n        type: array\n      group:\n        description: 'group is the preferred group of the resource.  Empty implies\n          the group of the containing resource list. For subresources, this may have\n          a different value, for example: Scale\".'\n        type: string\n      kind:\n        description: kind is the kind for the resource (e.g. 'Foo' is the kind for\n          a resource 'foo')\n        type: string\n      name:\n        description: name is the plural name of the resource.\n        type: string\n      namespaced:\n        description: namespaced indicates if a resource is namespaced or not.\n        type: boolean\n      shortNames:\n        description: shortNames is a list of suggested short names of the resource.\n        items:\n          type: string\n        type: array\n      singularName:\n        description: singularName is the singular name of the resource.  This allows\n          clients to handle plural and singular opaquely. The singularName is more\n          correct for reporting status on a single item and both singular and plural\n          are allowed from the kubectl CLI interface.\n        type: string\n      verbs:\n        description: verbs is a list of supported kube verbs (this includes get, list,\n          watch, create, update, patch, delete, deletecollection, and proxy)\n        items:\n          type: string\n        type: array\n      version:\n        description: 'version is the preferred version of the resource.  Empty implies\n          the version of the containing resource list For subresources, this may have\n          a different value, for example: v1 (while inside a v1beta1 version of the\n          core resource''s group)\".'\n        type: string\n    required:\n    - name\n    - singularName\n    - namespaced\n    - kind\n    - verbs\n  io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList:\n    description: APIResourceList is a list of APIResource, it is used to expose the\n      name of the resources supported in a specific group and version, and if the\n      resource is namespaced.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      groupVersion:\n        description: groupVersion is the group and version this APIResourceList is\n          for.\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      resources:\n        description: resources contains the name of the resources and if they are\n          namespaced.\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource'\n        type: array\n    required:\n    - groupVersion\n    - resources\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: APIResourceList\n      version: v1\n  io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions:\n    description: APIVersions lists the versions that are available, to allow clients\n      to discover the API at /api, which is the root path of the legacy v1 API.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      serverAddressByClientCIDRs:\n        description: 'a map of client CIDR to server address that is serving this\n          group. This is to help clients reach servers in the most network-efficient\n          way possible. Clients can use the appropriate server address as per the\n          CIDR that they match. In case of multiple matches, clients should use the\n          longest matching CIDR. The server returns only those CIDRs that it thinks\n          that the client can match. For example: the master will return an internal\n          IP CIDR only, if the client reaches the server using an internal IP. Server\n          looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr\n          (in that order) to get the client IP.'\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR'\n        type: array\n      versions:\n        description: versions are the api versions that are available.\n        items:\n          type: string\n        type: array\n    required:\n    - versions\n    - serverAddressByClientCIDRs\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: APIVersions\n      version: v1\n  io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions:\n    description: DeleteOptions may be provided when deleting an API object.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      gracePeriodSeconds:\n        description: The duration in seconds before the object should be deleted.\n          Value must be non-negative integer. The value zero indicates delete immediately.\n          If this value is nil, the default grace period for the specified type will\n          be used. Defaults to a per object value if not specified. zero means delete\n          immediately.\n        format: int64\n        type: integer\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      orphanDependents:\n        description: 'Deprecated: please use the PropagationPolicy, this field will\n          be deprecated in 1.7. Should the dependent objects be orphaned. If true/false,\n          the \"orphan\" finalizer will be added to/removed from the object''s finalizers\n          list. Either this field or PropagationPolicy may be set, but not both.'\n        type: boolean\n      preconditions:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions'\n        description: Must be fulfilled before a deletion is carried out. If not possible,\n          a 409 Conflict status will be returned.\n      propagationPolicy:\n        description: 'Whether and how garbage collection will be performed. Either\n          this field or OrphanDependents may be set, but not both. The default policy\n          is decided by the existing finalizer set in the metadata.finalizers and\n          the resource-specific default policy. Acceptable values are: ''Orphan''\n          - orphan the dependents; ''Background'' - allow the garbage collector to\n          delete the dependents in the background; ''Foreground'' - a cascading policy\n          that deletes all dependents in the foreground.'\n        type: string\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: DeleteOptions\n      version: v1\n    - group: admission.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: admissionregistration.k8s.io\n      kind: DeleteOptions\n      version: v1alpha1\n    - group: admissionregistration.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: apiextensions.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: apiregistration.k8s.io\n      kind: DeleteOptions\n      version: v1\n    - group: apiregistration.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: apps\n      kind: DeleteOptions\n      version: v1\n    - group: apps\n      kind: DeleteOptions\n      version: v1beta1\n    - group: apps\n      kind: DeleteOptions\n      version: v1beta2\n    - group: authentication.k8s.io\n      kind: DeleteOptions\n      version: v1\n    - group: authentication.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: authorization.k8s.io\n      kind: DeleteOptions\n      version: v1\n    - group: authorization.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: autoscaling\n      kind: DeleteOptions\n      version: v1\n    - group: autoscaling\n      kind: DeleteOptions\n      version: v2beta1\n    - group: batch\n      kind: DeleteOptions\n      version: v1\n    - group: batch\n      kind: DeleteOptions\n      version: v1beta1\n    - group: batch\n      kind: DeleteOptions\n      version: v2alpha1\n    - group: certificates.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: events.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: extensions\n      kind: DeleteOptions\n      version: v1beta1\n    - group: imagepolicy.k8s.io\n      kind: DeleteOptions\n      version: v1alpha1\n    - group: networking.k8s.io\n      kind: DeleteOptions\n      version: v1\n    - group: policy\n      kind: DeleteOptions\n      version: v1beta1\n    - group: rbac.authorization.k8s.io\n      kind: DeleteOptions\n      version: v1\n    - group: rbac.authorization.k8s.io\n      kind: DeleteOptions\n      version: v1alpha1\n    - group: rbac.authorization.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: scheduling.k8s.io\n      kind: DeleteOptions\n      version: v1alpha1\n    - group: scheduling.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n    - group: settings.k8s.io\n      kind: DeleteOptions\n      version: v1alpha1\n    - group: storage.k8s.io\n      kind: DeleteOptions\n      version: v1\n    - group: storage.k8s.io\n      kind: DeleteOptions\n      version: v1alpha1\n    - group: storage.k8s.io\n      kind: DeleteOptions\n      version: v1beta1\n  io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery:\n    description: GroupVersion contains the \"group/version\" and \"version\" string of\n      a version. It is made a struct to keep extensibility.\n    properties:\n      groupVersion:\n        description: groupVersion specifies the API group and version in the form\n          \"group/version\"\n        type: string\n      version:\n        description: version specifies the version in the form of \"version\". This\n          is to save the clients the trouble of splitting the GroupVersion.\n        type: string\n    required:\n    - groupVersion\n    - version\n  io.k8s.apimachinery.pkg.apis.meta.v1.Initializer:\n    description: Initializer is information about an initializer that has not yet\n      completed.\n    properties:\n      name:\n        description: name of the process that is responsible for initializing this\n          object.\n        type: string\n    required:\n    - name\n  io.k8s.apimachinery.pkg.apis.meta.v1.Initializers:\n    description: Initializers tracks the progress of initialization.\n    properties:\n      pending:\n        description: Pending is a list of initializers that must execute in order\n          before this object is visible. When the last pending initializer is removed,\n          and no failing result is set, the initializers struct will be set to nil\n          and the object is considered as initialized and visible to all clients.\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Initializer'\n        type: array\n        x-kubernetes-patch-merge-key: name\n        x-kubernetes-patch-strategy: merge\n      result:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status'\n        description: If result is set with the Failure field, the object will be persisted\n          to storage and then deleted, ensuring that other clients can observe the\n          deletion.\n    required:\n    - pending\n  io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector:\n    description: A label selector is a label query over a set of resources. The result\n      of matchLabels and matchExpressions are ANDed. An empty label selector matches\n      all objects. A null label selector matches no objects.\n    properties:\n      matchExpressions:\n        description: matchExpressions is a list of label selector requirements. The\n          requirements are ANDed.\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement'\n        type: array\n      matchLabels:\n        additionalProperties:\n          type: string\n        description: matchLabels is a map of {key,value} pairs. A single {key,value}\n          in the matchLabels map is equivalent to an element of matchExpressions,\n          whose key field is \"key\", the operator is \"In\", and the values array contains\n          only \"value\". The requirements are ANDed.\n        type: object\n  io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement:\n    description: A label selector requirement is a selector that contains values,\n      a key, and an operator that relates the key and values.\n    properties:\n      key:\n        description: key is the label key that the selector applies to.\n        type: string\n        x-kubernetes-patch-merge-key: key\n        x-kubernetes-patch-strategy: merge\n      operator:\n        description: operator represents a key's relationship to a set of values.\n          Valid operators are In, NotIn, Exists and DoesNotExist.\n        type: string\n      values:\n        description: values is an array of string values. If the operator is In or\n          NotIn, the values array must be non-empty. If the operator is Exists or\n          DoesNotExist, the values array must be empty. This array is replaced during\n          a strategic merge patch.\n        items:\n          type: string\n        type: array\n    required:\n    - key\n    - operator\n  io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta:\n    description: ListMeta describes metadata that synthetic resources must have, including\n      lists and various status objects. A resource may have only one of {ObjectMeta,\n      ListMeta}.\n    properties:\n      continue:\n        description: continue may be set if the user set a limit on the number of\n          items returned, and indicates that the server has more data available. The\n          value is opaque and may be used to issue another request to the endpoint\n          that served this list to retrieve the next set of available objects. Continuing\n          a list may not be possible if the server configuration has changed or more\n          than a few minutes have passed. The resourceVersion field returned when\n          using this continue value will be identical to the value in the first response.\n        type: string\n      resourceVersion:\n        description: 'String that identifies the server''s internal version of this\n          object that can be used by clients to determine when objects have changed.\n          Value must be treated as opaque by clients and passed unmodified back to\n          the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'\n        type: string\n      selfLink:\n        description: selfLink is a URL representing this object. Populated by the\n          system. Read-only.\n        type: string\n  io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime:\n    description: MicroTime is version of Time with microsecond level precision.\n    format: date-time\n    type: string\n  io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta:\n    description: ObjectMeta is metadata that all persisted resources must have, which\n      includes all objects users must create.\n    properties:\n      annotations:\n        additionalProperties:\n          type: string\n        description: 'Annotations is an unstructured key value map stored with a resource\n          that may be set by external tools to store and retrieve arbitrary metadata.\n          They are not queryable and should be preserved when modifying objects. More\n          info: http://kubernetes.io/docs/user-guide/annotations'\n        type: object\n      clusterName:\n        description: The name of the cluster which the object belongs to. This is\n          used to distinguish resources with same name and namespace in different\n          clusters. This field is not set anywhere right now and apiserver is going\n          to ignore it if set in create or update request.\n        type: string\n      creationTimestamp:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: 'CreationTimestamp is a timestamp representing the server time\n          when this object was created. It is not guaranteed to be set in happens-before\n          order across separate operations. Clients may not set this value. It is\n          represented in RFC3339 form and is in UTC.\n\n\n          Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      deletionGracePeriodSeconds:\n        description: Number of seconds allowed for this object to gracefully terminate\n          before it will be removed from the system. Only set when deletionTimestamp\n          is also set. May only be shortened. Read-only.\n        format: int64\n        type: integer\n      deletionTimestamp:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: 'DeletionTimestamp is RFC 3339 date and time at which this resource\n          will be deleted. This field is set by the server when a graceful deletion\n          is requested by the user, and is not directly settable by a client. The\n          resource is expected to be deleted (no longer visible from resource lists,\n          and not reachable by name) after the time in this field, once the finalizers\n          list is empty. As long as the finalizers list contains items, deletion is\n          blocked. Once the deletionTimestamp is set, this value may not be unset\n          or be set further into the future, although it may be shortened or the resource\n          may be deleted prior to this time. For example, a user may request that\n          a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful\n          termination signal to the containers in the pod. After that 30 seconds,\n          the Kubelet will send a hard termination signal (SIGKILL) to the container\n          and after cleanup, remove the pod from the API. In the presence of network\n          partitions, this object may still exist after this timestamp, until an administrator\n          or automated process can determine the resource is fully terminated. If\n          not set, graceful deletion of the object has not been requested.\n\n\n          Populated by the system when a graceful deletion is requested. Read-only.\n          More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'\n      finalizers:\n        description: Must be empty before the object is deleted from the registry.\n          Each entry is an identifier for the responsible component that will remove\n          the entry from the list. If the deletionTimestamp of the object is non-nil,\n          entries in this list can only be removed.\n        items:\n          type: string\n        type: array\n        x-kubernetes-patch-strategy: merge\n      generateName:\n        description: 'GenerateName is an optional prefix, used by the server, to generate\n          a unique name ONLY IF the Name field has not been provided. If this field\n          is used, the name returned to the client will be different than the name\n          passed. This value will also be combined with a unique suffix. The provided\n          value has the same validation rules as the Name field, and may be truncated\n          by the length of the suffix required to make the value unique on the server.\n\n\n          If this field is specified and the generated name exists, the server will\n          NOT return a 409 - instead, it will either return 201 Created or 500 with\n          Reason ServerTimeout indicating a unique name could not be found in the\n          time allotted, and the client should retry (optionally after the time indicated\n          in the Retry-After header).\n\n\n          Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency'\n        type: string\n      generation:\n        description: A sequence number representing a specific generation of the desired\n          state. Populated by the system. Read-only.\n        format: int64\n        type: integer\n      initializers:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Initializers'\n        description: 'An initializer is a controller which enforces some system invariant\n          at object creation time. This field is a list of initializers that have\n          not yet acted on this object. If nil or empty, this object has been completely\n          initialized. Otherwise, the object is considered uninitialized and is hidden\n          (in list/watch and get calls) from clients that haven''t explicitly asked\n          to observe uninitialized objects.\n\n\n          When an object is created, the system will populate this list with the current\n          set of initializers. Only privileged users may set or modify this list.\n          Once it is empty, it may not be modified further by any user.'\n      labels:\n        additionalProperties:\n          type: string\n        description: 'Map of string keys and values that can be used to organize and\n          categorize (scope and select) objects. May match selectors of replication\n          controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'\n        type: object\n      name:\n        description: 'Name must be unique within a namespace. Is required when creating\n          resources, although some resources may allow a client to request the generation\n          of an appropriate name automatically. Name is primarily intended for creation\n          idempotence and configuration definition. Cannot be updated. More info:\n          http://kubernetes.io/docs/user-guide/identifiers#names'\n        type: string\n      namespace:\n        description: 'Namespace defines the space within each name must be unique.\n          An empty namespace is equivalent to the \"default\" namespace, but \"default\"\n          is the canonical representation. Not all objects are required to be scoped\n          to a namespace - the value of this field for those objects will be empty.\n\n\n          Must be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces'\n        type: string\n      ownerReferences:\n        description: List of objects depended by this object. If ALL objects in the\n          list have been deleted, this object will be garbage collected. If this object\n          is managed by a controller, then an entry in this list will point to this\n          controller, with the controller field set to true. There cannot be more\n          than one managing controller.\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference'\n        type: array\n        x-kubernetes-patch-merge-key: uid\n        x-kubernetes-patch-strategy: merge\n      resourceVersion:\n        description: 'An opaque value that represents the internal version of this\n          object that can be used by clients to determine when objects have changed.\n          May be used for optimistic concurrency, change detection, and the watch\n          operation on a resource or set of resources. Clients must treat these values\n          as opaque and passed unmodified back to the server. They may only be valid\n          for a particular resource or set of resources.\n\n\n          Populated by the system. Read-only. Value must be treated as opaque by clients\n          and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'\n        type: string\n      selfLink:\n        description: SelfLink is a URL representing this object. Populated by the\n          system. Read-only.\n        type: string\n      uid:\n        description: 'UID is the unique in time and space value for this object. It\n          is typically generated by the server on successful creation of a resource\n          and is not allowed to change on PUT operations.\n\n\n          Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'\n        type: string\n  io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference:\n    description: OwnerReference contains enough information to let you identify an\n      owning object. Currently, an owning object must be in the same namespace, so\n      there is no namespace field.\n    properties:\n      apiVersion:\n        description: API version of the referent.\n        type: string\n      blockOwnerDeletion:\n        description: If true, AND if the owner has the \"foregroundDeletion\" finalizer,\n          then the owner cannot be deleted from the key-value store until this reference\n          is removed. Defaults to false. To set this field, a user needs \"delete\"\n          permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.\n        type: boolean\n      controller:\n        description: If true, this reference points to the managing controller.\n        type: boolean\n      kind:\n        description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      name:\n        description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'\n        type: string\n      uid:\n        description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'\n        type: string\n    required:\n    - apiVersion\n    - kind\n    - name\n    - uid\n  io.k8s.apimachinery.pkg.apis.meta.v1.Patch:\n    description: Patch is provided to give a concrete name and type to the Kubernetes\n      PATCH request body.\n  io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions:\n    description: Preconditions must be fulfilled before an operation (update, delete,\n      etc.) is carried out.\n    properties:\n      uid:\n        description: Specifies the target UID.\n        type: string\n  io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR:\n    description: ServerAddressByClientCIDR helps the client to determine the server\n      address that they should use, depending on the clientCIDR that they match.\n    properties:\n      clientCIDR:\n        description: The CIDR with which clients can match their IP to figure out\n          the server address that they should use.\n        type: string\n      serverAddress:\n        description: Address of this server, suitable for a client that matches the\n          above CIDR. This can be a hostname, hostname:port, IP or IP:port.\n        type: string\n    required:\n    - clientCIDR\n    - serverAddress\n  io.k8s.apimachinery.pkg.apis.meta.v1.Status:\n    description: Status is a return value for calls that don't return other objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      code:\n        description: Suggested HTTP return code for this status, 0 if not set.\n        format: int32\n        type: integer\n      details:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails'\n        description: Extended data associated with the reason.  Each reason may define\n          its own extended details. This field is optional and the data returned is\n          not guaranteed to conform to any schema except that defined by the reason\n          type.\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      message:\n        description: A human-readable description of the status of this operation.\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n      reason:\n        description: A machine-readable description of why this operation is in the\n          \"Failure\" status. If this value is empty there is no information available.\n          A Reason clarifies an HTTP status code but does not override it.\n        type: string\n      status:\n        description: 'Status of the operation. One of: \"Success\" or \"Failure\". More\n          info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'\n        type: string\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: Status\n      version: v1\n  io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause:\n    description: StatusCause provides more information about an api.Status failure,\n      including cases when multiple errors are encountered.\n    properties:\n      field:\n        description: \"The field of the resource that has caused this error, as named\\\n          \\ by its JSON serialization. May include dot and postfix notation for nested\\\n          \\ attributes. Arrays are zero-indexed.  Fields may appear more than once\\\n          \\ in an array of causes due to fields having multiple errors. Optional.\\n\\\n          \\nExamples:\\n  \\\"name\\\" - the field \\\"name\\\" on the current resource\\n \\\n          \\ \\\"items[0].name\\\" - the field \\\"name\\\" on the first array entry in \\\"\\\n          items\\\"\"\n        type: string\n      message:\n        description: A human-readable description of the cause of the error.  This\n          field may be presented as-is to a reader.\n        type: string\n      reason:\n        description: A machine-readable description of the cause of the error. If\n          this value is empty there is no information available.\n        type: string\n  io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails:\n    description: StatusDetails is a set of additional properties that MAY be set by\n      the server to provide additional information about a response. The Reason field\n      of a Status object defines what attributes will be set. Clients must ignore\n      fields that do not match the defined type of each attribute, and should assume\n      that any attribute may be empty, invalid, or under defined.\n    properties:\n      causes:\n        description: The Causes array includes more details associated with the StatusReason\n          failure. Not all StatusReasons may provide detailed causes.\n        items:\n          $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause'\n        type: array\n      group:\n        description: The group attribute of the resource associated with the status\n          StatusReason.\n        type: string\n      kind:\n        description: 'The kind attribute of the resource associated with the status\n          StatusReason. On some operations may differ from the requested resource\n          Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      name:\n        description: The name attribute of the resource associated with the status\n          StatusReason (when there is a single name which can be described).\n        type: string\n      retryAfterSeconds:\n        description: If specified, the time in seconds before the operation should\n          be retried. Some errors may indicate the client must take an alternate action\n          - for those errors this field may indicate how long to wait before taking\n          the alternate action.\n        format: int32\n        type: integer\n      uid:\n        description: 'UID of the resource. (when there is a single resource which\n          can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids'\n        type: string\n  io.k8s.apimachinery.pkg.apis.meta.v1.Time:\n    description: Time is a wrapper around time.Time which supports correct marshaling\n      to YAML and JSON.  Wrappers are provided for many of the factory methods that\n      the time package offers.\n    format: date-time\n    type: string\n  io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent:\n    description: Event represents a single event to a watched resource.\n    properties:\n      object:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension'\n        description: \"Object is:\\n * If Type is Added or Modified: the new state of\\\n          \\ the object.\\n * If Type is Deleted: the state of the object immediately\\\n          \\ before deletion.\\n * If Type is Error: *Status is recommended; other types\\\n          \\ may make sense\\n   depending on context.\"\n      type:\n        type: string\n    required:\n    - type\n    - object\n    x-kubernetes-group-version-kind:\n    - group: ''\n      kind: WatchEvent\n      version: v1\n    - group: admission.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: admissionregistration.k8s.io\n      kind: WatchEvent\n      version: v1alpha1\n    - group: admissionregistration.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: apiextensions.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: apiregistration.k8s.io\n      kind: WatchEvent\n      version: v1\n    - group: apiregistration.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: apps\n      kind: WatchEvent\n      version: v1\n    - group: apps\n      kind: WatchEvent\n      version: v1beta1\n    - group: apps\n      kind: WatchEvent\n      version: v1beta2\n    - group: authentication.k8s.io\n      kind: WatchEvent\n      version: v1\n    - group: authentication.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: authorization.k8s.io\n      kind: WatchEvent\n      version: v1\n    - group: authorization.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: autoscaling\n      kind: WatchEvent\n      version: v1\n    - group: autoscaling\n      kind: WatchEvent\n      version: v2beta1\n    - group: batch\n      kind: WatchEvent\n      version: v1\n    - group: batch\n      kind: WatchEvent\n      version: v1beta1\n    - group: batch\n      kind: WatchEvent\n      version: v2alpha1\n    - group: certificates.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: events.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: extensions\n      kind: WatchEvent\n      version: v1beta1\n    - group: imagepolicy.k8s.io\n      kind: WatchEvent\n      version: v1alpha1\n    - group: networking.k8s.io\n      kind: WatchEvent\n      version: v1\n    - group: policy\n      kind: WatchEvent\n      version: v1beta1\n    - group: rbac.authorization.k8s.io\n      kind: WatchEvent\n      version: v1\n    - group: rbac.authorization.k8s.io\n      kind: WatchEvent\n      version: v1alpha1\n    - group: rbac.authorization.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: scheduling.k8s.io\n      kind: WatchEvent\n      version: v1alpha1\n    - group: scheduling.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n    - group: settings.k8s.io\n      kind: WatchEvent\n      version: v1alpha1\n    - group: storage.k8s.io\n      kind: WatchEvent\n      version: v1\n    - group: storage.k8s.io\n      kind: WatchEvent\n      version: v1alpha1\n    - group: storage.k8s.io\n      kind: WatchEvent\n      version: v1beta1\n  io.k8s.apimachinery.pkg.runtime.RawExtension:\n    description: \"RawExtension is used to hold extensions in external versions.\\n\\n\\\n      To use this, make a field which has RawExtension as its type in your external,\\\n      \\ versioned struct, and Object in your internal struct. You also need to register\\\n      \\ your various plugin types.\\n\\n// Internal package: type MyAPIObject struct\\\n      \\ {\\n\\truntime.TypeMeta `json:\\\",inline\\\"`\\n\\tMyPlugin runtime.Object `json:\\\"\\\n      myPlugin\\\"`\\n} type PluginA struct {\\n\\tAOption string `json:\\\"aOption\\\"`\\n\\\n      }\\n\\n// External package: type MyAPIObject struct {\\n\\truntime.TypeMeta `json:\\\"\\\n      ,inline\\\"`\\n\\tMyPlugin runtime.RawExtension `json:\\\"myPlugin\\\"`\\n} type PluginA\\\n      \\ struct {\\n\\tAOption string `json:\\\"aOption\\\"`\\n}\\n\\n// On the wire, the JSON\\\n      \\ will look something like this: {\\n\\t\\\"kind\\\":\\\"MyAPIObject\\\",\\n\\t\\\"apiVersion\\\"\\\n      :\\\"v1\\\",\\n\\t\\\"myPlugin\\\": {\\n\\t\\t\\\"kind\\\":\\\"PluginA\\\",\\n\\t\\t\\\"aOption\\\":\\\"foo\\\"\\\n      ,\\n\\t},\\n}\\n\\nSo what happens? Decode first uses json or yaml to unmarshal the\\\n      \\ serialized data into your external MyAPIObject. That causes the raw JSON to\\\n      \\ be stored, but not unpacked. The next step is to copy (using pkg/conversion)\\\n      \\ into the internal struct. The runtime package's DefaultScheme has conversion\\\n      \\ functions installed which will unpack the JSON stored in RawExtension, turning\\\n      \\ it into the correct object type, and storing it in the Object. (TODO: In the\\\n      \\ case where the object is of an unknown type, a runtime.Unknown object will\\\n      \\ be created and stored.)\"\n    properties:\n      Raw:\n        description: Raw is the underlying serialization of this object.\n        format: byte\n        type: string\n    required:\n    - Raw\n  io.k8s.apimachinery.pkg.util.intstr.IntOrString:\n    description: IntOrString is a type that can hold an int32 or a string.  When used\n      in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner\n      type.  This allows you to have, for example, a JSON field that can accept a\n      name or number.\n    format: int-or-string\n    type: string\n  io.k8s.apimachinery.pkg.version.Info:\n    description: Info contains versioning information. how we'll want to distribute\n      that information.\n    properties:\n      buildDate:\n        type: string\n      compiler:\n        type: string\n      gitCommit:\n        type: string\n      gitTreeState:\n        type: string\n      gitVersion:\n        type: string\n      goVersion:\n        type: string\n      major:\n        type: string\n      minor:\n        type: string\n      platform:\n        type: string\n    required:\n    - major\n    - minor\n    - gitVersion\n    - gitCommit\n    - gitTreeState\n    - buildDate\n    - goVersion\n    - compiler\n    - platform\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService:\n    description: APIService represents a server for a particular GroupVersion. Name\n      must be \"version.group\".\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec'\n        description: Spec contains information for locating and communicating with\n          a server\n      status:\n        $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceStatus'\n        description: Status contains derived information about an API server\n    x-kubernetes-group-version-kind:\n    - group: apiregistration.k8s.io\n      kind: APIService\n      version: v1\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceCondition:\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: Human-readable message indicating details about last transition.\n        type: string\n      reason:\n        description: Unique, one-word, CamelCase reason for the condition's last transition.\n        type: string\n      status:\n        description: Status is the status of the condition. Can be True, False, Unknown.\n        type: string\n      type:\n        description: Type is the type of the condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList:\n    description: APIServiceList is a list of APIService objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        items:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apiregistration.k8s.io\n      kind: APIServiceList\n      version: v1\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec:\n    description: APIServiceSpec contains information for locating and communicating\n      with a server. Only https is supported, though you are able to disable certificate\n      verification.\n    properties:\n      caBundle:\n        description: CABundle is a PEM encoded CA bundle which will be used to validate\n          an API server's serving certificate.\n        format: byte\n        type: string\n      group:\n        description: Group is the API group name this server hosts\n        type: string\n      groupPriorityMinimum:\n        description: 'GroupPriorityMininum is the priority this group should have\n          at least. Higher priority means that the group is preferred by clients over\n          lower priority ones. Note that other versions of this group might specify\n          even higher GroupPriorityMininum values such that the whole group gets a\n          higher priority. The primary sort is based on GroupPriorityMinimum, ordered\n          highest number to lowest (20 before 10). The secondary sort is based on\n          the alphabetical comparison of the name of the object.  (v1.bar before v1.foo)\n          We''d recommend something like: *.k8s.io (except extensions) at 18000 and\n          PaaSes (OpenShift, Deis) are recommended to be in the 2000s'\n        format: int32\n        type: integer\n      insecureSkipTLSVerify:\n        description: InsecureSkipTLSVerify disables TLS certificate verification when\n          communicating with this server. This is strongly discouraged.  You should\n          use the CABundle instead.\n        type: boolean\n      service:\n        $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.ServiceReference'\n        description: Service is a reference to the service for this API server.  It\n          must communicate on port 443 If the Service is nil, that means the handling\n          for the API groupversion is handled locally on this server. The call will\n          simply delegate to the normal handler chain to be fulfilled.\n      version:\n        description: Version is the API version this server hosts.  For example, \"v1\"\n        type: string\n      versionPriority:\n        description: 'VersionPriority controls the ordering of this API version inside\n          of its group.  Must be greater than zero. The primary sort is based on VersionPriority,\n          ordered highest to lowest (20 before 10). Since it''s inside of a group,\n          the number can be small, probably in the 10s. In case of equal version priorities,\n          the version string will be used to compute the order inside a group. If\n          the version string is \"kube-like\", it will sort above non \"kube-like\" version\n          strings, which are ordered lexicographically. \"Kube-like\" versions start\n          with a \"v\", then are followed by a number (the major version), then optionally\n          the string \"alpha\" or \"beta\" and another number (the minor version). These\n          are sorted first by GA > beta > alpha (where GA is a version with no suffix\n          such as beta or alpha), and then by comparing major version, then minor\n          version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3,\n          v3beta1, v12alpha1, v11alpha2, foo1, foo10.'\n        format: int32\n        type: integer\n    required:\n    - service\n    - groupPriorityMinimum\n    - versionPriority\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceStatus:\n    description: APIServiceStatus contains derived information about an API server\n    properties:\n      conditions:\n        description: Current service state of apiService.\n        items:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.ServiceReference:\n    description: ServiceReference holds a reference to Service.legacy.k8s.io\n    properties:\n      name:\n        description: Name is the name of the service\n        type: string\n      namespace:\n        description: Namespace is the namespace of the service\n        type: string\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService:\n    description: APIService represents a server for a particular GroupVersion. Name\n      must be \"version.group\".\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n      spec:\n        $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIServiceSpec'\n        description: Spec contains information for locating and communicating with\n          a server\n      status:\n        $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIServiceStatus'\n        description: Status contains derived information about an API server\n    x-kubernetes-group-version-kind:\n    - group: apiregistration.k8s.io\n      kind: APIService\n      version: v1beta1\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIServiceCondition:\n    properties:\n      lastTransitionTime:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time'\n        description: Last time the condition transitioned from one status to another.\n      message:\n        description: Human-readable message indicating details about last transition.\n        type: string\n      reason:\n        description: Unique, one-word, CamelCase reason for the condition's last transition.\n        type: string\n      status:\n        description: Status is the status of the condition. Can be True, False, Unknown.\n        type: string\n      type:\n        description: Type is the type of the condition.\n        type: string\n    required:\n    - type\n    - status\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIServiceList:\n    description: APIServiceList is a list of APIService objects.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        items:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIService'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: apiregistration.k8s.io\n      kind: APIServiceList\n      version: v1beta1\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIServiceSpec:\n    description: APIServiceSpec contains information for locating and communicating\n      with a server. Only https is supported, though you are able to disable certificate\n      verification.\n    properties:\n      caBundle:\n        description: CABundle is a PEM encoded CA bundle which will be used to validate\n          an API server's serving certificate.\n        format: byte\n        type: string\n      group:\n        description: Group is the API group name this server hosts\n        type: string\n      groupPriorityMinimum:\n        description: 'GroupPriorityMininum is the priority this group should have\n          at least. Higher priority means that the group is preferred by clients over\n          lower priority ones. Note that other versions of this group might specify\n          even higher GroupPriorityMininum values such that the whole group gets a\n          higher priority. The primary sort is based on GroupPriorityMinimum, ordered\n          highest number to lowest (20 before 10). The secondary sort is based on\n          the alphabetical comparison of the name of the object.  (v1.bar before v1.foo)\n          We''d recommend something like: *.k8s.io (except extensions) at 18000 and\n          PaaSes (OpenShift, Deis) are recommended to be in the 2000s'\n        format: int32\n        type: integer\n      insecureSkipTLSVerify:\n        description: InsecureSkipTLSVerify disables TLS certificate verification when\n          communicating with this server. This is strongly discouraged.  You should\n          use the CABundle instead.\n        type: boolean\n      service:\n        $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.ServiceReference'\n        description: Service is a reference to the service for this API server.  It\n          must communicate on port 443 If the Service is nil, that means the handling\n          for the API groupversion is handled locally on this server. The call will\n          simply delegate to the normal handler chain to be fulfilled.\n      version:\n        description: Version is the API version this server hosts.  For example, \"v1\"\n        type: string\n      versionPriority:\n        description: 'VersionPriority controls the ordering of this API version inside\n          of its group.  Must be greater than zero. The primary sort is based on VersionPriority,\n          ordered highest to lowest (20 before 10). Since it''s inside of a group,\n          the number can be small, probably in the 10s. In case of equal version priorities,\n          the version string will be used to compute the order inside a group. If\n          the version string is \"kube-like\", it will sort above non \"kube-like\" version\n          strings, which are ordered lexicographically. \"Kube-like\" versions start\n          with a \"v\", then are followed by a number (the major version), then optionally\n          the string \"alpha\" or \"beta\" and another number (the minor version). These\n          are sorted first by GA > beta > alpha (where GA is a version with no suffix\n          such as beta or alpha), and then by comparing major version, then minor\n          version. An example sorted list of versions: v10, v2, v1, v11beta2, v10beta3,\n          v3beta1, v12alpha1, v11alpha2, foo1, foo10.'\n        format: int32\n        type: integer\n    required:\n    - service\n    - groupPriorityMinimum\n    - versionPriority\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIServiceStatus:\n    description: APIServiceStatus contains derived information about an API server\n    properties:\n      conditions:\n        description: Current service state of apiService.\n        items:\n          $ref: '#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.APIServiceCondition'\n        type: array\n        x-kubernetes-patch-merge-key: type\n        x-kubernetes-patch-strategy: merge\n  io.k8s.kube-aggregator.pkg.apis.apiregistration.v1beta1.ServiceReference:\n    description: ServiceReference holds a reference to Service.legacy.k8s.io\n    properties:\n      name:\n        description: Name is the name of the service\n        type: string\n      namespace:\n        description: Namespace is the namespace of the service\n        type: string\n  io.k8s.kubernetes.pkg.api.v1.AWSElasticBlockStoreVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.Affinity:\n    $ref: '#/definitions/io.k8s.api.core.v1.Affinity'\n    description: Deprecated. Please use io.k8s.api.core.v1.Affinity instead.\n  io.k8s.kubernetes.pkg.api.v1.AttachedVolume:\n    $ref: '#/definitions/io.k8s.api.core.v1.AttachedVolume'\n    description: Deprecated. Please use io.k8s.api.core.v1.AttachedVolume instead.\n  io.k8s.kubernetes.pkg.api.v1.AzureDiskVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.AzureDiskVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.AzureFileVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.AzureFileVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.Binding:\n    $ref: '#/definitions/io.k8s.api.core.v1.Binding'\n    description: Deprecated. Please use io.k8s.api.core.v1.Binding instead.\n  io.k8s.kubernetes.pkg.api.v1.Capabilities:\n    $ref: '#/definitions/io.k8s.api.core.v1.Capabilities'\n    description: Deprecated. Please use io.k8s.api.core.v1.Capabilities instead.\n  io.k8s.kubernetes.pkg.api.v1.CephFSVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.CephFSVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.CephFSVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.CinderVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.CinderVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.CinderVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.ComponentCondition:\n    $ref: '#/definitions/io.k8s.api.core.v1.ComponentCondition'\n    description: Deprecated. Please use io.k8s.api.core.v1.ComponentCondition instead.\n  io.k8s.kubernetes.pkg.api.v1.ComponentStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.ComponentStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.ComponentStatus instead.\n  io.k8s.kubernetes.pkg.api.v1.ComponentStatusList:\n    $ref: '#/definitions/io.k8s.api.core.v1.ComponentStatusList'\n    description: Deprecated. Please use io.k8s.api.core.v1.ComponentStatusList instead.\n  io.k8s.kubernetes.pkg.api.v1.ConfigMap:\n    $ref: '#/definitions/io.k8s.api.core.v1.ConfigMap'\n    description: Deprecated. Please use io.k8s.api.core.v1.ConfigMap instead.\n  io.k8s.kubernetes.pkg.api.v1.ConfigMapEnvSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.ConfigMapEnvSource instead.\n  io.k8s.kubernetes.pkg.api.v1.ConfigMapKeySelector:\n    $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector'\n    description: Deprecated. Please use io.k8s.api.core.v1.ConfigMapKeySelector instead.\n  io.k8s.kubernetes.pkg.api.v1.ConfigMapList:\n    $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapList'\n    description: Deprecated. Please use io.k8s.api.core.v1.ConfigMapList instead.\n  io.k8s.kubernetes.pkg.api.v1.ConfigMapProjection:\n    $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapProjection'\n    description: Deprecated. Please use io.k8s.api.core.v1.ConfigMapProjection instead.\n  io.k8s.kubernetes.pkg.api.v1.ConfigMapVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.ConfigMapVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.Container:\n    $ref: '#/definitions/io.k8s.api.core.v1.Container'\n    description: Deprecated. Please use io.k8s.api.core.v1.Container instead.\n  io.k8s.kubernetes.pkg.api.v1.ContainerImage:\n    $ref: '#/definitions/io.k8s.api.core.v1.ContainerImage'\n    description: Deprecated. Please use io.k8s.api.core.v1.ContainerImage instead.\n  io.k8s.kubernetes.pkg.api.v1.ContainerPort:\n    $ref: '#/definitions/io.k8s.api.core.v1.ContainerPort'\n    description: Deprecated. Please use io.k8s.api.core.v1.ContainerPort instead.\n  io.k8s.kubernetes.pkg.api.v1.ContainerState:\n    $ref: '#/definitions/io.k8s.api.core.v1.ContainerState'\n    description: Deprecated. Please use io.k8s.api.core.v1.ContainerState instead.\n  io.k8s.kubernetes.pkg.api.v1.ContainerStateRunning:\n    $ref: '#/definitions/io.k8s.api.core.v1.ContainerStateRunning'\n    description: Deprecated. Please use io.k8s.api.core.v1.ContainerStateRunning instead.\n  io.k8s.kubernetes.pkg.api.v1.ContainerStateTerminated:\n    $ref: '#/definitions/io.k8s.api.core.v1.ContainerStateTerminated'\n    description: Deprecated. Please use io.k8s.api.core.v1.ContainerStateTerminated\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.ContainerStateWaiting:\n    $ref: '#/definitions/io.k8s.api.core.v1.ContainerStateWaiting'\n    description: Deprecated. Please use io.k8s.api.core.v1.ContainerStateWaiting instead.\n  io.k8s.kubernetes.pkg.api.v1.ContainerStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.ContainerStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.ContainerStatus instead.\n  io.k8s.kubernetes.pkg.api.v1.DaemonEndpoint:\n    $ref: '#/definitions/io.k8s.api.core.v1.DaemonEndpoint'\n    description: Deprecated. Please use io.k8s.api.core.v1.DaemonEndpoint instead.\n  io.k8s.kubernetes.pkg.api.v1.DownwardAPIProjection:\n    $ref: '#/definitions/io.k8s.api.core.v1.DownwardAPIProjection'\n    description: Deprecated. Please use io.k8s.api.core.v1.DownwardAPIProjection instead.\n  io.k8s.kubernetes.pkg.api.v1.DownwardAPIVolumeFile:\n    $ref: '#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile'\n    description: Deprecated. Please use io.k8s.api.core.v1.DownwardAPIVolumeFile instead.\n  io.k8s.kubernetes.pkg.api.v1.DownwardAPIVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.DownwardAPIVolumeSource\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.EmptyDirVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.EmptyDirVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.EndpointAddress:\n    $ref: '#/definitions/io.k8s.api.core.v1.EndpointAddress'\n    description: Deprecated. Please use io.k8s.api.core.v1.EndpointAddress instead.\n  io.k8s.kubernetes.pkg.api.v1.EndpointPort:\n    $ref: '#/definitions/io.k8s.api.core.v1.EndpointPort'\n    description: Deprecated. Please use io.k8s.api.core.v1.EndpointPort instead.\n  io.k8s.kubernetes.pkg.api.v1.EndpointSubset:\n    $ref: '#/definitions/io.k8s.api.core.v1.EndpointSubset'\n    description: Deprecated. Please use io.k8s.api.core.v1.EndpointSubset instead.\n  io.k8s.kubernetes.pkg.api.v1.Endpoints:\n    $ref: '#/definitions/io.k8s.api.core.v1.Endpoints'\n    description: Deprecated. Please use io.k8s.api.core.v1.Endpoints instead.\n  io.k8s.kubernetes.pkg.api.v1.EndpointsList:\n    $ref: '#/definitions/io.k8s.api.core.v1.EndpointsList'\n    description: Deprecated. Please use io.k8s.api.core.v1.EndpointsList instead.\n  io.k8s.kubernetes.pkg.api.v1.EnvFromSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.EnvFromSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.EnvFromSource instead.\n  io.k8s.kubernetes.pkg.api.v1.EnvVar:\n    $ref: '#/definitions/io.k8s.api.core.v1.EnvVar'\n    description: Deprecated. Please use io.k8s.api.core.v1.EnvVar instead.\n  io.k8s.kubernetes.pkg.api.v1.EnvVarSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.EnvVarSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.EnvVarSource instead.\n  io.k8s.kubernetes.pkg.api.v1.Event:\n    $ref: '#/definitions/io.k8s.api.core.v1.Event'\n    description: Deprecated. Please use io.k8s.api.core.v1.Event instead.\n  io.k8s.kubernetes.pkg.api.v1.EventList:\n    $ref: '#/definitions/io.k8s.api.core.v1.EventList'\n    description: Deprecated. Please use io.k8s.api.core.v1.EventList instead.\n  io.k8s.kubernetes.pkg.api.v1.EventSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.EventSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.EventSource instead.\n  io.k8s.kubernetes.pkg.api.v1.ExecAction:\n    $ref: '#/definitions/io.k8s.api.core.v1.ExecAction'\n    description: Deprecated. Please use io.k8s.api.core.v1.ExecAction instead.\n  io.k8s.kubernetes.pkg.api.v1.FCVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.FCVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.FCVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.FlexVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.FlexVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.FlexVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.FlockerVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.FlockerVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.FlockerVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.GCEPersistentDiskVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.GCEPersistentDiskVolumeSource\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.GitRepoVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.GitRepoVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.GlusterfsVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.GlusterfsVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.HTTPGetAction:\n    $ref: '#/definitions/io.k8s.api.core.v1.HTTPGetAction'\n    description: Deprecated. Please use io.k8s.api.core.v1.HTTPGetAction instead.\n  io.k8s.kubernetes.pkg.api.v1.HTTPHeader:\n    $ref: '#/definitions/io.k8s.api.core.v1.HTTPHeader'\n    description: Deprecated. Please use io.k8s.api.core.v1.HTTPHeader instead.\n  io.k8s.kubernetes.pkg.api.v1.Handler:\n    $ref: '#/definitions/io.k8s.api.core.v1.Handler'\n    description: Deprecated. Please use io.k8s.api.core.v1.Handler instead.\n  io.k8s.kubernetes.pkg.api.v1.HostAlias:\n    $ref: '#/definitions/io.k8s.api.core.v1.HostAlias'\n    description: Deprecated. Please use io.k8s.api.core.v1.HostAlias instead.\n  io.k8s.kubernetes.pkg.api.v1.HostPathVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.HostPathVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.HostPathVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.ISCSIVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.ISCSIVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.KeyToPath:\n    $ref: '#/definitions/io.k8s.api.core.v1.KeyToPath'\n    description: Deprecated. Please use io.k8s.api.core.v1.KeyToPath instead.\n  io.k8s.kubernetes.pkg.api.v1.Lifecycle:\n    $ref: '#/definitions/io.k8s.api.core.v1.Lifecycle'\n    description: Deprecated. Please use io.k8s.api.core.v1.Lifecycle instead.\n  io.k8s.kubernetes.pkg.api.v1.LimitRange:\n    $ref: '#/definitions/io.k8s.api.core.v1.LimitRange'\n    description: Deprecated. Please use io.k8s.api.core.v1.LimitRange instead.\n  io.k8s.kubernetes.pkg.api.v1.LimitRangeItem:\n    $ref: '#/definitions/io.k8s.api.core.v1.LimitRangeItem'\n    description: Deprecated. Please use io.k8s.api.core.v1.LimitRangeItem instead.\n  io.k8s.kubernetes.pkg.api.v1.LimitRangeList:\n    $ref: '#/definitions/io.k8s.api.core.v1.LimitRangeList'\n    description: Deprecated. Please use io.k8s.api.core.v1.LimitRangeList instead.\n  io.k8s.kubernetes.pkg.api.v1.LimitRangeSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.LimitRangeSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.LimitRangeSpec instead.\n  io.k8s.kubernetes.pkg.api.v1.LoadBalancerIngress:\n    $ref: '#/definitions/io.k8s.api.core.v1.LoadBalancerIngress'\n    description: Deprecated. Please use io.k8s.api.core.v1.LoadBalancerIngress instead.\n  io.k8s.kubernetes.pkg.api.v1.LoadBalancerStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.LoadBalancerStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.LoadBalancerStatus instead.\n  io.k8s.kubernetes.pkg.api.v1.LocalObjectReference:\n    $ref: '#/definitions/io.k8s.api.core.v1.LocalObjectReference'\n    description: Deprecated. Please use io.k8s.api.core.v1.LocalObjectReference instead.\n  io.k8s.kubernetes.pkg.api.v1.LocalVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.LocalVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.LocalVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.NFSVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.NFSVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.NFSVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.Namespace:\n    $ref: '#/definitions/io.k8s.api.core.v1.Namespace'\n    description: Deprecated. Please use io.k8s.api.core.v1.Namespace instead.\n  io.k8s.kubernetes.pkg.api.v1.NamespaceList:\n    $ref: '#/definitions/io.k8s.api.core.v1.NamespaceList'\n    description: Deprecated. Please use io.k8s.api.core.v1.NamespaceList instead.\n  io.k8s.kubernetes.pkg.api.v1.NamespaceSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.NamespaceSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.NamespaceSpec instead.\n  io.k8s.kubernetes.pkg.api.v1.NamespaceStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.NamespaceStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.NamespaceStatus instead.\n  io.k8s.kubernetes.pkg.api.v1.Node:\n    $ref: '#/definitions/io.k8s.api.core.v1.Node'\n    description: Deprecated. Please use io.k8s.api.core.v1.Node instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeAddress:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeAddress'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeAddress instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeAffinity:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeAffinity'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeAffinity instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeCondition:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeCondition'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeCondition instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeDaemonEndpoints:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeDaemonEndpoints instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeList:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeList'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeList instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeSelector:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeSelector'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeSelector instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeSelectorRequirement:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeSelectorRequirement\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeSelectorTerm:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeSelectorTerm'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeSelectorTerm instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeSpec instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeStatus instead.\n  io.k8s.kubernetes.pkg.api.v1.NodeSystemInfo:\n    $ref: '#/definitions/io.k8s.api.core.v1.NodeSystemInfo'\n    description: Deprecated. Please use io.k8s.api.core.v1.NodeSystemInfo instead.\n  io.k8s.kubernetes.pkg.api.v1.ObjectFieldSelector:\n    $ref: '#/definitions/io.k8s.api.core.v1.ObjectFieldSelector'\n    description: Deprecated. Please use io.k8s.api.core.v1.ObjectFieldSelector instead.\n  io.k8s.kubernetes.pkg.api.v1.ObjectReference:\n    $ref: '#/definitions/io.k8s.api.core.v1.ObjectReference'\n    description: Deprecated. Please use io.k8s.api.core.v1.ObjectReference instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolume:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolume'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolume instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaim:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaim instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimList:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaimList\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaimSpec\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaimStatus\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolumeClaimVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolumeList:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeList'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeList instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolumeSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeSpec instead.\n  io.k8s.kubernetes.pkg.api.v1.PersistentVolumeStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.PersistentVolumeStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.PersistentVolumeStatus\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.PhotonPersistentDiskVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.Pod:\n    $ref: '#/definitions/io.k8s.api.core.v1.Pod'\n    description: Deprecated. Please use io.k8s.api.core.v1.Pod instead.\n  io.k8s.kubernetes.pkg.api.v1.PodAffinity:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodAffinity'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodAffinity instead.\n  io.k8s.kubernetes.pkg.api.v1.PodAffinityTerm:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodAffinityTerm'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodAffinityTerm instead.\n  io.k8s.kubernetes.pkg.api.v1.PodAntiAffinity:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodAntiAffinity'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodAntiAffinity instead.\n  io.k8s.kubernetes.pkg.api.v1.PodCondition:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodCondition'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodCondition instead.\n  io.k8s.kubernetes.pkg.api.v1.PodList:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodList'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodList instead.\n  io.k8s.kubernetes.pkg.api.v1.PodSecurityContext:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodSecurityContext'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodSecurityContext instead.\n  io.k8s.kubernetes.pkg.api.v1.PodSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodSpec instead.\n  io.k8s.kubernetes.pkg.api.v1.PodStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodStatus instead.\n  io.k8s.kubernetes.pkg.api.v1.PodTemplate:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodTemplate'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodTemplate instead.\n  io.k8s.kubernetes.pkg.api.v1.PodTemplateList:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateList'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodTemplateList instead.\n  io.k8s.kubernetes.pkg.api.v1.PodTemplateSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.PodTemplateSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.PodTemplateSpec instead.\n  io.k8s.kubernetes.pkg.api.v1.PortworxVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.PortworxVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.PortworxVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.PreferredSchedulingTerm:\n    $ref: '#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm'\n    description: Deprecated. Please use io.k8s.api.core.v1.PreferredSchedulingTerm\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.Probe:\n    $ref: '#/definitions/io.k8s.api.core.v1.Probe'\n    description: Deprecated. Please use io.k8s.api.core.v1.Probe instead.\n  io.k8s.kubernetes.pkg.api.v1.ProjectedVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.ProjectedVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.QuobyteVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.QuobyteVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.RBDVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.RBDVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.RBDVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.ReplicationController:\n    $ref: '#/definitions/io.k8s.api.core.v1.ReplicationController'\n    description: Deprecated. Please use io.k8s.api.core.v1.ReplicationController instead.\n  io.k8s.kubernetes.pkg.api.v1.ReplicationControllerCondition:\n    $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerCondition'\n    description: Deprecated. Please use io.k8s.api.core.v1.ReplicationControllerCondition\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.ReplicationControllerList:\n    $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerList'\n    description: Deprecated. Please use io.k8s.api.core.v1.ReplicationControllerList\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.ReplicationControllerSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.ReplicationControllerSpec\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.ReplicationControllerStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.ReplicationControllerStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.ReplicationControllerStatus\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.ResourceFieldSelector:\n    $ref: '#/definitions/io.k8s.api.core.v1.ResourceFieldSelector'\n    description: Deprecated. Please use io.k8s.api.core.v1.ResourceFieldSelector instead.\n  io.k8s.kubernetes.pkg.api.v1.ResourceQuota:\n    $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuota'\n    description: Deprecated. Please use io.k8s.api.core.v1.ResourceQuota instead.\n  io.k8s.kubernetes.pkg.api.v1.ResourceQuotaList:\n    $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuotaList'\n    description: Deprecated. Please use io.k8s.api.core.v1.ResourceQuotaList instead.\n  io.k8s.kubernetes.pkg.api.v1.ResourceQuotaSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuotaSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.ResourceQuotaSpec instead.\n  io.k8s.kubernetes.pkg.api.v1.ResourceQuotaStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.ResourceQuotaStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.ResourceQuotaStatus instead.\n  io.k8s.kubernetes.pkg.api.v1.ResourceRequirements:\n    $ref: '#/definitions/io.k8s.api.core.v1.ResourceRequirements'\n    description: Deprecated. Please use io.k8s.api.core.v1.ResourceRequirements instead.\n  io.k8s.kubernetes.pkg.api.v1.SELinuxOptions:\n    $ref: '#/definitions/io.k8s.api.core.v1.SELinuxOptions'\n    description: Deprecated. Please use io.k8s.api.core.v1.SELinuxOptions instead.\n  io.k8s.kubernetes.pkg.api.v1.ScaleIOVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.ScaleIOVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.Secret:\n    $ref: '#/definitions/io.k8s.api.core.v1.Secret'\n    description: Deprecated. Please use io.k8s.api.core.v1.Secret instead.\n  io.k8s.kubernetes.pkg.api.v1.SecretEnvSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.SecretEnvSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.SecretEnvSource instead.\n  io.k8s.kubernetes.pkg.api.v1.SecretKeySelector:\n    $ref: '#/definitions/io.k8s.api.core.v1.SecretKeySelector'\n    description: Deprecated. Please use io.k8s.api.core.v1.SecretKeySelector instead.\n  io.k8s.kubernetes.pkg.api.v1.SecretList:\n    $ref: '#/definitions/io.k8s.api.core.v1.SecretList'\n    description: Deprecated. Please use io.k8s.api.core.v1.SecretList instead.\n  io.k8s.kubernetes.pkg.api.v1.SecretProjection:\n    $ref: '#/definitions/io.k8s.api.core.v1.SecretProjection'\n    description: Deprecated. Please use io.k8s.api.core.v1.SecretProjection instead.\n  io.k8s.kubernetes.pkg.api.v1.SecretVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.SecretVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.SecretVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.SecurityContext:\n    $ref: '#/definitions/io.k8s.api.core.v1.SecurityContext'\n    description: Deprecated. Please use io.k8s.api.core.v1.SecurityContext instead.\n  io.k8s.kubernetes.pkg.api.v1.Service:\n    $ref: '#/definitions/io.k8s.api.core.v1.Service'\n    description: Deprecated. Please use io.k8s.api.core.v1.Service instead.\n  io.k8s.kubernetes.pkg.api.v1.ServiceAccount:\n    $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccount'\n    description: Deprecated. Please use io.k8s.api.core.v1.ServiceAccount instead.\n  io.k8s.kubernetes.pkg.api.v1.ServiceAccountList:\n    $ref: '#/definitions/io.k8s.api.core.v1.ServiceAccountList'\n    description: Deprecated. Please use io.k8s.api.core.v1.ServiceAccountList instead.\n  io.k8s.kubernetes.pkg.api.v1.ServiceList:\n    $ref: '#/definitions/io.k8s.api.core.v1.ServiceList'\n    description: Deprecated. Please use io.k8s.api.core.v1.ServiceList instead.\n  io.k8s.kubernetes.pkg.api.v1.ServicePort:\n    $ref: '#/definitions/io.k8s.api.core.v1.ServicePort'\n    description: Deprecated. Please use io.k8s.api.core.v1.ServicePort instead.\n  io.k8s.kubernetes.pkg.api.v1.ServiceSpec:\n    $ref: '#/definitions/io.k8s.api.core.v1.ServiceSpec'\n    description: Deprecated. Please use io.k8s.api.core.v1.ServiceSpec instead.\n  io.k8s.kubernetes.pkg.api.v1.ServiceStatus:\n    $ref: '#/definitions/io.k8s.api.core.v1.ServiceStatus'\n    description: Deprecated. Please use io.k8s.api.core.v1.ServiceStatus instead.\n  io.k8s.kubernetes.pkg.api.v1.StorageOSPersistentVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.StorageOSPersistentVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.StorageOSPersistentVolumeSource\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.StorageOSVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.StorageOSVolumeSource instead.\n  io.k8s.kubernetes.pkg.api.v1.TCPSocketAction:\n    $ref: '#/definitions/io.k8s.api.core.v1.TCPSocketAction'\n    description: Deprecated. Please use io.k8s.api.core.v1.TCPSocketAction instead.\n  io.k8s.kubernetes.pkg.api.v1.Taint:\n    $ref: '#/definitions/io.k8s.api.core.v1.Taint'\n    description: Deprecated. Please use io.k8s.api.core.v1.Taint instead.\n  io.k8s.kubernetes.pkg.api.v1.Toleration:\n    $ref: '#/definitions/io.k8s.api.core.v1.Toleration'\n    description: Deprecated. Please use io.k8s.api.core.v1.Toleration instead.\n  io.k8s.kubernetes.pkg.api.v1.Volume:\n    $ref: '#/definitions/io.k8s.api.core.v1.Volume'\n    description: Deprecated. Please use io.k8s.api.core.v1.Volume instead.\n  io.k8s.kubernetes.pkg.api.v1.VolumeMount:\n    $ref: '#/definitions/io.k8s.api.core.v1.VolumeMount'\n    description: Deprecated. Please use io.k8s.api.core.v1.VolumeMount instead.\n  io.k8s.kubernetes.pkg.api.v1.VolumeProjection:\n    $ref: '#/definitions/io.k8s.api.core.v1.VolumeProjection'\n    description: Deprecated. Please use io.k8s.api.core.v1.VolumeProjection instead.\n  io.k8s.kubernetes.pkg.api.v1.VsphereVirtualDiskVolumeSource:\n    $ref: '#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource'\n    description: Deprecated. Please use io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource\n      instead.\n  io.k8s.kubernetes.pkg.api.v1.WeightedPodAffinityTerm:\n    $ref: '#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm'\n    description: Deprecated. Please use io.k8s.api.core.v1.WeightedPodAffinityTerm\n      instead.\n  io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.Initializer:\n    $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.Initializer'\n    description: Deprecated. Please use io.k8s.api.admissionregistration.v1alpha1.Initializer\n      instead.\n  io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.InitializerConfiguration:\n    $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration'\n    description: Deprecated. Please use io.k8s.api.admissionregistration.v1alpha1.InitializerConfiguration\n      instead.\n  io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.InitializerConfigurationList:\n    $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.InitializerConfigurationList'\n    description: Deprecated. Please use io.k8s.api.admissionregistration.v1alpha1.InitializerConfigurationList\n      instead.\n  io.k8s.kubernetes.pkg.apis.admissionregistration.v1alpha1.Rule:\n    $ref: '#/definitions/io.k8s.api.admissionregistration.v1alpha1.Rule'\n    description: Deprecated. Please use io.k8s.api.admissionregistration.v1alpha1.Rule\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevision:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.ControllerRevision\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.ControllerRevisionList:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.ControllerRevisionList'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.ControllerRevisionList\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.Deployment:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.Deployment'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.Deployment instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentCondition:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentCondition'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentCondition\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentList:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentList'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentList instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentRollback:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentRollback'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentRollback\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentSpec:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentSpec'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentSpec instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentStatus:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentStatus'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentStatus instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.DeploymentStrategy:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.DeploymentStrategy'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.DeploymentStrategy\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollbackConfig:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.RollbackConfig'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.RollbackConfig instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollingUpdateDeployment:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateDeployment'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.RollingUpdateDeployment\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.RollingUpdateStatefulSetStrategy:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.Scale:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.Scale'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.Scale instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.ScaleSpec:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.ScaleSpec'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.ScaleSpec instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.ScaleStatus:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.ScaleStatus'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.ScaleStatus instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSet:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSet'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSet instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetList:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetList'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSetList instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetSpec:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetSpec'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSetSpec instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetStatus:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetStatus'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSetStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.apps.v1beta1.StatefulSetUpdateStrategy:\n    $ref: '#/definitions/io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy'\n    description: Deprecated. Please use io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy\n      instead.\n  io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReview:\n    $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReview'\n    description: Deprecated. Please use io.k8s.api.authentication.v1.TokenReview instead.\n  io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReviewSpec:\n    $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReviewSpec'\n    description: Deprecated. Please use io.k8s.api.authentication.v1.TokenReviewSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.authentication.v1.TokenReviewStatus:\n    $ref: '#/definitions/io.k8s.api.authentication.v1.TokenReviewStatus'\n    description: Deprecated. Please use io.k8s.api.authentication.v1.TokenReviewStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.authentication.v1.UserInfo:\n    $ref: '#/definitions/io.k8s.api.authentication.v1.UserInfo'\n    description: Deprecated. Please use io.k8s.api.authentication.v1.UserInfo instead.\n  io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReview:\n    $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReview'\n    description: Deprecated. Please use io.k8s.api.authentication.v1beta1.TokenReview\n      instead.\n  io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReviewSpec:\n    $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReviewSpec'\n    description: Deprecated. Please use io.k8s.api.authentication.v1beta1.TokenReviewSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.authentication.v1beta1.TokenReviewStatus:\n    $ref: '#/definitions/io.k8s.api.authentication.v1beta1.TokenReviewStatus'\n    description: Deprecated. Please use io.k8s.api.authentication.v1beta1.TokenReviewStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.authentication.v1beta1.UserInfo:\n    $ref: '#/definitions/io.k8s.api.authentication.v1beta1.UserInfo'\n    description: Deprecated. Please use io.k8s.api.authentication.v1beta1.UserInfo\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1.LocalSubjectAccessReview:\n    $ref: '#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview'\n    description: Deprecated. Please use io.k8s.api.authorization.v1.LocalSubjectAccessReview\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1.NonResourceAttributes:\n    $ref: '#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes'\n    description: Deprecated. Please use io.k8s.api.authorization.v1.NonResourceAttributes\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1.ResourceAttributes:\n    $ref: '#/definitions/io.k8s.api.authorization.v1.ResourceAttributes'\n    description: Deprecated. Please use io.k8s.api.authorization.v1.ResourceAttributes\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1.SelfSubjectAccessReview:\n    $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview'\n    description: Deprecated. Please use io.k8s.api.authorization.v1.SelfSubjectAccessReview\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1.SelfSubjectAccessReviewSpec:\n    $ref: '#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec'\n    description: Deprecated. Please use io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReview:\n    $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview'\n    description: Deprecated. Please use io.k8s.api.authorization.v1.SubjectAccessReview\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReviewSpec:\n    $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec'\n    description: Deprecated. Please use io.k8s.api.authorization.v1.SubjectAccessReviewSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1.SubjectAccessReviewStatus:\n    $ref: '#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus'\n    description: Deprecated. Please use io.k8s.api.authorization.v1.SubjectAccessReviewStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1beta1.LocalSubjectAccessReview:\n    $ref: '#/definitions/io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview'\n    description: Deprecated. Please use io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1beta1.NonResourceAttributes:\n    $ref: '#/definitions/io.k8s.api.authorization.v1beta1.NonResourceAttributes'\n    description: Deprecated. Please use io.k8s.api.authorization.v1beta1.NonResourceAttributes\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1beta1.ResourceAttributes:\n    $ref: '#/definitions/io.k8s.api.authorization.v1beta1.ResourceAttributes'\n    description: Deprecated. Please use io.k8s.api.authorization.v1beta1.ResourceAttributes\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SelfSubjectAccessReview:\n    $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview'\n    description: Deprecated. Please use io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SelfSubjectAccessReviewSpec:\n    $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec'\n    description: Deprecated. Please use io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReview:\n    $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReview'\n    description: Deprecated. Please use io.k8s.api.authorization.v1beta1.SubjectAccessReview\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReviewSpec:\n    $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec'\n    description: Deprecated. Please use io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.authorization.v1beta1.SubjectAccessReviewStatus:\n    $ref: '#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus'\n    description: Deprecated. Please use io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.autoscaling.v1.CrossVersionObjectReference:\n    $ref: '#/definitions/io.k8s.api.autoscaling.v1.CrossVersionObjectReference'\n    description: Deprecated. Please use io.k8s.api.autoscaling.v1.CrossVersionObjectReference\n      instead.\n  io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscaler:\n    $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler'\n    description: Deprecated. Please use io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler\n      instead.\n  io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerList:\n    $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList'\n    description: Deprecated. Please use io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList\n      instead.\n  io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerSpec:\n    $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec'\n    description: Deprecated. Please use io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerStatus:\n    $ref: '#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus'\n    description: Deprecated. Please use io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.autoscaling.v1.Scale:\n    $ref: '#/definitions/io.k8s.api.autoscaling.v1.Scale'\n    description: Deprecated. Please use io.k8s.api.autoscaling.v1.Scale instead.\n  io.k8s.kubernetes.pkg.apis.autoscaling.v1.ScaleSpec:\n    $ref: '#/definitions/io.k8s.api.autoscaling.v1.ScaleSpec'\n    description: Deprecated. Please use io.k8s.api.autoscaling.v1.ScaleSpec instead.\n  io.k8s.kubernetes.pkg.apis.autoscaling.v1.ScaleStatus:\n    $ref: '#/definitions/io.k8s.api.autoscaling.v1.ScaleStatus'\n    description: Deprecated. Please use io.k8s.api.autoscaling.v1.ScaleStatus instead.\n  io.k8s.kubernetes.pkg.apis.batch.v1.Job:\n    $ref: '#/definitions/io.k8s.api.batch.v1.Job'\n    description: Deprecated. Please use io.k8s.api.batch.v1.Job instead.\n  io.k8s.kubernetes.pkg.apis.batch.v1.JobCondition:\n    $ref: '#/definitions/io.k8s.api.batch.v1.JobCondition'\n    description: Deprecated. Please use io.k8s.api.batch.v1.JobCondition instead.\n  io.k8s.kubernetes.pkg.apis.batch.v1.JobList:\n    $ref: '#/definitions/io.k8s.api.batch.v1.JobList'\n    description: Deprecated. Please use io.k8s.api.batch.v1.JobList instead.\n  io.k8s.kubernetes.pkg.apis.batch.v1.JobSpec:\n    $ref: '#/definitions/io.k8s.api.batch.v1.JobSpec'\n    description: Deprecated. Please use io.k8s.api.batch.v1.JobSpec instead.\n  io.k8s.kubernetes.pkg.apis.batch.v1.JobStatus:\n    $ref: '#/definitions/io.k8s.api.batch.v1.JobStatus'\n    description: Deprecated. Please use io.k8s.api.batch.v1.JobStatus instead.\n  io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJob:\n    $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJob'\n    description: Deprecated. Please use io.k8s.api.batch.v2alpha1.CronJob instead.\n  io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobList:\n    $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJobList'\n    description: Deprecated. Please use io.k8s.api.batch.v2alpha1.CronJobList instead.\n  io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobSpec:\n    $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJobSpec'\n    description: Deprecated. Please use io.k8s.api.batch.v2alpha1.CronJobSpec instead.\n  io.k8s.kubernetes.pkg.apis.batch.v2alpha1.CronJobStatus:\n    $ref: '#/definitions/io.k8s.api.batch.v2alpha1.CronJobStatus'\n    description: Deprecated. Please use io.k8s.api.batch.v2alpha1.CronJobStatus instead.\n  io.k8s.kubernetes.pkg.apis.batch.v2alpha1.JobTemplateSpec:\n    $ref: '#/definitions/io.k8s.api.batch.v2alpha1.JobTemplateSpec'\n    description: Deprecated. Please use io.k8s.api.batch.v2alpha1.JobTemplateSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequest:\n    $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequest'\n    description: Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequest\n      instead.\n  io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestCondition:\n    $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestCondition'\n    description: Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequestCondition\n      instead.\n  io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestList:\n    $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestList'\n    description: Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequestList\n      instead.\n  io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestSpec:\n    $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestSpec'\n    description: Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequestSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.certificates.v1beta1.CertificateSigningRequestStatus:\n    $ref: '#/definitions/io.k8s.api.certificates.v1beta1.CertificateSigningRequestStatus'\n    description: Deprecated. Please use io.k8s.api.certificates.v1beta1.CertificateSigningRequestStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSet:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSet'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSet instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetList:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetList'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSetList\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetSpec:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetSpec'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSetSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetStatus:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetStatus'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSetStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DaemonSetUpdateStrategy:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DaemonSetUpdateStrategy\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Deployment:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Deployment'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.Deployment instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentCondition:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentCondition'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentCondition\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentList:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentList'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentList\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentRollback:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentRollback'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentRollback\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentSpec:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentSpec'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentStatus:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentStatus'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.DeploymentStrategy:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.DeploymentStrategy'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.DeploymentStrategy\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.FSGroupStrategyOptions:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.FSGroupStrategyOptions'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.FSGroupStrategyOptions\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HTTPIngressPath:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.HTTPIngressPath'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.HTTPIngressPath\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HTTPIngressRuleValue:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.HTTPIngressRuleValue\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.HostPortRange:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.HostPortRange'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.HostPortRange\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IDRange:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IDRange'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.IDRange instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Ingress:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Ingress'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.Ingress instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressBackend:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressBackend'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressBackend\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressList:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressList'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressList\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressRule:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressRule'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressRule\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressSpec:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressSpec'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressStatus:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressStatus'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.IngressTLS:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.IngressTLS'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.IngressTLS instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicy:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicy'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicy\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyIngressRule:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicyIngressRule\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyList:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyList'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicyList\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyPeer:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyPeer'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicyPeer\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicyPort:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicyPort'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicyPort\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.NetworkPolicySpec:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.NetworkPolicySpec'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.NetworkPolicySpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicy:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicy'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.PodSecurityPolicy\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicyList:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicyList'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.PodSecurityPolicyList\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.PodSecurityPolicySpec:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.PodSecurityPolicySpec'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.PodSecurityPolicySpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSet:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSet'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSet instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetCondition:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetCondition'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSetCondition\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetList:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetList'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSetList\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetSpec:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetSpec'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSetSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ReplicaSetStatus:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ReplicaSetStatus'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.ReplicaSetStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollbackConfig:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RollbackConfig'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.RollbackConfig\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollingUpdateDaemonSet:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.RollingUpdateDaemonSet\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RollingUpdateDeployment:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RollingUpdateDeployment'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.RollingUpdateDeployment\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.RunAsUserStrategyOptions:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.RunAsUserStrategyOptions'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.RunAsUserStrategyOptions\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.SELinuxStrategyOptions:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.SELinuxStrategyOptions'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.SELinuxStrategyOptions\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.Scale:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.Scale'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.Scale instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ScaleSpec:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ScaleSpec'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.ScaleSpec instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ScaleStatus:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.ScaleStatus'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.ScaleStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.SupplementalGroupsStrategyOptions:\n    $ref: '#/definitions/io.k8s.api.extensions.v1beta1.SupplementalGroupsStrategyOptions'\n    description: Deprecated. Please use io.k8s.api.extensions.v1beta1.SupplementalGroupsStrategyOptions\n      instead.\n  io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicy:\n    $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicy'\n    description: Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicy instead.\n  io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyIngressRule:\n    $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyIngressRule'\n    description: Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicyIngressRule\n      instead.\n  io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyList:\n    $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyList'\n    description: Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicyList\n      instead.\n  io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyPeer:\n    $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyPeer'\n    description: Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicyPeer\n      instead.\n  io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicyPort:\n    $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort'\n    description: Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicyPort\n      instead.\n  io.k8s.kubernetes.pkg.apis.networking.v1.NetworkPolicySpec:\n    $ref: '#/definitions/io.k8s.api.networking.v1.NetworkPolicySpec'\n    description: Deprecated. Please use io.k8s.api.networking.v1.NetworkPolicySpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.policy.v1beta1.Eviction:\n    $ref: '#/definitions/io.k8s.api.policy.v1beta1.Eviction'\n    description: Deprecated. Please use io.k8s.api.policy.v1beta1.Eviction instead.\n  io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudget:\n    $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudget'\n    description: Deprecated. Please use io.k8s.api.policy.v1beta1.PodDisruptionBudget\n      instead.\n  io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetList:\n    $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetList'\n    description: Deprecated. Please use io.k8s.api.policy.v1beta1.PodDisruptionBudgetList\n      instead.\n  io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetSpec:\n    $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec'\n    description: Deprecated. Please use io.k8s.api.policy.v1beta1.PodDisruptionBudgetSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.policy.v1beta1.PodDisruptionBudgetStatus:\n    $ref: '#/definitions/io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus'\n    description: Deprecated. Please use io.k8s.api.policy.v1beta1.PodDisruptionBudgetStatus\n      instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRole:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRole'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.ClusterRole instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleBinding:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBinding'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.ClusterRoleBinding\n      instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleBindingList:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleBindingList'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.ClusterRoleBindingList\n      instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.ClusterRoleList:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.ClusterRoleList'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.ClusterRoleList instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.PolicyRule:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.PolicyRule'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.PolicyRule instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.Role:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Role'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.Role instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleBinding:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBinding'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.RoleBinding instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleBindingList:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleBindingList'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.RoleBindingList instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleList:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleList'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.RoleList instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.RoleRef:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.RoleRef'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.RoleRef instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1alpha1.Subject:\n    $ref: '#/definitions/io.k8s.api.rbac.v1alpha1.Subject'\n    description: Deprecated. Please use io.k8s.api.rbac.v1alpha1.Subject instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRole:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRole'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.ClusterRole instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleBinding:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBinding'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.ClusterRoleBinding\n      instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleBindingList:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleBindingList'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.ClusterRoleBindingList\n      instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.ClusterRoleList:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.ClusterRoleList'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.ClusterRoleList instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.PolicyRule:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.PolicyRule'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.PolicyRule instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.Role:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Role'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.Role instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleBinding:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBinding'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.RoleBinding instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleBindingList:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleBindingList'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.RoleBindingList instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleList:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleList'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.RoleList instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.RoleRef:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.RoleRef'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.RoleRef instead.\n  io.k8s.kubernetes.pkg.apis.rbac.v1beta1.Subject:\n    $ref: '#/definitions/io.k8s.api.rbac.v1beta1.Subject'\n    description: Deprecated. Please use io.k8s.api.rbac.v1beta1.Subject instead.\n  io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPreset:\n    $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPreset'\n    description: Deprecated. Please use io.k8s.api.settings.v1alpha1.PodPreset instead.\n  io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPresetList:\n    $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPresetList'\n    description: Deprecated. Please use io.k8s.api.settings.v1alpha1.PodPresetList\n      instead.\n  io.k8s.kubernetes.pkg.apis.settings.v1alpha1.PodPresetSpec:\n    $ref: '#/definitions/io.k8s.api.settings.v1alpha1.PodPresetSpec'\n    description: Deprecated. Please use io.k8s.api.settings.v1alpha1.PodPresetSpec\n      instead.\n  io.k8s.kubernetes.pkg.apis.storage.v1.StorageClass:\n    $ref: '#/definitions/io.k8s.api.storage.v1.StorageClass'\n    description: Deprecated. Please use io.k8s.api.storage.v1.StorageClass instead.\n  io.k8s.kubernetes.pkg.apis.storage.v1.StorageClassList:\n    $ref: '#/definitions/io.k8s.api.storage.v1.StorageClassList'\n    description: Deprecated. Please use io.k8s.api.storage.v1.StorageClassList instead.\n  io.k8s.kubernetes.pkg.apis.storage.v1beta1.StorageClass:\n    $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClass'\n    description: Deprecated. Please use io.k8s.api.storage.v1beta1.StorageClass instead.\n  io.k8s.kubernetes.pkg.apis.storage.v1beta1.StorageClassList:\n    $ref: '#/definitions/io.k8s.api.storage.v1beta1.StorageClassList'\n    description: Deprecated. Please use io.k8s.api.storage.v1beta1.StorageClassList\n      instead.\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource:\n    description: A ThirdPartyResource is a generic representation of a resource, it\n      is used by add-ons and plugins to add new resource types to the API.  It consists\n      of one or more Versions of the api.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      description:\n        description: Description is the description of this object.\n        type: string\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta'\n        description: Standard object metadata\n      versions:\n        description: Versions are versions for this third party object\n        items:\n          $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.APIVersion'\n        type: array\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: ThirdPartyResource\n      version: v1beta1\n  io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResourceList:\n    description: ThirdPartyResourceList is a list of ThirdPartyResources.\n    properties:\n      apiVersion:\n        description: 'APIVersion defines the versioned schema of this representation\n          of an object. Servers should convert recognized schemas to the latest internal\n          value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'\n        type: string\n      items:\n        description: Items is the list of ThirdPartyResources.\n        items:\n          $ref: '#/definitions/io.k8s.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource'\n        type: array\n      kind:\n        description: 'Kind is a string value representing the REST resource this object\n          represents. Servers may infer this from the endpoint the client submits\n          requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'\n        type: string\n      metadata:\n        $ref: '#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta'\n        description: Standard list metadata.\n    required:\n    - items\n    x-kubernetes-group-version-kind:\n    - group: extensions\n      kind: ThirdPartyResourceList\n      version: v1beta1\nsecurity:\n- BearerToken: []\nsecurityDefinitions:\n  BearerToken:\n    description: Bearer Token authentication\n    in: header\n    name: authorization\n    type: apiKey\n"
  },
  {
    "path": "src/tools/Common.Tools.props",
    "content": "<Project>\n  <Import Project=\"../Common.props\" />\n\n  <!-- Common settings for tool projects -->\n  <PropertyGroup>\n    <PackageOutputPath>$(PackageOutputPath)/packages</PackageOutputPath>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "src/tools/KubeClient.Tools.Generator/KubeClient.Tools.Generator.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net10.0</TargetFramework>\n    <ImplicitUsings>enable</ImplicitUsings>\n    <Nullable>enable</Nullable>\n\n    <PackAsTool>true</PackAsTool>\n    <ToolCommandName>kubeclient-codegen</ToolCommandName>\n\n    <PackageTags>$(PackageTags);generator;codegen</PackageTags>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../KubeClient.Extensions.Configuration/KubeClient.Extensions.Configuration.csproj\" />\n    <ProjectReference Include=\"../../KubeClient.Extensions.CustomResources/KubeClient.Extensions.CustomResources.csproj\" />\n    <ProjectReference Include=\"../../KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj\" />\n    <ProjectReference Include=\"../../KubeClient.Extensions.CustomResources.CodeGen/KubeClient.Extensions.CustomResources.CodeGen.csproj\" />\n    <ProjectReference Include=\"../../KubeClient.Extensions.CustomResources.Schema/KubeClient.Extensions.CustomResources.Schema.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"CommandLineParser\" Version=\"2.9.1\" />\n    <PackageReference Include=\"Microsoft.Extensions.Hosting\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Console\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.Tools.props\" />\n</Project>\n"
  },
  {
    "path": "src/tools/KubeClient.Tools.Generator/Program.cs",
    "content": "﻿using KubeClient.ApiMetadata;\nusing KubeClient.Extensions.CustomResources.CodeGen;\nusing KubeClient.Extensions.CustomResources.Schema;\nusing KubeClient.Http;\nusing KubeClient.Models;\nusing Microsoft.CodeAnalysis;\nusing Microsoft.CodeAnalysis.Formatting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.Logging.Console;\n\nusing Document = Microsoft.CodeAnalysis.Document;\n\nnamespace KubeClient.Tools.Generator\n{\n    /// <summary>\n    ///     The KubeClient code-generator tool.\n    /// </summary>\n    static class Program\n    {\n        /// <summary>\n        ///     The source for root-level cancellation tokens.\n        /// </summary>\n        static readonly CancellationTokenSource Cancellation = new CancellationTokenSource();\n\n        /// <summary>\n        ///     Standard console-app cancellation behaviour.\n        /// </summary>\n        static Program()\n        {\n            Console.CancelKeyPress += OnConsoleCancellation;\n        }\n\n        /// <summary>\n        ///     The root logger for the code-generator tool.\n        /// </summary>\n        public static ILogger Log { get; private set; } = null!;\n\n        /// <summary>\n        ///     The tool's main program entry point.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The tool's command-line arguments.\n        /// </param>\n        /// <returns>\n        ///     The program exit code.\n        /// </returns>\n        static async Task<int> Main(string[] commandLineArguments)\n        {\n            ProgramOptions? options = ProgramOptions.Parse(commandLineArguments);\n            if (options == null)\n                return ExitCodes.InvalidArguments;\n\n            using ServiceProvider loggingServiceProvider = ConfigureLogging(options);\n\n            try\n            {\n                IKubeApiClient kubeApiClient = KubeApiClient.Create(\n                    K8sConfig.Load().ToKubeClientOptions(\n                        kubeContextName: options.KubeContextName,\n                        defaultKubeNamespace: \"default\",\n                        loggerFactory: loggingServiceProvider.GetRequiredService<ILoggerFactory>()\n                    )\n                );\n\n                CustomResourceDefinitionListV1 crds = await kubeApiClient.CustomResourceDefinitionsV1().List(cancellationToken: Cancellation.Token);\n                \n                Dictionary<KubeResourceType, CustomResourceDefinitionV1> customResourceTypes = new Dictionary<KubeResourceType, CustomResourceDefinitionV1>();\n                foreach (CustomResourceDefinitionV1 crd in crds)\n                {\n                    foreach (CustomResourceDefinitionVersionV1 crdVersion in crd.Spec.Versions)\n                    {\n                        KubeResourceType versionedResourceType = new KubeResourceType(\n                            Group: crd.Spec.Group,\n                            Version: crdVersion.Name,\n                            ResourceKind: crd.Spec.Names.Kind\n                        );\n                        customResourceTypes.Add(versionedResourceType, crd);\n                    }\n                }\n\n                KubeApiMetadataCache metadataCache = new KubeApiMetadataCache();\n                await metadataCache.Load(kubeApiClient, cancellationToken: Cancellation.Token);\n\n                using AdhocWorkspace workspace = new AdhocWorkspace();\n\n                Project project = workspace.AddProject(\"KubeClient.Generated\", LanguageNames.CSharp);\n\n                KubeResourceType targetResourceKind = new KubeResourceType(options.Group, options.Version, options.Kind);\n                if (customResourceTypes.TryGetValue(targetResourceKind, out CustomResourceDefinitionV1? kafkaConnectorDefinition))\n                {\n                    KubeApiMetadata? resourceTypeMetadata = metadataCache.Get(\n                        kind: targetResourceKind.ResourceKind,\n                        apiGroup: targetResourceKind.Group,\n                        apiVersion: targetResourceKind.Version\n                    );\n                    if (resourceTypeMetadata == null)\n                    {\n                        Log.LogError(\"Failed to retrieve metadata for resource type {@ResourceType}.\", targetResourceKind);\n\n                        return ExitCodes.UnexpectedError;\n                    }\n\n                    KubeSchema schema = JsonSchemaParserV1.BuildKubeSchema(metadataCache, kafkaConnectorDefinition);\n                    project = ModelGeneratorV1.GenerateModels(schema, targetResourceKind, project, options.Namespace);\n                }\n\n                if (!workspace.TryApplyChanges(project.Solution))\n                {\n                    Log.LogError(\"Failed to apply solution changes to workspace.\");\n\n                    return ExitCodes.UnexpectedError;\n                }\n\n                foreach (Document document in project.Documents.OrderBy(document => document.Name, StringComparer.OrdinalIgnoreCase).Take(1))\n                {\n                    Document formattedDocument = await Formatter.FormatAsync(document, workspace.Options, cancellationToken: Cancellation.Token);\n                    if (formattedDocument.TryGetSyntaxRoot(out SyntaxNode? syntaxRoot))\n                    {\n                        string generatedCode = syntaxRoot.ToFullString();\n                        Log.LogInformation(\"\\n{DocumentSourceText:l}\", generatedCode);\n\n                        await File.WriteAllTextAsync(options.OutputFile, generatedCode);\n                    }\n                    else\n                    {\n                        Log.LogError(\"Failed to retrieve source text for document {DocumentName}.\", document.Name);\n\n                        return ExitCodes.UnexpectedError;\n                    }\n                }\n\n                return ExitCodes.Success;\n            }\n            catch (HttpRequestException<StatusV1> kubeError)\n            {\n                Log.LogError(kubeError, \"Kubernetes API error: {@Status}\", kubeError.Response);\n\n                return ExitCodes.UnexpectedError;\n            }\n            catch (Exception unexpectedError)\n            {\n                Log.LogError(unexpectedError, \"An unexpected error has occurred.\");\n\n                return ExitCodes.UnexpectedError;\n            }\n            finally\n            {\n                using (Cancellation)\n                {\n                    Cancellation.Cancel();\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Well-known program exit codes.\n        /// </summary>\n        public static class ExitCodes\n        {\n            /// <summary>\n            ///     Program completed successfully.\n            /// </summary>\n            public const int Success = 0;\n\n            /// <summary>\n            ///     One or more command-line arguments were missing or invalid.\n            /// </summary>\n            public const int InvalidArguments = 1;\n\n            /// <summary>\n            ///     An unexpected error occurred during program execution.\n            /// </summary>\n            public const int UnexpectedError = 5;\n        }\n\n        /// <summary>\n        ///     Configure application-level logging and populate <see cref=\"Log\"/>.\n        /// </summary>\n        /// <param name=\"options\">\n        ///     Program options.\n        /// </param>\n        /// <returns>\n        ///     The global logging service provider.\n        /// </returns>\n        static ServiceProvider ConfigureLogging(ProgramOptions options)\n        {\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            ServiceProvider loggingServiceProvider = new ServiceCollection()\n                .AddLogging(logging =>\n                {\n                    logging.SetMinimumLevel(\n                        options.Verbose ? LogLevel.Trace : LogLevel.Information\n                    );\n                    logging.AddConsole();\n                    logging.AddDebug();\n                })\n                .BuildServiceProvider(new ServiceProviderOptions\n                {\n                    ValidateOnBuild = true,\n                    ValidateScopes = true,\n                });\n\n            try\n            {\n                ILoggerFactory loggerFactory = loggingServiceProvider.GetRequiredService<ILoggerFactory>();\n\n                Log = loggerFactory.CreateLogger(typeof(Program));\n\n                return loggingServiceProvider;\n            }\n            catch (Exception)\n            {\n                // Clean up, on failure (if possible).\n                using (loggingServiceProvider)\n                {\n                    throw;\n                }\n            }\n        }\n\n        static IHostBuilder BuildToolHost(ProgramOptions options)\n        {\n            if (options == null)\n                throw new ArgumentNullException(nameof(options));\n\n            return Host.CreateDefaultBuilder()\n                .ConfigureLogging(logging =>\n                {\n                    if (options.Verbose)\n                        logging.SetMinimumLevel(LogLevel.Debug);\n                    else\n                        logging.SetMinimumLevel(LogLevel.Information);\n\n                    logging.AddDebug();\n                    logging.AddSimpleConsole(console =>\n                    {\n                        if (Console.IsOutputRedirected || Console.IsErrorRedirected)\n                            console.ColorBehavior = LoggerColorBehavior.Disabled;\n                        else\n                            console.ColorBehavior = LoggerColorBehavior.Enabled;\n                    });\n                })\n                .UseConsoleLifetime(consoleLifetime =>\n                {\n                    consoleLifetime.SuppressStatusMessages = !options.Verbose;\n                });\n        }\n\n        static void OnConsoleCancellation(object? sender, ConsoleCancelEventArgs args)\n        {\n            if (sender == null)\n                throw new ArgumentNullException(nameof(sender));\n\n            if (args == null)\n                throw new ArgumentNullException(nameof(args));\n\n            Cancellation.Cancel();\n\n            args.Cancel = true; // We'll handle shutdown.\n        }\n    }\n}\n"
  },
  {
    "path": "src/tools/KubeClient.Tools.Generator/ProgramOptions.cs",
    "content": "﻿using CommandLine;\n\nnamespace KubeClient.Tools.Generator\n{\n    /// <summary>\n    ///     Program options for the generator tool.\n    /// </summary>\n    class ProgramOptions\n    {\n        /// <summary>\n        ///     The name of the target Kubernetes client context to use (from ~/kube/config).\n        /// </summary>\n        [Option('c', \"context\", Required = true, HelpText = \"\")]\n        public string KubeContextName { get; set; } = String.Empty;\n\n        /// <summary>\n        ///     The name of the target API group.\n        /// </summary>\n        [Option('g', \"group\", Required = true, HelpText = \"The name of the target API group.\")]\n        public string Group { get; set; } = String.Empty;\n\n        /// <summary>\n        ///     The name of the target API version.\n        /// </summary>\n        [Option('v', \"version\", Required = true, HelpText = \"The name of the target API version.\")]\n        public string Version { get; set; } = String.Empty;\n\n        /// <summary>\n        ///     The name of the target resource kind.\n        /// </summary>\n        [Option('k', \"kind\", Required = true, HelpText = \"The name of the target resource kind.\")]\n        public string Kind { get; set; } = String.Empty;\n\n        /// <summary>\n        ///     The namespace for generated code.\n        /// </summary>\n        [Option('n', \"namespace\", Required = true, HelpText = \"The namespace for generated code.\")]\n        public string Namespace { get; set; } = String.Empty;\n\n        /// <summary>\n        ///     The name of the output file for generated code.\n        /// </summary>\n        [Option('o', \"out\", Required = true, HelpText = \"The name of the output file for generated code.\")]\n        public string OutputFile { get; set; } = String.Empty;\n\n        /// <summary>\n        ///     Enable verbose logging.\n        /// </summary>\n        [Option(\"verbose\", Default = false, HelpText = \"Enable verbose logging.\")]\n        public bool Verbose { get; set; }\n\n        /// <summary>\n        ///     Parse program options from command-line arguments.\n        /// </summary>\n        /// <param name=\"commandLineArguments\">\n        ///     The command-line arguments\n        /// </param>\n        /// <returns>\n        ///     The parsed <see cref=\"ProgramOptions\"/>, or <c>null</c> if the command-line arguments could not be parsed.\n        /// </returns>\n        public static ProgramOptions? Parse(string[] commandLineArguments)\n        {\n            ProgramOptions? options = null;\n\n            Parser.Default.ParseArguments<ProgramOptions>(commandLineArguments)\n                .WithParsed(parsedOptions => options = parsedOptions);\n\n            return options;\n        }\n    }\n}\n"
  },
  {
    "path": "test/Common.props",
    "content": "<Project>\n  <!-- Common settings for projects -->\n  <PropertyGroup>\n    <LangVersion>latest</LangVersion>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "test/KubeClient.Extensions.Configuration.Tests/KubeClient.Extensions.Configuration.Tests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.Configuration/KubeClient.Extensions.Configuration.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient.TestCommon/KubeClient.TestCommon.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n  <Import Project=\"../TestProject.Common.props\" />\n</Project>\n"
  },
  {
    "path": "test/KubeClient.Extensions.Configuration.Tests/ProviderSemanticsTests.cs",
    "content": "using Microsoft.Extensions.Configuration;\nusing System;\nusing System.Collections.Generic;\nusing Xunit;\n\nnamespace KubeClient.Extensions.Configuration.Tests\n{\n    /// <summary>\n    ///     Tests to validate the semantics of <see cref=\"ConfigurationBuilder\"/>, <see cref=\"IConfigurationSource\"/>, and <see cref=\"IConfigurationProvider\"/>.\n    /// </summary>\n    public class ProviderSemanticsTests\n    {\n        /// <summary>\n        /// An <see cref=\"Action\"/> delegate used to trigger reload of configuration.\n        /// </summary>\n        static Action TriggerReload;\n\n        /// <summary>\n        ///     A second <see cref=\"IConfigurationSource\"/> will override values provided by the first source.\n        /// </summary>\n        [Fact]\n        public void Can_Override_Configuration()\n        {\n            var source1 = new DummyConfigSource\n            {\n                ProviderData =\n                    {\n                        [\"Key1\"] = \"Value1\",\n                        [\"Key2\"] = \"Value2\",\n                    }\n            };\n\n            var source2 = new DummyConfigSource\n            {\n                ProviderData =\n                    {\n                        [\"Key1\"] = \"Value1a\",\n                        [\"Key3\"] = \"Value3\",\n                    }\n            };\n\n            IConfiguration configuration = new ConfigurationBuilder()\n                .Add(source1)\n                .Add(source2)\n                .Build();\n\n            Assert.Equal(\"Value2\", configuration[\"Key2\"]);\n            Assert.Equal(\"Value3\", configuration[\"Key3\"]);\n\n            Assert.Equal(\"Value1a\", configuration[\"Key1\"]);\n\n            source2.ProviderData[\"Key1\"] = \"Value1b\";\n            TriggerReload();\n\n            Assert.Equal(\"Value2\", configuration[\"Key2\"]);\n            Assert.Equal(\"Value3\", configuration[\"Key3\"]);\n\n            Assert.Equal(\"Value1a\", configuration[\"Key1\"]);\n        }\n\n        /// <summary>\n        ///     A dummy configuration source that gets its data from a dictionary.\n        /// </summary>\n        class DummyConfigSource\n            : IConfigurationSource\n        {\n            /// <summary>\n            ///     Create a new <see cref=\"DummyConfigSource\"/>.\n            /// </summary>\n            public DummyConfigSource()\n            {\n            }\n\n            /// <summary>\n            ///     The provider data.\n            /// </summary>\n            public Dictionary<string, string> ProviderData { get; } = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);\n\n            /// <summary>\n            ///     Build a configuration provider for the source's configured values.\n            /// </summary>\n            /// <param name=\"builder\">\n            ///     The <see cref=\"IConfigurationBuilder\"/> for which configuration is being built.\n            /// </param>\n            /// <returns>\n            ///     The configuration provider.\n            /// </returns>\n            public IConfigurationProvider Build(IConfigurationBuilder builder) => new DummyConfigProvider(ProviderData);\n        }\n\n        /// <summary>\n        ///     A dummy configuration provider that gets its data from a dictionary.\n        /// </summary>\n        class DummyConfigProvider\n            : ConfigurationProvider\n        {\n            /// <summary>\n            ///     Create a new <see cref=\"DummyConfigProvider\"/>.\n            /// </summary>\n            /// <param name=\"providerData\">\n            ///     A <see cref=\"Dictionary{TKey, TValue}\"/> containing the provider data.\n            /// </param>\n            public DummyConfigProvider(Dictionary<string, string> providerData)\n            {\n                if ( providerData == null )\n                    throw new ArgumentNullException(nameof(providerData));\n\n                ProviderData = providerData;\n\n                // Hacky mechanism to register for reload.\n                Action oldReload = TriggerReload;\n                TriggerReload = () =>\n                {\n                    if (oldReload != null)\n                        oldReload();\n\n                    OnReload();\n                };\n            }\n\n            /// <summary>\n            ///     A <see cref=\"Dictionary{TKey, TValue}\"/> containing the provider data.\n            /// </summary>\n            public Dictionary<string, string> ProviderData { get; }\n\n            /// <summary>\n            ///     Load the provider data's.\n            /// </summary>\n            public override void Load()\n            {\n                base.Load();\n\n                Data = new Dictionary<string, string>(ProviderData, StringComparer.OrdinalIgnoreCase);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.CustomResources.Tests/GlobalUsings.cs",
    "content": "global using Xunit;"
  },
  {
    "path": "test/KubeClient.Extensions.CustomResources.Tests/KubeClient.Extensions.CustomResources.Tests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.CustomResources/KubeClient.Extensions.CustomResources.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.CustomResources.CodeGen/KubeClient.Extensions.CustomResources.CodeGen.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.CustomResources.Schema/KubeClient.Extensions.CustomResources.Schema.csproj\" />\n    <ProjectReference Include=\"../KubeClient.TestCommon/KubeClient.TestCommon.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n  <Import Project=\"../TestProject.Common.props\" />\n</Project>\n"
  },
  {
    "path": "test/KubeClient.Extensions.CustomResources.Tests/Schema/Utilities/NameWranglerTests.cs",
    "content": "using KubeClient.Extensions.CustomResources.Schema.Utilities;\n\nnamespace KubeClient.Extensions.CustomResources.Tests.Schema.Utilities\n{\n    public class NameWranglerTests\n    {\n        [Theory]\n        [InlineData(\"v1\", \"V1\")]\n        [InlineData(\"v1beta1\", \"V1Beta1\")]\n        [InlineData(\"v12beta34\", \"V12Beta34\")]\n        [InlineData(\"v12etaBetaPi34\", \"V12EtaBetaPi34\")]\n        [InlineData(\"v12EtaBetaPi34\", \"V12EtaBetaPi34\")]\n        [InlineData(\"v12etabetaPi34\", \"V12EtabetaPi34\")]\n        public void Can_Capitalize_Name(string name, string expected)\n        {\n            string actual = NameWrangler.CapitalizeName(name);\n\n            Assert.Equal(expected, actual);\n        }\n    }\n}"
  },
  {
    "path": "test/KubeClient.Extensions.DataProtection.Tests/GlobalUsings.cs",
    "content": "global using Xunit;"
  },
  {
    "path": "test/KubeClient.Extensions.DataProtection.Tests/KeyPersistenceTests.cs",
    "content": "﻿using Microsoft.AspNetCore.DataProtection;\nusing Microsoft.Extensions.DependencyInjection;\nusing System;\nusing System.Collections.Concurrent;\nusing System.Reactive.Subjects;\nusing System.Threading.Tasks;\nusing Xunit.Abstractions;\n\nusing MSLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory;\n\nnamespace KubeClient.Extensions.DataProtection.Tests\n{\n    using Models;\n    using TestCommon;\n    using TestCommon.Logging;\n    using TestCommon.Mocks;\n\n    /// <summary>\n    ///     Tests for DataProtection key persistence using K8s secrets.\n    /// </summary>\n    public class KeyPersistenceTests\n        : TestBase\n    {\n        /// <summary>\n        ///     The name of the secret used to sure DataProtection keys.\n        /// </summary>\n        static readonly string TestSecretName = \"test-secret\";\n\n        /// <summary>\n        ///     The namespace of the secret used to sure DataProtection keys.\n        /// </summary>\n        static readonly string TestSecretNamespace = \"test-namespace\";\n\n        /// <summary>\n        ///     Create a new DataProtection key persistence test-suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public KeyPersistenceTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that the data protector (i.e. <see cref=\"IDataProtectionProvider\"/>) can be resolved from the DI container.\n        /// </summary>\n        /// <remarks>\n        ///     This results in the data-protection system loading and initialising our provider.\n        /// </remarks>\n        [Fact]\n        public async Task Can_Create_Data_Protector()\n        {\n            using Subject<SecretV1> secretWatchSubject = new Subject<SecretV1>(); // Needed because the key store always watches for changes.\n\n            ConcurrentDictionary<string, SecretV1> secrets = new ConcurrentDictionary<string, SecretV1>();\n\n            await using MockKubeApi mockApi = MockKubeApi.Create(TestOutput, api =>\n            {\n                api.HandleResources<SecretV1, SecretListV1>(secrets, secretWatchSubject);\n            });\n\n            using ServiceProvider serviceProvider = BuildServiceProvider(mockApi);\n\n            IDataProtectionProvider dataProtection = serviceProvider.GetRequiredService<IDataProtectionProvider>();\n            IDataProtector dataProtector = dataProtection.CreateProtector(purpose: \"Test\");\n\n            SecretV1 secretResource;\n            string secretResourceKey = MockKubeApi.GetResourceKey(TestSecretName, TestSecretNamespace);\n\n            Assert.True(\n                secrets.TryGetValue(secretResourceKey, out secretResource)\n            );\n            Assert.NotNull(secretResource);\n            Assert.Empty(secretResource.Data);\n        }\n\n        /// <summary>\n        ///     Verify that the data protector can encrypt (and then decrypt) some data.\n        /// </summary>\n        [Fact]\n        public async Task Can_RoundTrip_Data()\n        {\n            using Subject<SecretV1> secretWatchSubject = new Subject<SecretV1>(); // Needed because the key store always watches for changes.\n\n            ConcurrentDictionary<string, SecretV1> secrets = new ConcurrentDictionary<string, SecretV1>();\n\n            await using MockKubeApi mockApi = MockKubeApi.Create(TestOutput, api =>\n            {\n                api.HandleResources<SecretV1, SecretListV1>(secrets, secretWatchSubject);\n            });\n\n            using ServiceProvider serviceProvider = BuildServiceProvider(mockApi);\n\n            IDataProtectionProvider dataProtection = serviceProvider.GetRequiredService<IDataProtectionProvider>();\n            IDataProtector dataProtector = dataProtection.CreateProtector(purpose: \"Test\");\n\n            SecretV1 secretResource;\n            string secretResourceKey = MockKubeApi.GetResourceKey(TestSecretName, TestSecretNamespace);\n\n            Assert.True(\n                secrets.TryGetValue(secretResourceKey, out secretResource)\n            );\n            Assert.NotNull(secretResource);\n            Assert.Empty(secretResource.Data);\n\n            const string expectedPlainText = \"PlainText\";\n            string protectedData = dataProtector.Protect(expectedPlainText);\n\n            Assert.True(\n                secrets.TryGetValue(secretResourceKey, out secretResource)\n            );\n            Assert.NotNull(secretResource);\n            Assert.NotEmpty(secretResource.Data);\n\n            string actualPlainText = dataProtector.Unprotect(protectedData);\n            Assert.Equal(expectedPlainText, actualPlainText);\n        }\n\n        /// <summary>\n        ///     Build a (client-side) service provider for use in tests.\n        /// </summary>\n        /// <param name=\"mockApi\">\n        ///     The mock Kubernetes API that the client will communicate.\n        /// </param>\n        /// <param name=\"configureDataProtection\">\n        ///     An optional delegate that can be used to customise the data-protection system.\n        /// </param>\n        /// <param name=\"configureServices\">\n        ///     An optional delegate that can be used to configure additional services for dependency-injection.\n        /// </param>\n        /// <returns>\n        ///     The configured service provider.\n        /// </returns>\n        ServiceProvider BuildServiceProvider(MockKubeApi mockApi, Action<IDataProtectionBuilder> configureDataProtection = null, Action<IServiceCollection> configureServices = null)\n        {\n            if (mockApi == null)\n                throw new ArgumentNullException(nameof(mockApi));\n\n            IKubeApiClient testApiClient = KubeApiClient.CreateTestClient(\n                mockApi.CreateClient(),\n                new KubeClientOptions\n                {\n                    ApiEndPoint = mockApi.BaseAddress,\n                    AuthStrategy = KubeAuthStrategy.None,\n                    KubeNamespace = \"default\",\n                    LoggerFactory = MSLoggerFactory.Create(logging => logging.AddTestOutput(TestOutput)),\n                    LogPayloads = true,\n                }\n            );\n\n            var services = new ServiceCollection();\n\n            services.AddSingleton(testApiClient);\n\n            IDataProtectionBuilder dataProtection = services.AddDataProtection()\n                .AddKeyManagementOptions(keyManagement =>\n                {\n                    keyManagement.AutoGenerateKeys = true;\n                })\n                .PersistKeysToKubeSecret(testApiClient, TestSecretName, TestSecretNamespace);\n\n            if (configureDataProtection != null)\n                configureDataProtection(dataProtection);\n\n            if (configureServices != null)\n                configureServices(services);\n\n            return services.BuildServiceProvider(new ServiceProviderOptions\n            {\n                ValidateOnBuild = true,\n                ValidateScopes = true,\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.DataProtection.Tests/KubeClient.Extensions.DataProtection.Tests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n\n    <IsPackable>false</IsPackable>\n    <IsTestProject>true</IsTestProject>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.DataProtection/KubeClient.Extensions.DataProtection.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.DependencyInjection/KubeClient.Extensions.DependencyInjection.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient.TestCommon/KubeClient.TestCommon.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"8.0.8\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"10.0.0\" />\n  </ItemGroup>  \n\n  <Import Project=\"../Common.props\" />\n  <Import Project=\"../TestProject.Common.props\" />\n  <ItemGroup>\n    <PackageReference Update=\"xunit\" Version=\"2.9.3\" />\n  </ItemGroup>\n</Project>\n"
  },
  {
    "path": "test/KubeClient.Extensions.KubeConfig.Tests/Certificates/test-cert-01-key.pem",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAqJ62CZJfUwL/wxDMQ2aekpshKaSTAIj7VnlaMp2AaUrFS4mz\nL186BkoDlB/wVhaM5D7d/DZW+C33Qg2lTrFgUPfvobZX4cLdG/WLS6wbgXWtzbBM\n2lv756MC6BQzYbtHL/MfeniI0gqttVQFwfE/6kBweRl7dVbnXN8rxS6LEsT19L7u\nCEjBcFKXFM4LkZ6pjGmT3sRZH8Azan+4XXHQRWjkcZFZk+G+1K5xm7sZYw1W6sS8\nWb89oqj/N/xyjakejfb1edspvAXWJ2VxTNNDifORCA5LMJV4lLmOta9wdkOx1VIg\nNuH2kumwt4uF1V7D0Jg4g/C1zKm4JYs26UnjOQIDAQABAoIBAQCR70p9XkFCBwZ0\nPMWMT/RNzhUVhWn0vJlKbhyyUb4hYqT+i16ZUUFW0Bfoyvumhj3KDN7yudTrVlz4\nvfaj9L/3U54Bx16n9Y6H9CtqgroLgV269yqMka+i+mI5mcIeg4dI6JIF3OwNXVCZ\n7u5MvA8lHkA5juRa2avDpSKstWuIAadAtk6rAy3BO/rfcXdR6uqmxfzGB35spFdn\nIyAmdSkwV8OYRK4AQgejz4J7L9N05xIn+LFVcFwmz0omuITLjUdnHWK1iYNe4fhr\nEKx0Z7fXQ94Lj2EH5LZwHrh5gU7S0FPx/IC7FZrP5/AFlCiCGgm+/Ye2NJz2WnRL\n4dFT+YVBAoGBANdFMNOd+E94uSmSj8md9a48mGBiF7S20S7rODc8TVAEPAtw18dY\nOOiUnuSB15TANlMOdm6TR4dxRJWzMu27uUOMXAdoOdH7VPH16r+rZ76xdHB9XSs1\n1OIy4GPcKNzvNgtYu3/p9kwz+xpciBB54+/8C1KW8WYAhXHaDXhmAb5/AoGBAMiF\n+HpPXrQ9dXuJ/JWPj5Pkpe2+8quKWz+pQrSTN6Ov4CNiLU12cR+89ZkKWiwm8djT\nOuiKBDvUVBZfcLcil06sg9lnATQKeFCHOpsTpPJBTI2Wi/Mse2ngWDnVSwi2gINO\nzWy0hQWyeLvYk1FwRBuSFI8I9ftUTfdofmgeRvJHAoGAVC/s/nWDDKFr2IRG01SB\nJljwRpFWMAhnGnBHFeLxYV+mk9rXqFAqQVsOINNemf/pvuWjD29tw9xaNClWu350\n36Pewc7S/fnKqK3B1p+T/RGtNejxLNrqnGPFOYh6Op0ah6l1+npnJjoV86NIWxkw\nOURasTvywC9oALSEHBfYisUCgYAyOMuY5pQTlGj+PfsTAle1dMjSGMbyi7563Uul\nqlF/H6eFdStfgVCn4E2qvNsEv+RGp/DTGO4ihfVhfRnf5Dv9KlwDcTbt78leceAN\nwwfG3O/tbk0y5Gssg1HVekRGtF7PhEcS+MtwN9jhQ0byWKnWNeoMQPRKtDyqwHMY\nZKzkNQKBgQC46uw9k4UpFWtmDFBDJCdAClDhRT55UDRbsHC+wv7WmsAxDMR6JkYW\np7bvx8b90ya/Vib5eA7sM9/ddpjWUzkPb0d3vvoxTvTy6aUcKZ5K3vGSkQcOwra+\n7fbeuNuFfsPMyuEYsqF6vWL5V+f1q17qN2f2fF9ptAUQHtvnGQI9ng==\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "test/KubeClient.Extensions.KubeConfig.Tests/Certificates/test-cert-01.pem",
    "content": "-----BEGIN CERTIFICATE-----\nMIIDNDCCAhygAwIBAgIQF6iaRL0toppF+IQ0/s0FuTANBgkqhkiG9w0BAQsFADAU\nMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMjQwODA2MTIwMDQxWhcNMjUwODA1MTQw\nMDAwWjAUMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQConrYJkl9TAv/DEMxDZp6SmyEppJMAiPtWeVoynYBpSsVLibMv\nXzoGSgOUH/BWFozkPt38Nlb4LfdCDaVOsWBQ9++htlfhwt0b9YtLrBuBda3NsEza\nW/vnowLoFDNhu0cv8x96eIjSCq21VAXB8T/qQHB5GXt1Vudc3yvFLosSxPX0vu4I\nSMFwUpcUzguRnqmMaZPexFkfwDNqf7hdcdBFaORxkVmT4b7UrnGbuxljDVbqxLxZ\nvz2iqP83/HKNqR6N9vV52ym8BdYnZXFM00OJ85EIDkswlXiUuY61r3B2Q7HVUiA2\n4faS6bC3i4XVXsPQmDiD8LXMqbglizbpSeM5AgMBAAGjgYEwfzAMBgNVHRMBAf8E\nAjAAMA4GA1UdDwEB/wQEAwIFoDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDATAXBgNV\nHREBAf8EDTALgglsb2NhbGhvc3QwDwYKKwYBBAGCN1QBAQQBAjAdBgNVHQ4EFgQU\nbARC90z7RJxa1gONR556msxuFE4wDQYJKoZIhvcNAQELBQADggEBAJiCpVWx3et1\nKHZFxX2UhcH+V06CQzbn0oDzAkpeNeNPNJoQpNLbgmYddbwxlYUHN7j9QbnuP7I8\njSHl8nLLxRs4B6LaluCkCv7SJow9o7ERuPe0tLWCObSniUxeIO7IUa/H2E6lTSK8\n5UBu9Z2sMhjqJmC6oWw3gRqOX+iERryvhEjGF9JFHqZ/nxhZoYDHFU4UKkkBfxQT\n9U2nTlz+iuIutfQk9FUOHfD2ETcUb7H3E76+qgNF5qEvvNPyOKRsul8WQYTByqEH\n6UUJkBQYu5fGg8nXXr/ZHbtoQxWRuNlerv6XWJYiK7Qk8EYSls4rCfbdOt4Vehz1\nE8aYRKB0+9k=\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "test/KubeClient.Extensions.KubeConfig.Tests/Configurations/valid1.yml",
    "content": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n    server: https:/foo.bar.com/r/projects/1a27585/kubernetes:6443\n  name: Kube8\n- cluster:\n    insecure-skip-tls-verify: true\n    server: https://diddly.do-see-do.net:8080/r/projects/1a7/kubernetes:6443\n  name: daas-demo\n- cluster:\n    insecure-skip-tls-verify: true\n    server: https://localhost:6445\n  name: docker-for-desktop-cluster\n- cluster:\n    certificate-authority: C:\\Users\\tintoy\\.minikube\\ca.crt\n    server: https://123.456.789.1:8443\n  name: minikube\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN3akNDQWFxZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFTTVJBd0RnWURWUVFERXdkcmRXSmwKTFdOaE1CNFhEVEU0TURJd05qQXhNREkwTUZvWERUSTRNREl3TkRBeE1ESTBNRm93RWpFUU1BNEdBMVVFQXhNSAphM1ZpWlMxallUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9CTzlkTjJka2orCnZSTzBvdldkVW5Qd0tPNkl1c2NnWGhrWTE1MGZHdExydWpsMjhkUnFOdHpwZExLVlNhRm1JekJnOGg4bnFmOGwKYUhEVEFqNTdNelRnZkFZUGpQY2tzYVFjWE9wODQ0dzB0SmNQSW0wZ3ZzbHNENzNVQ1MvVnRwWmV1Q1FRbXFXNwpXc2dKNUVXZEhSR292dVpwSVlCN2lxVnJRaGxiRksyU1hxanZHbHhBVGsvV294VUJJSzhKMEZZcTkybXFNUzNqCmREM1B1NmdrOVBXcGxEWTFvNVhIVDJwbnY1UkdvOFpjRURIcFRqckE3RUZDTUZQRWJ5ZzV3RkQ4RitndXpoeWQKUlpWNTBIKzM2U2ZucHBRRUxLTmpTV2NUcG5uSW5zdlFQbU9YdXpJeDVHWGNFblU5NFFhNzVqNGpOS2lhSkVUUwp6QW5iWENFblU3MENBd0VBQWFNak1DRXdEZ1lEVlIwUEFRSC9CQVFEQWdLa01BOEdBMVVkRXdFQi93UUZNQU1CCkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBTW5aUVkzQkJTMFpOQmhqa1Zza2FaWFNMcCtRVkZWeXRFSjIKSno4cStyMmh1d3ZFRGZyTW9ZV2psdUJ3LzNrdjQ1MWVxbHNESDlQTmp4dkd6MGJ3VGxRMk5UQk9zVlVTdmZpagpwd1VyUnh1bDIzcmpDTHdFbnhvR0tUTVVub0hCRDFQQkgrTFpiZTgxSWtXbzlVNEJrNll6NHA4NDZKRjVzZ21wCjdEKy96NjN2Z2t1YkVWNWEybnllV0lGTlFha0xMb3ZkNWZKcFI0aEUxU3lwUWNMYzFSRk9kVTVlUWRoZFdDSTQKUHNDenNTamVTdE5YRTE0NjNDQm8zMmtEQjc3YkdSZTFvY3FXUVg0QnBqM3BmNTkvQlRRK0hzeUo3RE4zcDBFdApVd04zT2h2NkVpdExPQWtVRng5aWRCcEFFQm9qM281TVkva3JFVmlMZ0cvWHIvU3VjOFk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K\n    server: https://100.200.300.400:6443\n  name: rke\ncontexts:\n- context:\n    cluster: Kube8\n    user: Kube8\n  name: Kube8\n- context:\n    cluster: daas-demo\n    user: daas-demo\n  name: daas-demo\n- context:\n    cluster: docker-for-desktop-cluster\n    user: docker-for-desktop\n  name: docker-for-desktop\n- context:\n    cluster: minikube\n    user: minikube\n  name: minikube\n- context:\n    cluster: rke\n    user: rke-admin\n  name: rke\ncurrent-context: docker-for-desktop\npreferences: {}\n# Note: these tokens, certificates, and keys are real (but the cluster that generated them no longer exists).\nusers:\n- name: Kube8\n  user:\n    token: TXktVG9rZW4=\n- name: daas-demo\n  user:\n    token: QW5vdGhlci1Ub2tlbg==\n- name: docker-for-desktop\n  user:\n    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2VENDQWRHZ0F3SUJBZ0lJUXFnWVFuQXB5TXd3RFFZSktvWklodmNOQVFFTEJRQXdFakVRTUE0R0ExVUUKQXhNSGEzVmlaUzFqWVRBZUZ3MHhPREF5TURZd01UQXlOREJhRncweE9UQXlNRFl3TVRBeU5ESmFNQzR4RnpBVgpCZ05WQkFvVERuTjVjM1JsYlRwdFlYTjBaWEp6TVJNd0VRWURWUVFERXdwcmRXSmxMV0ZrYldsdU1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXlkTk16UXBUc0x2T3l6YVB2RzRSRXFqamcrb0oKYmxrWlFnVkQ0bU5Rd1lpMDd3NDVEblRVeUZ6aU1zR1d4UVNsNFZ3RWxaS0duWGpoc0h4d21nNFI0NWY1TFFxaQo5aEFobi83eXFuRzFkOHhndEVnQnNtZGhuMldPbHdGZlNybDBiQU1rSElUb0xQL2J2cDJDbG4yb2pQcy9TK1FJClIrd0YzcVZaYXFXUmdodHlxdHA4RTNSenQ0RE0zNEJVSkNFUC83ZHRWS25HLytibGltTzNXQ29UeGt5TTVEYnIKNjVqRnBZUnRoZUZ6ZWh6djUwdjk1SEQ2MGVvUnh3TmppMTNldHo3OHEwdDcxU2Uwb0hXYUNkWENRLzhSTURwbworY2xud2xnbWZWcHNJUW53NWs0RmZ1RnIvSDFmbEVGK1NkWEs5WjdLNElSNXRLdWs3WElYT2M3eXh3SURBUUFCCm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3RFFZSktvWkkKaHZjTkFRRUxCUUFEZ2dFQkFBVW5YWXNuSG1VQmVuREpUVUVhZEl3YVNFVm1WNU5IYlFCUE5TQW5kU1VSMVEvdwpnUmlMRzFBc3gxazFnSG1ISFVwM004amV3K0NuZnpDUXNLbWE2SEE5NndRQzZHZUt1N0liTUo4TXhLNzJ5dS9JCmNJemJXZEZCZFFNbEhzUlowT0pESnYzVmxqdGNQckxYS3N3a0xMZHJXU1R2M1FXN0liNlZLWU5lc3NnanhVVFoKTFRuL2tnWWN2Z2dxeW8wOUZNOG8vMEpHbVk2TmpXYUgrUmFTNkNFOXNoWEwzaG5EWGdlRGlBR2p5WTIwMmlYYwp3KzdKWnZFaExyajlwYlhxOUxoYStkRGNBTThPK3VQUFJhS3J3Mmw4bVhvakdLSDVmVGJkT2tKZlJCbVRqMjRGCmxlN3NuRHBURlRrMmVnY2xyZTFNeGpnM2FsVzh1QXpsN0NJV1oyWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBeWROTXpRcFRzTHZPeXphUHZHNFJFcWpqZytvSmJsa1pRZ1ZENG1OUXdZaTA3dzQ1CkRuVFV5RnppTXNHV3hRU2w0VndFbFpLR25YamhzSHh3bWc0UjQ1ZjVMUXFpOWhBaG4vN3lxbkcxZDh4Z3RFZ0IKc21kaG4yV09sd0ZmU3JsMGJBTWtISVRvTFAvYnZwMkNsbjJvalBzL1MrUUlSK3dGM3FWWmFxV1JnaHR5cXRwOApFM1J6dDRETTM0QlVKQ0VQLzdkdFZLbkcvK2JsaW1PM1dDb1R4a3lNNURicjY1akZwWVJ0aGVGemVoenY1MHY5CjVIRDYwZW9SeHdOamkxM2V0ejc4cTB0NzFTZTBvSFdhQ2RYQ1EvOFJNRHBvK2NsbndsZ21mVnBzSVFudzVrNEYKZnVGci9IMWZsRUYrU2RYSzlaN0s0SVI1dEt1azdYSVhPYzd5eHdJREFRQUJBb0lCQUYxTG51bjloeGhnaU1ScApjV0pDWXdRRUxEL3pkTzZjbzA5Z2piUGVBeHVqclRnQWxDRjVvazhJbU11cnI1MWRlNnpFVTU0c3dLdVVrSWQ3CnpyVjRJWTdhMXFXYWtDQTg3cjQrSlVEakZXYk9oRGx5Tzg2VGVZNHNiUkNpNHNEeEg3ODZhSHdDZUMwdERSQjkKVVR0dDFQZHV3U0M4eFpNeHFMajJLSEpqSFBOT0dDOHZnL1JtanNTbWVxK3NpeFNuWVI2Z09iL3VyeVdYN3lQbwpVSmw0Y3RCZVBHZUdlcEViNWEzRGRSVmt3SUd2b0dub05IZFh2bmZyTHV6azhrQ3d4dGwvV3VGNTJWY1hnUWhjClhIbXJvaitjbEdMV2c3KzhYYUxMYTI4bUcvV1NOYVBULzRKNmEySDZZOWRITVV5Y2N5Tk5ycWU4ZnA4ZWlRTE8KY3JvSDFYa0NnWUVBMDRrcXB1NEp3YmtkbWNpQlhoTytxMVY1NGk4eWNmVUpJdG5FZFFaSFF3dnV4dDZsd0RmegptTHpvU0hTalVQcWZmRHFFNW8wU3cvSC9YMy80dlNETENIUG82aTFDbklhQlJqTmtjemRuWkZmNEZEMVEvNHc2Cm9sOEtvMlFyY1Y1VlFhclpBVUM5U3Z3WEI4MDZGWmNSVkhNMXFKQ2RrOFRKRFNiOTlCUWd2T3NDZ1lFQTlEK2MKbHhqRldSaHQxZWhoNm1KVXRLdjhsNEg1eHlLZWcwRmN4dGpHMmVHVE1xYk9uSk0zdlBpZk92MFFuMk9MUWpwaApyMllSMVpDSG5EYVpPS1J1bjRVaThmR0VsZG1NU3pDUFdWSURESzNuRUNjWjdacS9wT01OazE1bEU3bXJ5d1pYCmlnNkVKRWJpbU1NNTNuSVRFOTh5SWJ2bERaSnFhOEZKWkRmcmVwVUNnWUVBeXVVcDcrc3BtSktCL2RyL21zaTkKZllFQzR4djUrcXZaRTRCa213cG1sN3grVG1tSCtoS3dwN09wNkxWWFlIakRPRmk0MkpvL2dZcEFNODEvTzRpVQp0WXJYd0tXZzJwbDRyV2psMUUwejhsOGVKK3VZSVVUVGlLSTRoZmV5WTQ3am41VExpQlFjZkN2SHUwZnhpbnZYCnQzUzU1dkN1OCtrd0hsbGtCQlM2UWZrQ2dZRUFzTVg1UjBJZVVzVmplUldmQ0V2eWtuQ0hlQUFTRHhYM00zZnkKOWRlZTA4SjNEb203cjRhOUtIK29mc0Q1YnVKVXY3SVJVU2pHYjVNVEV2UlJJTFdoZXNLWThCS2txdSt3b2hxYgpKVUkrQXNjNkhHNndUVTlhdExPLzk1Q3lCdnl5WVZaTnRSV2NmY1R2NnpBZ2llWjErRVBwdkpDSXpySFJZL3VZCmFuZ3ViYUVDZ1lCRllEZG5QRExpK0dqTzRJWmM5RVgzbG9iS0YxcWJIVFpSRm41Q09Na1VWYWlNMWx1NFArZXAKZDluK0JCVjVhR0U4NjV3ZkhFMVJmd2thZ3ZhNU1seDM5MHdQenFrM1NuaEVhSjFSZ1BybUpxcVIrSUhUN0hMYgo0THFWWTVUNHVEUERCNTJ3MVJtOVJNeDVYalRHUS9yS29sT1pmWjdyTjVDbFo4UXNqeEx1eEE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=\n- name: minikube\n  user:\n    client-certificate: ~/.minikube/client.crt\n    client-key: ~/.minikube/client.key\n- name: rke-admin\n  user:\n    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2VENDQWRHZ0F3SUJBZ0lJUXFnWVFuQXB5TXd3RFFZSktvWklodmNOQVFFTEJRQXdFakVRTUE0R0ExVUUKQXhNSGEzVmlaUzFqWVRBZUZ3MHhPREF5TURZd01UQXlOREJhRncweE9UQXlNRFl3TVRBeU5ESmFNQzR4RnpBVgpCZ05WQkFvVERuTjVjM1JsYlRwdFlYTjBaWEp6TVJNd0VRWURWUVFERXdwcmRXSmxMV0ZrYldsdU1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXlkTk16UXBUc0x2T3l6YVB2RzRSRXFqamcrb0oKYmxrWlFnVkQ0bU5Rd1lpMDd3NDVEblRVeUZ6aU1zR1d4UVNsNFZ3RWxaS0duWGpoc0h4d21nNFI0NWY1TFFxaQo5aEFobi83eXFuRzFkOHhndEVnQnNtZGhuMldPbHdGZlNybDBiQU1rSElUb0xQL2J2cDJDbG4yb2pQcy9TK1FJClIrd0YzcVZaYXFXUmdodHlxdHA4RTNSenQ0RE0zNEJVSkNFUC83ZHRWS25HLytibGltTzNXQ29UeGt5TTVEYnIKNjVqRnBZUnRoZUZ6ZWh6djUwdjk1SEQ2MGVvUnh3TmppMTNldHo3OHEwdDcxU2Uwb0hXYUNkWENRLzhSTURwbworY2xud2xnbWZWcHNJUW53NWs0RmZ1RnIvSDFmbEVGK1NkWEs5WjdLNElSNXRLdWs3WElYT2M3eXh3SURBUUFCCm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3RFFZSktvWkkKaHZjTkFRRUxCUUFEZ2dFQkFBVW5YWXNuSG1VQmVuREpUVUVhZEl3YVNFVm1WNU5IYlFCUE5TQW5kU1VSMVEvdwpnUmlMRzFBc3gxazFnSG1ISFVwM004amV3K0NuZnpDUXNLbWE2SEE5NndRQzZHZUt1N0liTUo4TXhLNzJ5dS9JCmNJemJXZEZCZFFNbEhzUlowT0pESnYzVmxqdGNQckxYS3N3a0xMZHJXU1R2M1FXN0liNlZLWU5lc3NnanhVVFoKTFRuL2tnWWN2Z2dxeW8wOUZNOG8vMEpHbVk2TmpXYUgrUmFTNkNFOXNoWEwzaG5EWGdlRGlBR2p5WTIwMmlYYwp3KzdKWnZFaExyajlwYlhxOUxoYStkRGNBTThPK3VQUFJhS3J3Mmw4bVhvakdLSDVmVGJkT2tKZlJCbVRqMjRGCmxlN3NuRHBURlRrMmVnY2xyZTFNeGpnM2FsVzh1QXpsN0NJV1oyWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBeWROTXpRcFRzTHZPeXphUHZHNFJFcWpqZytvSmJsa1pRZ1ZENG1OUXdZaTA3dzQ1CkRuVFV5RnppTXNHV3hRU2w0VndFbFpLR25YamhzSHh3bWc0UjQ1ZjVMUXFpOWhBaG4vN3lxbkcxZDh4Z3RFZ0IKc21kaG4yV09sd0ZmU3JsMGJBTWtISVRvTFAvYnZwMkNsbjJvalBzL1MrUUlSK3dGM3FWWmFxV1JnaHR5cXRwOApFM1J6dDRETTM0QlVKQ0VQLzdkdFZLbkcvK2JsaW1PM1dDb1R4a3lNNURicjY1akZwWVJ0aGVGemVoenY1MHY5CjVIRDYwZW9SeHdOamkxM2V0ejc4cTB0NzFTZTBvSFdhQ2RYQ1EvOFJNRHBvK2NsbndsZ21mVnBzSVFudzVrNEYKZnVGci9IMWZsRUYrU2RYSzlaN0s0SVI1dEt1azdYSVhPYzd5eHdJREFRQUJBb0lCQUYxTG51bjloeGhnaU1ScApjV0pDWXdRRUxEL3pkTzZjbzA5Z2piUGVBeHVqclRnQWxDRjVvazhJbU11cnI1MWRlNnpFVTU0c3dLdVVrSWQ3CnpyVjRJWTdhMXFXYWtDQTg3cjQrSlVEakZXYk9oRGx5Tzg2VGVZNHNiUkNpNHNEeEg3ODZhSHdDZUMwdERSQjkKVVR0dDFQZHV3U0M4eFpNeHFMajJLSEpqSFBOT0dDOHZnL1JtanNTbWVxK3NpeFNuWVI2Z09iL3VyeVdYN3lQbwpVSmw0Y3RCZVBHZUdlcEViNWEzRGRSVmt3SUd2b0dub05IZFh2bmZyTHV6azhrQ3d4dGwvV3VGNTJWY1hnUWhjClhIbXJvaitjbEdMV2c3KzhYYUxMYTI4bUcvV1NOYVBULzRKNmEySDZZOWRITVV5Y2N5Tk5ycWU4ZnA4ZWlRTE8KY3JvSDFYa0NnWUVBMDRrcXB1NEp3YmtkbWNpQlhoTytxMVY1NGk4eWNmVUpJdG5FZFFaSFF3dnV4dDZsd0RmegptTHpvU0hTalVQcWZmRHFFNW8wU3cvSC9YMy80dlNETENIUG82aTFDbklhQlJqTmtjemRuWkZmNEZEMVEvNHc2Cm9sOEtvMlFyY1Y1VlFhclpBVUM5U3Z3WEI4MDZGWmNSVkhNMXFKQ2RrOFRKRFNiOTlCUWd2T3NDZ1lFQTlEK2MKbHhqRldSaHQxZWhoNm1KVXRLdjhsNEg1eHlLZWcwRmN4dGpHMmVHVE1xYk9uSk0zdlBpZk92MFFuMk9MUWpwaApyMllSMVpDSG5EYVpPS1J1bjRVaThmR0VsZG1NU3pDUFdWSURESzNuRUNjWjdacS9wT01OazE1bEU3bXJ5d1pYCmlnNkVKRWJpbU1NNTNuSVRFOTh5SWJ2bERaSnFhOEZKWkRmcmVwVUNnWUVBeXVVcDcrc3BtSktCL2RyL21zaTkKZllFQzR4djUrcXZaRTRCa213cG1sN3grVG1tSCtoS3dwN09wNkxWWFlIakRPRmk0MkpvL2dZcEFNODEvTzRpVQp0WXJYd0tXZzJwbDRyV2psMUUwejhsOGVKK3VZSVVUVGlLSTRoZmV5WTQ3am41VExpQlFjZkN2SHUwZnhpbnZYCnQzUzU1dkN1OCtrd0hsbGtCQlM2UWZrQ2dZRUFzTVg1UjBJZVVzVmplUldmQ0V2eWtuQ0hlQUFTRHhYM00zZnkKOWRlZTA4SjNEb203cjRhOUtIK29mc0Q1YnVKVXY3SVJVU2pHYjVNVEV2UlJJTFdoZXNLWThCS2txdSt3b2hxYgpKVUkrQXNjNkhHNndUVTlhdExPLzk1Q3lCdnl5WVZaTnRSV2NmY1R2NnpBZ2llWjErRVBwdkpDSXpySFJZL3VZCmFuZ3ViYUVDZ1lCRllEZG5QRExpK0dqTzRJWmM5RVgzbG9iS0YxcWJIVFpSRm41Q09Na1VWYWlNMWx1NFArZXAKZDluK0JCVjVhR0U4NjV3ZkhFMVJmd2thZ3ZhNU1seDM5MHdQenFrM1NuaEVhSjFSZ1BybUpxcVIrSUhUN0hMYgo0THFWWTVUNHVEUERCNTJ3MVJtOVJNeDVYalRHUS9yS29sT1pmWjdyTjVDbFo4UXNqeEx1eEE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=\n- name: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster\n  user:\n    exec:\n      apiVersion: client.authentication.k8s.io/v1alpha1\n      args:\n        - --region\n        - us-east-1\n        - eks\n        - get-token\n        - --cluster-name\n        - my-cluster\n      command: aws\n      env:\n        - name: AWS_PROFILE\n          value: my-company\n"
  },
  {
    "path": "test/KubeClient.Extensions.KubeConfig.Tests/CryptoHelperTests.cs",
    "content": "﻿using Org.BouncyCastle.Crypto;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing Xunit;\nusing Xunit.Abstractions;\n\nusing BCX509Certificate = Org.BouncyCastle.X509.X509Certificate;\nusing X509Certificate2 = System.Security.Cryptography.X509Certificates.X509Certificate2;\n\nnamespace KubeClient.Extensions.KubeConfig.Tests\n{\n    using KubeClient.Extensions.KubeConfig.Models;\n    using System.Linq;\n    using System.Security.Cryptography.X509Certificates;\n    using System.Text;\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests for <see cref=\"CryptoHelper\"/>.\n    /// </summary>\n    public class CryptoHelperTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"CryptoHelper\"/> test-suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public CryptoHelperTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that <see cref=\"CryptoHelper\"/> can load a native X509Certificate2 via PFX from the contents of PEM blocks.\n        /// </summary>\n        [Fact(DisplayName = \"Can load certificate via PFX from PEM\")]\n        public void CanBuildPfx()\n        {\n            FileInfo configFile = new FileInfo(\n                Path.Combine(\"Configurations\", \"valid1.yml\")\n            );\n\n            K8sConfig kubeConfig = K8sConfig.Load(configFile);\n            UserIdentity targetUserIdentity = kubeConfig.UserIdentities.FirstOrDefault(userIdentity => userIdentity.Name == \"docker-for-desktop\");\n            Assert.NotNull(targetUserIdentity);\n            Assert.NotNull(targetUserIdentity.Config);\n            Assert.NotNull(targetUserIdentity.Config.ClientCertificateData);\n            Assert.NotNull(targetUserIdentity.Config.ClientKeyData);\n\n            string certificatePem = Encoding.ASCII.GetString(\n                Convert.FromBase64String(targetUserIdentity.Config.ClientCertificateData)\n            );\n            string keyPem = Encoding.ASCII.GetString(\n                Convert.FromBase64String(targetUserIdentity.Config.ClientKeyData)\n            );\n\n            string pfxPassword = \"test_password\";\n\n            byte[] pfxData = CryptoHelper.BuildPfx(certificatePem, keyPem, pfxPassword);\n            Assert.NotNull(pfxData);\n            Assert.NotEmpty(pfxData);\n\n            X509Certificate2 nativeCertificate;\n\n#if !NET9_0_OR_GREATER\n    nativeCertificate = new X509Certificate2(pfxData, pfxPassword, X509KeyStorageFlags.EphemeralKeySet);\n#else // !NET9_0_OR_GREATER\n            nativeCertificate = X509CertificateLoader.LoadPkcs12(pfxData, pfxPassword, X509KeyStorageFlags.EphemeralKeySet);\n#endif // !NET9_0_OR_GREATER\n\n            using (nativeCertificate)\n            {\n                Assert.True(nativeCertificate.HasPrivateKey);\n            }\n        }\n\n        /// <summary>\n        ///     Verify that <see cref=\"CryptoHelper\"/> can enumerate the contents of PEM blocks.\n        /// </summary>\n        /// <param name=\"pemBaseName\">\n        ///     The base name for the test's PEM files.\n        /// </param>\n        /// <param name=\"pemPassword\">\n        ///     The password for the test's PEM files.\n        /// </param>\n        /// <param name=\"expectedCertificateThumbprints\">\n        ///     The thumbprints of certificates that are expected to be found in the test's PEM files.\n        /// </param>\n        /// <param name=\"expectedKeyCount\">\n        ///     The number of asymmetric crypto key-pairs that are expected to be contained in the test's PEM files.\n        /// </param>\n        [Theory(DisplayName = \"Can enumerate certificate PEM contents \")]\n        [InlineData(\"test-cert-01\", \"simple_password\", new string[] { \"5374FA8B5EF2B321059442791FE3CF091BB175BF\" }, 1)]\n        public void CanEnumerateCertificatePemContents(string pemBaseName, string pemPassword, string[] expectedCertificateThumbprints, int expectedKeyCount)\n        {\n            string certPemFilePath = Path.Combine(\"Certificates\", $\"{pemBaseName}.pem\");\n            string certPemData = File.ReadAllText(certPemFilePath);\n            \n            string keyPemFilePath = Path.Combine(\"Certificates\", $\"{pemBaseName}-key.pem\");\n            string keyPemData = File.ReadAllText(keyPemFilePath);\n\n            HashSet<string> remainingCertificateThumbprints = new HashSet<string>(expectedCertificateThumbprints);\n            int remainingKeyCount = expectedKeyCount;\n\n            foreach (object pemObject in CryptoHelper.EnumeratePemObjects(pemPassword, certPemData, keyPemData))\n            {\n                if (pemObject is BCX509Certificate certificate)\n                {\n                    string thumbprint = CryptoHelper.GetThumbprint(certificate);\n                    TestOutput.WriteLine($\"Found certificate in PEM data: '{thumbprint}'\");\n\n                    remainingCertificateThumbprints.Remove(thumbprint);\n                }\n                else if (pemObject is AsymmetricCipherKeyPair keyPair)\n                {\n                    TestOutput.WriteLine($\"Found asymmetric key-pair in PEM data: Public='{keyPair.Public}', Private='{keyPair.Private}'\");\n\n                    --remainingKeyCount;\n                }\n                else\n                    throw new Exception($\"Unexpected PEM object: '{pemObject}'\");\n            }\n\n            Assert.Empty(remainingCertificateThumbprints);\n            Assert.Equal(0, remainingKeyCount);\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.KubeConfig.Tests/DeserializationTests.cs",
    "content": "using System.IO;\nusing System.Linq;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Extensions.KubeConfig.Tests\n{\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests for deserialisation of Kubernetes client configuration.\n    /// </summary>\n    public class DeserializationTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new config-deserialisation test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public DeserializationTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that the configuration loader can parse valid configuration from YAML. \n        /// </summary>\n        [InlineData(\"valid1\")]\n        [Theory(DisplayName = \"Can load valid configuration \")]\n        public void CanLoadValidConfig(string configName)\n        {\n            FileInfo configFile = new FileInfo(\n                Path.Combine(\"Configurations\", $\"{configName}.yml\")\n            );\n\n            K8sConfig kubeConfig = K8sConfig.Load(configFile);\n            Assert.Equal(\"v1\", kubeConfig.ApiVersion);\n            Assert.Equal(\"Config\", kubeConfig.Kind);\n            Assert.Equal(\"docker-for-desktop\", kubeConfig.CurrentContextName);\n\n            Assert.Equal(5, kubeConfig.Contexts.Count);\n            Assert.Equal(5, kubeConfig.Clusters.Count);\n            Assert.Equal(6, kubeConfig.UserIdentities.Count);\n        }\n\n        [InlineData(\"valid1\")]\n        [Theory(DisplayName = \"Can correctly deserialize credential plugin configuration\")]\n        public void CanDeserializeCredentialPluginConfiguration(string configName)\n        {\n            FileInfo configFile = new FileInfo(\n                Path.Combine(\"Configurations\", $\"{configName}.yml\")\n            );\n\n            K8sConfig kubeConfig = K8sConfig.Load(configFile);\n            var awsUser = kubeConfig.UserIdentities.FirstOrDefault(\n                user => user.Name == \"arn:aws:eks:us-east-1:123456789012:cluster/my-cluster\");\n            Assert.Equal(\"aws\", awsUser?.Config?.Exec?.Command);\n            Assert.Equal(6, awsUser?.Config?.Exec?.Arguments?.Count);\n            Assert.Equal(1, awsUser?.Config?.Exec?.EnvironmentVariables.Count);\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.KubeConfig.Tests/K8sConfigLocationTests.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing KubeClient.TestCommon;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Extensions.KubeConfig.Tests\n{\n    //TODO: A better pattern here would probably be to use https://github.com/AArnott/Xunit.SkippableFact so tests for the wrong OS get marked as Inconclusive?\n    // Not sure how CI is set up and if that would cause build failures\n    public class K8sConfigLocationTests : TestBase\n    {\n        const string UserProfile = @\"C:\\Users\\me\";\n        const string HomeDrive = @\"Z:\";\n        const string HomePath = @\"\\\";\n        const string Home = @\"G:\\\";\n\n        [Fact]\n        public void LinuxUsesHomeEnvironmentVariable()\n        {\n            if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))\n            {\n                Environment.SetEnvironmentVariable(\"USERPROFILE\", UserProfile);\n                var home = Environment.GetEnvironmentVariable(\"HOME\");\n                var config = K8sConfig.Locate();\n                Assert.Equal(Path.Combine(home, \".kube\", \"config\"), config);\n            }\n        }\n\n        [Fact]\n        public void WindowsUsesHomeFirst()\n        {\n            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))\n            {\n                Environment.SetEnvironmentVariable(\"USERPROFILE\", UserProfile);\n                Environment.SetEnvironmentVariable(\"HOMEDRIVE\", HomeDrive);\n                Environment.SetEnvironmentVariable(\"HOMEPATH\", HomePath);\n                Environment.SetEnvironmentVariable(\"HOME\", Home);\n                var config = K8sConfig.Locate();\n                Assert.Equal(Path.Combine(Home, \".kube\", \"config\"), config);\n            }\n        }\n\n        [Fact]\n        public void WindowsUsesHomeDriveAndPathBeforeUserProfile()\n        {\n            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))\n            {\n                Environment.SetEnvironmentVariable(\"HOME\", String.Empty);\n\n                Environment.SetEnvironmentVariable(\"USERPROFILE\", UserProfile);\n                Environment.SetEnvironmentVariable(\"HOMEDRIVE\", HomeDrive);\n                Environment.SetEnvironmentVariable(\"HOMEPATH\", HomePath);\n                var config = K8sConfig.Locate();\n                Assert.Equal(Path.Combine(HomeDrive + HomePath, \".kube\", \"config\"), config);\n            }\n        }\n\n        [Fact]\n        public void WindowsUsesUserProfileAsLastOption()\n        {\n            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))\n            {\n                Environment.SetEnvironmentVariable(\"HOME\", String.Empty);\n                Environment.SetEnvironmentVariable(\"HOMEDRIVE\", String.Empty);\n                Environment.SetEnvironmentVariable(\"HOMEPATH\", String.Empty);\n\n                Environment.SetEnvironmentVariable(\"USERPROFILE\", UserProfile);\n                var config = K8sConfig.Locate();\n                Assert.Equal(Path.Combine(UserProfile, \".kube\", \"config\"), config);\n            }\n        }\n\n        public K8sConfigLocationTests(ITestOutputHelper testOutput) : base(testOutput)\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.KubeConfig.Tests/KubeClient.Extensions.KubeConfig.Tests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <Content Include=\"./Configurations/*.yml\" CopyToOutputDirectory=\"Always\" CopyToPublishDirectory=\"Always\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <None Remove=\"Certificates/test-cert-01-key.pem\" />\n    <None Remove=\"Certificates/test-cert-01.pem\" />\n    <None Remove=\"Certificates/test-cert-01.pfx\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <Content Include=\"Certificates/test-cert-01-key.pem\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Content>\n    <Content Include=\"Certificates/test-cert-01.pem\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Content>\n    <Content Include=\"Certificates/test-cert-01.pfx\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Content>\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.DependencyInjection/KubeClient.Extensions.DependencyInjection.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj\" />\n\n    <ProjectReference Include=\"../KubeClient.TestCommon/KubeClient.TestCommon.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Options\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n  <Import Project=\"../TestProject.Common.props\" />\n  <ItemGroup>\n    <PackageReference Update=\"xunit\" Version=\"2.9.3\" />\n  </ItemGroup>\n</Project>\n"
  },
  {
    "path": "test/KubeClient.Extensions.KubeConfig.Tests/OptionsTests.cs",
    "content": "using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Options;\nusing System.IO;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Extensions.KubeConfig.Tests\n{\n    using Models;\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests for population of KubeClientOptions from Kubernetes client configuration.\n    /// </summary>\n    public class OptionsTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new options-population test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public OptionsTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that the configuration loader can parse valid configuration from YAML. \n        /// </summary>\n        [InlineData(\"valid1\", \"rke\")]\n        [Theory(DisplayName = \"Can resolve valid options from client configuration \")]\n        public void CanLoadValidConfig(string configName, string kubeContextName)\n        {\n            ServiceCollection services = new ServiceCollection();\n            services.AddOptions();\n            services.AddKubeClientOptionsFromKubeConfig(\n                kubeConfigFileName: Path.Combine(\"Configurations\", $\"{configName}.yml\"),\n                kubeContextName: kubeContextName\n            );\n\n            using (ServiceProvider serviceProvider = services.BuildServiceProvider())\n            {\n                IOptions<KubeClientOptions> options = serviceProvider.GetRequiredService<IOptions<KubeClientOptions>>();\n                Assert.NotNull(options);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/KubeClient.Extensions.WebSockets.Tests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n\n    <IsPackable>false</IsPackable>\n    <IsTestProject>true</IsTestProject>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.DependencyInjection/KubeClient.Extensions.DependencyInjection.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.WebSockets/KubeClient.Extensions.WebSockets.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.KubeConfig/KubeClient.Extensions.KubeConfig.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"8.0.8\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n  <Import Project=\"../TestProject.Common.props\" />\n</Project>\n"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/Logging/TestOutputLogger.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Reactive.Disposables;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Extensions.WebSockets.Tests.Logging\n{\n    /// <summary>\n    /// \tAn implementation of <see cref=\"ILogger\"/> that writes to the output of the current Xunit test.\n    /// </summary>\n    sealed class TestOutputLogger\n        : ILogger\n    {\n        /// <summary>\n        /// \tCreate a new <see cref=\"TestOutputLogger\"/>.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     The output for the current test.\n        /// </param>\n        /// <param name=\"loggerCategory\">\n        ///     The logger's category name.\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        /// \tThe logger's minimum log level.\n        /// </param>\n        public TestOutputLogger(ITestOutputHelper testOutput, string loggerCategory, LogLevel minLogLevel)\n        {\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n\n            if (String.IsNullOrWhiteSpace(loggerCategory))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'loggerCategory'.\", nameof(loggerCategory));\n            \n            TestOutput = testOutput;\n            LoggerCategory = loggerCategory;\n            MinLogLevel = minLogLevel;\n        }\n\n        /// <summary>\n        ///     The output for the current test.\n        /// </summary>\n        public ITestOutputHelper TestOutput { get; }\n\n        /// <summary>\n        ///     The logger's category name.\n        /// </summary>\n        public string LoggerCategory { get; }\n\n        /// <summary>\n        /// \tThe logger's minimum log level.\n        /// </summary>\n        public LogLevel MinLogLevel { get; }\n\n        /// <summary>\n        /// \tEmit a log entry.\n        /// </summary>\n        /// <param name=\"level\">\n        /// \tThe log entry's level.\n        /// </param>\n        /// <param name=\"eventId\">\n        /// \tThe log entry's associated event Id.\n        /// </param>\n        /// <param name=\"state\">\n        /// \tThe log entry to be written. Can be also an object.\n        /// </param>\n        /// <param name=\"exception\">\n        /// \tThe exception (if any) related to the log entry.\n        /// </param>\n        /// <param name=\"formatter\">\n        /// \tA function that creates a <c>string</c> log message from the <paramref name=\"state\"/> and <paramref name=\"exception\"/>.\n        /// </param>\n        public void Log<TState>(LogLevel level, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)\n        {\n            if (formatter == null)\n                throw new ArgumentNullException(nameof(formatter));\n\n            TestOutput.WriteLine(String.Format(\"[{0}] {1}: {2}\",\n                level,\n                LoggerCategory,\n                formatter(state, exception)\n            ));\n        }\n\n        /// <summary>\n        /// \tCheck if the given <paramref name=\"logLevel\"/> is enabled.\n        /// </summary>\n        /// <param name=\"logLevel\">\n        /// \tThe level to be checked.\n        /// </param>\n        /// <returns>\n        /// \t<c>true</c> if enabled; otherwise, <c>false</c>.\n        /// </returns>\n        public bool IsEnabled(LogLevel logLevel) => logLevel >= MinLogLevel;\n\n        /// <summary>\n        /// \tBegin a logical operation scope.\n        /// </summary>\n        /// <param name=\"state\">\n        /// \tAn identifier for the scope.\n        /// </param>\n        /// <returns>\n        /// \tAn <see cref=\"IDisposable\"/> that ends the logical operation scope when disposed.\n        /// </returns>\n        public IDisposable BeginScope<TState>(TState state) => Disposable.Empty;\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/Logging/TestOutputLoggerProvider.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Extensions.WebSockets.Tests.Logging\n{\n    /// <summary>\n    ///     Logger provider for logging to Xunit test output.\n    /// </summary>\n    sealed class TestOutputLoggerProvider\n        : ILoggerProvider\n    {\n        /// <summary>\n        /// \tCreate a new <see cref=\"TestOutputLoggerProvider\"/>.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     The output for the current test.\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        /// \tThe logger's minimum log level.\n        /// </param>\n        public TestOutputLoggerProvider(ITestOutputHelper testOutput, LogLevel minLogLevel)\n        {\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n            \n            TestOutput = testOutput;\n            MinLogLevel = minLogLevel;\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the logger provider.\n        /// </summary>\n        public void Dispose()\n        {\n        }\n\n        /// <summary>\n        ///     The output for the current test.\n        /// </summary>\n        ITestOutputHelper TestOutput { get; }\n\n        /// <summary>\n        /// \tThe logger's minimum log level.\n        /// </summary>\n        public LogLevel MinLogLevel { get; }\n\n        /// <summary>\n        ///     Create a new logger.\n        /// </summary>\n        /// <param name=\"categoryName\">\n        ///     The logger category name.\n        /// </param>\n        /// <returns>\n        ///     The logger, as an <see cref=\"ILogger\"/>.\n        /// </returns>\n        public ILogger CreateLogger(string categoryName) => new TestOutputLogger(TestOutput, categoryName, MinLogLevel);\n    }\n}"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/Logging/TestOutputLoggingExtensions.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Extensions.WebSockets.Tests.Logging\n{\n    /// <summary>\n    ///     Extension methods for logging to Xunit text output.\n    /// </summary>\n    public static class TestOutputLoggingExtensions\n    {\n        /// <summary>\n        ///     Log to test output.\n        /// </summary>\n        /// <param name=\"logging\">\n        ///     The global logging configuration.\n        /// </param>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        ///     The minimum level to log at.\n        /// </param>\n        public static void AddTestOutput(this ILoggingBuilder logging, ITestOutputHelper testOutput, LogLevel minLogLevel = LogLevel.Information)\n        {\n            if (logging == null)\n                throw new ArgumentNullException(nameof(logging));\n\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n            \n            logging.AddProvider(\n                new TestOutputLoggerProvider(testOutput, minLogLevel)\n            );\n        }\n\n        /// <summary>\n        ///     Log to test output.\n        /// </summary>\n        /// <param name=\"loggers\">\n        ///     The logger factory.\n        /// </param>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        ///     The minimum level to log at.\n        /// </param>\n        /// <returns>\n        ///     The logger factory (enables inline use / method-chaining).\n        /// </returns>\n        public static ILoggerFactory AddTestOutput(this ILoggerFactory loggers, ITestOutputHelper testOutput, LogLevel minLogLevel = LogLevel.Information)\n        {\n            if (loggers == null)\n                throw new ArgumentNullException(nameof(loggers));\n            \n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n            \n            loggers.AddProvider(\n                new TestOutputLoggerProvider(testOutput, minLogLevel)\n            );\n\n            return loggers;\n        }\n    }\n}"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/PodExecTests.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Net.WebSockets;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Extensions.WebSockets.Tests\n{\n    /// <summary>\n    ///     Tests for <see cref=\"KubeApiClient\"/>'s exec-in-pod functionality.\n    /// </summary>\n    public class PodExecTests\n        : WebSocketTestBase\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> exec-in-pod test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public PodExecTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that the client can request execution of a command in a pod's default container, over a raw WebSocket connection, with only the STDOUT stream enabled.\n        /// </summary>\n        [Fact(DisplayName = \"Can exec in pod's default container, raw WebSocket, STDOUT only\")]\n        public async Task Exec_DefaultContainer_Raw_StdOut()\n        {\n            const string expectedOutput = \"This is text sent to STDOUT.\";\n\n            TestTimeout(\n                TimeSpan.FromSeconds(5)\n            );\n            await Host.StartAsync(TestCancellation);\n\n            using (KubeApiClient client = CreateTestClient())\n            {\n                WebSocket clientSocket = await client.PodsV1().ExecAndConnectRaw(\n                    podName: \"pod1\",\n                    command: \"/bin/bash\",\n                    stdin: true,\n                    stdout: true,\n                    stderr: true\n                );\n                Assert.Equal(K8sChannelProtocol.V1, clientSocket.SubProtocol); // For WebSockets, the Kubernetes API defaults to the binary channel (v1) protocol.\n\n                using (clientSocket)\n                {\n                    Log.LogInformation(\"Waiting for server-side WebSocket.\");\n\n                    WebSocket serverSocket = await WebSocketTestAdapter.AcceptedPodExecV1Connection;\n\n                    int bytesSent = await SendMultiplexed(serverSocket, K8sChannel.StdOut, expectedOutput);\n                    Log.LogInformation(\"Sent {ByteCount} bytes to server socket; receiving from client socket...\", bytesSent);\n\n                    (string receivedText, byte streamIndex, int bytesReceived) = await ReceiveTextMultiplexed(clientSocket);\n                    Log.LogInformation(\"Received {ByteCount} bytes from client socket ('{ReceivedText}', stream {StreamIndex}).\", bytesReceived, receivedText, streamIndex);\n\n                    Assert.Equal(K8sChannel.StdOut, streamIndex);\n                    Assert.Equal(expectedOutput, receivedText);\n\n                    await Disconnect(clientSocket, serverSocket);\n                    \n                    WebSocketTestAdapter.Done();\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Verify that the client can request execution of a command in a pod's default container, multiplexed, with all streams enabled.\n        /// </summary>\n        [Fact(DisplayName = \"Can exec in pod's default container, multiplexed, all streams\")]\n        public async Task Exec_DefaultContainer_Multiplexed_AllStreams()\n        {\n            const string expectedPrompt = \"/root # \";\n            const string expectedCommand = \"ls -l /root\";\n\n            TestTimeout(\n                TimeSpan.FromSeconds(5)\n            );\n            await Host.StartAsync(TestCancellation);\n\n            using (KubeApiClient client = CreateTestClient())\n            {\n                K8sMultiplexer multiplexer = await client.PodsV1().ExecAndConnect(\n                    podName: \"pod1\",\n                    command: \"/bin/bash\",\n                    stdin: true,\n                    stdout: true,\n                    stderr: true\n                );\n\n                using (multiplexer)\n                {\n                    Stream stdin = multiplexer.GetStdIn();\n                    Stream stdout = multiplexer.GetStdOut();\n\n                    Log.LogInformation(\"Waiting for server-side WebSocket.\");\n\n                    WebSocket serverSocket = await WebSocketTestAdapter.AcceptedPodExecV1Connection;\n\n                    Log.LogInformation(\"Server sends prompt.\");\n                    await SendMultiplexed(serverSocket, K8sChannel.StdOut, expectedPrompt);\n                    Log.LogInformation(\"Server sent prompt.\");\n\n                    Log.LogInformation(\"Client expects prompt.\");\n                    byte[] receiveBuffer = new byte[2048];\n                    int bytesReceived = await stdout.ReadAsync(receiveBuffer, 0, receiveBuffer.Length, TestCancellation);\n\n                    string prompt = Encoding.ASCII.GetString(receiveBuffer, 0, bytesReceived);\n                    Assert.Equal(expectedPrompt, prompt);\n                    Log.LogInformation(\"Client got expected prompt.\");\n                    \n                    Log.LogInformation(\"Client sends command.\");\n                    byte[] sendBuffer = Encoding.ASCII.GetBytes(expectedCommand);\n                    await stdin.WriteAsync(sendBuffer, 0, sendBuffer.Length, TestCancellation);\n                    Log.LogInformation(\"Client sent command.\");\n\n                    Log.LogInformation(\"Server expects command.\");\n                    (string command, byte streamIndex, int totalBytes) = await ReceiveTextMultiplexed(serverSocket);\n                    Assert.Equal(K8sChannel.StdIn, streamIndex);\n\n                    Assert.Equal(expectedCommand, command);\n                    Log.LogInformation(\"Server got expected command.\");\n\n                    Task closeServerSocket = WaitForClose(serverSocket, socketType: \"server\");\n\n                    Log.LogInformation(\"Close enough; we're done.\");\n                    await multiplexer.Shutdown(TestCancellation);\n\n                    await closeServerSocket;\n                    \n                    WebSocketTestAdapter.Done();\n                }\n            }\n        }\n    }\n}\n\n"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/Server/Controllers/PodExecController.cs",
    "content": "using Microsoft.AspNetCore.Mvc;\nusing System;\nusing System.Net.WebSockets;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Extensions.WebSockets.Tests.Server.Controllers\n{\n    /// <summary>\n    ///     Controller for the mock Kubernetes exec-in-pod API.\n    /// </summary>\n    [Route(\"api/v1\")]\n    public class PodExecController\n        : Controller\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"PodExecController\"/>.\n        /// </summary>\n        /// <param name=\"webSocketTestAdapter\">\n        ///     The adapter used to capture sockets accepted by the test server and provide them to the calling test.\n        /// </param>\n        public PodExecController(WebSocketTestAdapter webSocketTestAdapter)\n        {\n            if (webSocketTestAdapter == null)\n                throw new ArgumentNullException(nameof(webSocketTestAdapter));\n            \n            WebSocketTestAdapter = webSocketTestAdapter;\n        }\n\n        /// <summary>\n        ///     The adapter used to capture sockets accepted by the test server and provide them to the calling test.\n        /// </summary>\n        WebSocketTestAdapter WebSocketTestAdapter { get; }\n\n        /// <summary>\n        ///     Mock Kubernetes API: exec-in-pod.\n        /// </summary>\n        /// <param name=\"kubeNamespace\">\n        ///     The target pod's containing namespace.\n        /// </param>\n        /// <param name=\"podName\">\n        ///     The target pod's name.\n        /// </param>\n        [Route(\"namespaces/{kubeNamespace}/pods/{podName}/exec\")]\n        public async Task<IActionResult> Exec(string kubeNamespace, string podName)\n        {\n            if (!HttpContext.WebSockets.IsWebSocketRequest)\n                return BadRequest(\"Exec requires WebSockets\");\n\n            WebSocket webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(\n                subProtocol: K8sChannelProtocol.V1\n            );\n\n            WebSocketTestAdapter.AcceptedPodExecV1Connection.AcceptServerSocket(webSocket);\n\n            await WebSocketTestAdapter.TestComplete;\n\n            return Ok();\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/Server/Controllers/PodPortForwardController.cs",
    "content": "using Microsoft.AspNetCore.Mvc;\nusing System;\nusing System.Collections.Generic;\nusing System.Net.WebSockets;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Extensions.WebSockets.Tests.Server.Controllers\n{\n    /// <summary>\n    ///     Controller for the mock Kubernetes pod-port-forward API.\n    /// </summary>\n    [Route(\"api/v1\")]\n    public class PodPortForwardController\n        : Controller\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"PodPortForwardController\"/>.\n        /// </summary>\n        /// <param name=\"webSocketTestAdapter\">\n        ///     The adapter used to capture sockets accepted by the test server and provide them to the calling test.\n        /// </param>\n        public PodPortForwardController(WebSocketTestAdapter webSocketTestAdapter)\n        {\n            if (webSocketTestAdapter == null)\n                throw new ArgumentNullException(nameof(webSocketTestAdapter));\n\n            WebSocketTestAdapter = webSocketTestAdapter;\n        }\n\n        /// <summary>\n        ///     The adapter used to capture sockets accepted by the test server and provide them to the calling test.\n        /// </summary>\n        WebSocketTestAdapter WebSocketTestAdapter { get; }\n\n        /// <summary>\n        ///     Mock Kubernetes API: port-forward for pod.\n        /// </summary>\n        /// <param name=\"kubeNamespace\">\n        ///     The target pod's containing namespace.\n        /// </param>\n        /// <param name=\"podName\">\n        ///     The target pod's name.\n        /// </param>\n        /// <param name=\"ports\">\n        ///     The port(s) to forward to the pod.\n        /// </param>\n        [Route(\"namespaces/{kubeNamespace}/pods/{podName}/portforward\")]\n        public async Task<IActionResult> Exec(string kubeNamespace, string podName, IEnumerable<string> ports)\n        {\n            if (!HttpContext.WebSockets.IsWebSocketRequest)\n                return BadRequest(\"PortForward requires WebSockets\");\n\n            WebSocket webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(\n                subProtocol: K8sChannelProtocol.V1\n            );\n\n            WebSocketTestAdapter.AcceptedPodPortForwardV1Connection.AcceptServerSocket(webSocket);\n\n            await WebSocketTestAdapter.TestComplete;\n\n            return Ok();\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/Server/Startup.cs",
    "content": "using Microsoft.AspNetCore.Builder;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing System;\n\nnamespace KubeClient.Extensions.WebSockets.Tests.Server\n{\n    /// <summary>\n    ///     Startup logic for the KubeClient WebSockets test server.\n    /// </summary>\n    public class Startup\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"Startup\"/>.\n        /// </summary>\n        public Startup()\n        {\n        }\n\n        /// <summary>\n        ///     Configure application services.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        public void ConfigureServices(IServiceCollection services)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n            \n            services.AddLogging(logging =>\n            {\n                logging.ClearProviders(); // Logger provider will be added by the calling test.\n            });\n            services.AddMvc(mvc =>\n            {\n                mvc.EnableEndpointRouting = true;\n            });\n        }\n\n        /// <summary>\n        ///     Configure the application pipeline.\n        /// </summary>\n        /// <param name=\"app\">\n        ///     The application pipeline builder.\n        /// </param>\n        public void Configure(IApplicationBuilder app)\n        {\n            app.UseWebSockets(new WebSocketOptions\n            {\n                KeepAliveInterval = TimeSpan.FromSeconds(5),\n            });\n\n            app.UseRouting();\n            app.UseEndpoints(endpoints =>\n            {\n                endpoints.MapControllers();\n                endpoints.MapDefaultControllerRoute();\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/Server/WebSocketTestAdapter.cs",
    "content": "using System;\nusing System.Net.WebSockets;\nusing System.Runtime.CompilerServices;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Extensions.WebSockets.Tests.Server\n{\n    /// <summary>\n    ///     Adapter used to capture WebSockets accepted by the test server and provide them to calling test.\n    /// </summary>\n    /// <remarks>\n    ///     Each AcceptedXXXConnection property returns an awaitable object that yields a the server-side WebSocket once a connection has been accepted.\n    ///\n    ///     All server-side WebSockets will be closed when <see cref=\"Done\"/> is called.\n    /// </remarks>\n    public class WebSocketTestAdapter\n    {\n        /// <summary>\n        ///     Completion source for the <see cref=\"TestComplete\"/> task.\n        /// </summary>\n        readonly TaskCompletionSource<object> _testCompletion = new TaskCompletionSource<object>();\n\n        /// <summary>\n        ///     A <see cref=\"Task\"/> that completes when the test is complete (providing <see cref=\"Done\"/> is called).\n        /// </summary>\n        public Task TestComplete => _testCompletion.Task;\n\n        /// <summary>\n        ///     <c>await</c> server-side acceptance of a WebSocket connection for the exec-in-pod (v1) API.\n        /// </summary>\n        public ServerSocketAcceptance AcceptedPodExecV1Connection { get; } = new ServerSocketAcceptance();\n\n        /// <summary>\n        ///     <c>await</c> server-side acceptance of a WebSocket connection for the pod-port-forward (v1) API.\n        /// </summary>\n        public ServerSocketAcceptance AcceptedPodPortForwardV1Connection { get; } = new ServerSocketAcceptance();\n\n        /// <summary>\n        ///     Mark the current test as complete, closing all server-side sockets.\n        /// </summary>\n        public void Done() => _testCompletion.SetResult(true);\n\n        /// <summary>\n        ///     An object that enables awaiting server-side acceptance of a WebSocket connection.\n        /// </summary>\n        /// <remarks>\n        ///     Simply <c>await</c> this object to wait for the server socket to be accepted.\n        /// </remarks>\n        public class ServerSocketAcceptance\n        {\n            /// <summary>\n            ///     Completion source for the <see cref=\"ServerSocketAccepted\"/> task.\n            /// </summary>\n            readonly TaskCompletionSource<WebSocket> _completion = new TaskCompletionSource<WebSocket>();\n\n            /// <summary>\n            ///     A <see cref=\"Task\"/> that completes when the server accepts a WebSocket connection (i.e. when <see cref=\"AcceptServerSocket\"/> or <see cref=\"RejectServerSocket\"/> is called).\n            /// </summary>\n            public Task<WebSocket> Task => _completion.Task;\n\n            /// <summary>\n            ///     Notify the calling test that the server has accepted a WebSocket connection.\n            /// </summary>\n            /// <param name=\"serverSocket\">\n            ///     The server-side <see cref=\"WebSocket\"/>.\n            /// </param>\n            public void AcceptServerSocket(WebSocket serverSocket)\n            {\n                if (serverSocket == null)\n                    throw new ArgumentNullException(nameof(serverSocket));\n\n                _completion.SetResult(serverSocket);\n            }\n\n            /// <summary>\n            ///     Notify the calling test that the server has rejected a WebSocket connection.\n            /// </summary>\n            /// <param name=\"reason\">\n            ///     An <see cref=\"Exception\"/> representing the reason that the connection was rejected.\n            /// </param>\n            public void RejectServerSocket(Exception reason)\n            {\n                if (reason == null)\n                    throw new ArgumentNullException(nameof(reason));\n\n                _completion.SetException(reason);\n            }\n\n            /// <summary>\n            ///     Get an awaiter for the socket-acceptance task.\n            /// </summary>\n            /// <returns>\n            ///     The <see cref=\"TaskAwaiter{TResult}\"/>.\n            /// </returns>\n            public TaskAwaiter<WebSocket> GetAwaiter() => Task.GetAwaiter();\n        }\n    }\n}"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/TestBase.cs",
    "content": "namespace KubeClient.Extensions.WebSockets.Tests\n{\n    using System;\n    using System.Diagnostics;\n    using System.Reactive.Disposables;\n    using System.Reflection;\n    using System.Threading;\n    using Logging;\n    using Microsoft.Extensions.Logging;\n    using Xunit;\n    using Xunit.Abstractions;\n\n    /// <summary>\n    ///     The base class for test suites.\n    /// </summary>\n    public abstract class TestBase\n        : IDisposable\n    {\n        /// <summary>\n        ///     Create a new test-suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        protected TestBase(ITestOutputHelper testOutput)\n        {\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n\n            // We *must* have a synchronisation context for the test, or we'll see random deadlocks.\n            if (SynchronizationContext.Current == null)\n            {\n                SynchronizationContext.SetSynchronizationContext(\n                    new SynchronizationContext()\n                );\n            }\n\n            Disposal.Add(TestCancellationSource);\n\n            TestOutput = testOutput;\n            LoggerFactory = new LoggerFactory().AddTestOutput(TestOutput, MinLogLevel);\n            Log = LoggerFactory.CreateLogger(\"CurrentTest\");\n\n            // Ugly hack to get access to the current test.\n            CurrentTest = (ITest)\n                TestOutput.GetType()\n                    .GetField(\"test\", BindingFlags.NonPublic | BindingFlags.Instance)\n                    .GetValue(TestOutput);\n\n            Assert.True(CurrentTest != null, \"Cannot retrieve current test from ITestOutputHelper.\");\n\n            Disposal.Add(\n                Log.BeginScope(\"CurrentTest {CurrentTest}\", CurrentTest.DisplayName)\n            );\n        }\n\n        /// <summary>\n        ///     Finaliser for <see cref=\"TestBase\"/>.\n        /// </summary>\n        ~TestBase()\n        {\n            Dispose(false);\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the test suite.\n        /// </summary>\n        public void Dispose()\n        {\n            Dispose(true);\n            GC.SuppressFinalize(this);\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the test suite.\n        /// </summary>\n        /// <param name=\"disposing\">\n        ///     Explicit disposal?\n        /// </param>\n        protected virtual void Dispose(bool disposing)\n        {\n            if (disposing)\n            {\n                try\n                {\n                    Disposal.Dispose();\n                }\n                finally\n                {\n                    if (Log is IDisposable logDisposal)\n                        logDisposal.Dispose();\n                }\n            }\n        }\n\n        /// <summary>\n        ///     A <see cref=\"CompositeDisposable\"/> representing resources used by the test.\n        /// </summary>\n        protected CompositeDisposable Disposal { get; } = new CompositeDisposable();\n\n        /// <summary>\n        ///     The source for cancellation tokens used by the test.\n        /// </summary>\n        protected CancellationTokenSource TestCancellationSource { get; } = new CancellationTokenSource();\n\n        /// <summary>\n        ///     A <see cref=\"CancellationToken\"/> that can be used to cancel asynchronous operations.\n        /// </summary>\n        /// <seealso cref=\"TestCancellationSource\"/>\n        protected CancellationToken TestCancellation => TestCancellationSource.Token;\n\n        /// <summary>\n        ///     Output for the current test.\n        /// </summary>\n        protected ITestOutputHelper TestOutput { get; }\n\n        /// <summary>\n        ///     A <see cref=\"ITest\"/> representing the current test.\n        /// </summary>\n        protected ITest CurrentTest { get; }\n\n        /// <summary>\n        ///     The logger for the current test.\n        /// </summary>\n        protected ILogger Log { get; }\n\n        /// <summary>\n        ///     The logger factory for the current test.\n        /// </summary>\n        protected ILoggerFactory LoggerFactory { get; }\n\n        /// <summary>\n        ///     The logging level for the current test.\n        /// </summary>\n        protected virtual LogLevel MinLogLevel => LogLevel.Information;\n\n        /// <summary>\n        ///     Cancel the test cancellation token.\n        /// </summary>\n        protected void CancelTest() => TestCancellationSource.Cancel();\n\n        /// <summary>\n        ///     Cancel the test after the specified timeout.\n        /// </summary>\n        /// <param name=\"timeout\">\n        ///     A <see cref=\"TimeSpan\"/> representing the timeout period.\n        /// </param>\n        /// <param name=\"whenDebugging\">\n        ///     Schedule cancellation, even if a debugger is attached?\n        /// </param>\n        protected void TestTimeout(TimeSpan timeout, bool whenDebugging = false)\n        {\n            if (whenDebugging || !Debugger.IsAttached)\n                TestCancellationSource.CancelAfter(timeout);\n        }\n    }\n}"
  },
  {
    "path": "test/KubeClient.Extensions.WebSockets.Tests/WebSocketTestBase.cs",
    "content": "using Microsoft.AspNetCore;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.IO;\nusing System.Net;\nusing System.Net.Sockets;\nusing System.Net.WebSockets;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Extensions.WebSockets.Tests\n{\n    using Logging;\n    using Server;\n\n\n    /// <summary>\n    ///     The base class for Kubernetes WebSocket test suites.\n    /// </summary>\n    public abstract class WebSocketTestBase\n            : TestBase\n    {\n        /// <summary>\n        ///     Get the number of the next available TCP port on the loopback address.\n        /// </summary>\n        static int GetNextLocalTcpPort()\n        {\n            // Slightly hacky, but haven't found a better way. Later, we should switch these tests over to use the ASP.NET Test Server.\n            TcpListener tcpListener = new TcpListener(\n                localaddr: IPAddress.Loopback,\n                port: 0 // auto-assign port\n            );\n            try\n            {\n                tcpListener.Start();\n\n                IPEndPoint localEndPoint = (IPEndPoint)tcpListener.LocalEndpoint;\n\n                return localEndPoint.Port;\n            }\n            finally\n            {\n                tcpListener.Stop();\n            }\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"WebSocketTestBase\"/>.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        protected WebSocketTestBase(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n            int port = GetNextLocalTcpPort();\n\n            BaseAddress = new Uri($\"http://localhost:{port}\");\n            WebSocketBaseAddress = new Uri($\"ws://localhost:{port}\");\n\n            Host = WebHost.CreateDefaultBuilder()\n                .UseStartup<Startup>()\n                .ConfigureServices(ConfigureTestServerServices)\n                .ConfigureLogging(ConfigureTestServerLogging)\n                .UseUrls(BaseAddress.AbsoluteUri)\n                .Build();\n\n            Disposal.Add(Host);\n        }\n\n        /// <summary>\n        ///     The test server's base address (http://).\n        /// </summary>\n        protected Uri BaseAddress { get; }\n\n        /// <summary>\n        ///     The test server's base WebSockets address (ws://).\n        /// </summary>\n        protected Uri WebSocketBaseAddress { get; }\n\n        /// <summary>\n        ///     The test server's web host.\n        /// </summary>\n        protected IWebHost Host { get; }\n\n        /// <summary>\n        ///     Test adapter for accepting web sockets.\n        /// </summary>\n        protected WebSocketTestAdapter WebSocketTestAdapter { get; } = new WebSocketTestAdapter();\n\n        /// <summary>\n        ///     Create a <see cref=\"KubeApiClient\"/> that issues requests against the test server.\n        /// </summary>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        protected KubeApiClient CreateTestClient()\n        {\n            return KubeApiClient.Create(new KubeClientOptions\n            {\n                ApiEndPoint = BaseAddress,\n                KubeNamespace = \"default\",\n                LoggerFactory = LoggerFactory\n\n                // No authentication.\n            });\n        }\n\n        /// <summary>\n        ///     Configure services for the test server.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        protected virtual void ConfigureTestServerServices(IServiceCollection services)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            // Inject WebSocketTestData.\n            services.AddSingleton(WebSocketTestAdapter);\n        }\n\n        /// <summary>\n        ///     Configure logging for the test server.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The logger factory to configure.\n        /// </param>\n        protected virtual void ConfigureTestServerLogging(ILoggingBuilder logging)\n        {\n            if (logging == null)\n                throw new ArgumentNullException(nameof(logging));\n\n            logging.AddTestOutput(TestOutput, MinLogLevel);\n        }\n\n        /// <summary>\n        ///     Asynchronously disconnect client and server WebSockets using the standard handshake.\n        /// </summary>\n        /// <param name=\"clientSocket\">\n        ///     The client-side <see cref=\"WebSocket\"/>.\n        /// </param>\n        /// <param name=\"serverSocket\">\n        ///     The server-side <see cref=\"WebSocket\"/>.\n        /// </param>\n        /// <param name=\"closeStatus\">\n        ///     An optional <see cref=\"WebSocketCloseStatus\"/> value indicating the reason for disconnection.\n        ///\n        ///     Defaults to <see cref=\"WebSocketCloseStatus.NormalClosure\"/>.\n        /// </param>\n        /// <param name=\"closeStatusDescription\">\n        ///     An optional textual description of the reason for disconnection.\n        ///\n        ///     Defaults to \"Normal Closure\".\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        protected async Task Disconnect(WebSocket clientSocket, WebSocket serverSocket, WebSocketCloseStatus closeStatus = WebSocketCloseStatus.NormalClosure, string closeStatusDescription = \"Normal Closure\")\n        {\n            if (clientSocket == null)\n                throw new ArgumentNullException(nameof(clientSocket));\n\n            if (serverSocket == null)\n                throw new ArgumentNullException(nameof(serverSocket));\n\n            Log.LogInformation(\"Disconnecting...\");\n\n            // Asynchronously perform the server's half of the handshake (the call to clientSocket.CloseAsync will block until it receives the server's response).\n            Task closeServerSocket = WaitForClose(serverSocket, \"server\", closeStatus, closeStatusDescription);\n\n            Log.LogInformation(\"Closing client socket...\");\n\n            await clientSocket.CloseAsync(closeStatus, closeStatusDescription, TestCancellation).ConfigureAwait(false);\n            Assert.Equal(WebSocketState.Closed, clientSocket.State);\n\n            Log.LogInformation(\"Client socket closed (CloseStatus = '{CloseStatus}', CloseStatusDescription = '{CloseStatusDescription}').\", clientSocket.CloseStatus, clientSocket.CloseStatusDescription);\n\n            await closeServerSocket.ConfigureAwait(false);\n            Assert.Equal(WebSocketState.Closed, serverSocket.State);\n\n            Log.LogInformation(\"Disconnected.\");\n\n            Assert.Equal(closeStatus, clientSocket.CloseStatus);\n            Assert.Equal(clientSocket.CloseStatus, serverSocket.CloseStatus);\n\n            Assert.Equal(closeStatusDescription, clientSocket.CloseStatusDescription);\n            Assert.Equal(clientSocket.CloseStatusDescription, serverSocket.CloseStatusDescription);\n        }\n\n        /// <summary>\n        ///     Asynchronously wait for and respond to the first half the standard WebSocket-close handshake.\n        /// </summary>\n        /// <param name=\"socket\">\n        ///     The target <see cref=\"WebSocket\"/>.\n        /// </param>\n        /// <param name=\"socketType\">\n        ///     A short textual description of the socket type (e.g. \"server\" or \"client\").\n        /// <param>\n        /// <param name=\"closeStatus\">\n        ///     An optional <see cref=\"WebSocketCloseStatus\"/> value indicating the reason for disconnection.\n        ///\n        ///     Defaults to <see cref=\"WebSocketCloseStatus.NormalClosure\"/>.\n        /// </param>\n        /// <param name=\"closeStatusDescription\">\n        ///     An optional textual description of the reason for disconnection.\n        ///\n        ///     Defaults to \"Normal Closure\".\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        protected Task WaitForClose(WebSocket socket, string socketType, WebSocketCloseStatus closeStatus = WebSocketCloseStatus.NormalClosure, string closeStatusDescription = \"Normal Closure\")\n        {\n            if (socket == null)\n                throw new ArgumentNullException(nameof(socket));\n\n            if (String.IsNullOrWhiteSpace(socketType))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'socketType'.\", nameof(socketType));\n\n            Log.LogInformation(\"{SocketType} socket waiting for Close message...\", socketType);\n\n            ArraySegment<byte> receiveBuffer = new byte[1024];\n            Task<WebSocketReceiveResult> closeSocketTask = socket.ReceiveAsync(receiveBuffer, TestCancellation);\n\n            return closeSocketTask.ContinueWith(async received =>\n            {\n                if (received.IsFaulted)\n                    Log.LogError(EventIds.ErrorClosingServerSocket, received.Exception.Flatten().InnerExceptions[0], \"Server socket operation to receive Close message failed.\");\n                else if (received.IsCanceled)\n                    Log.LogWarning(\"{SocketType} socket operation to receive Close message was canceled.\", socketType);\n                else\n                {\n                    Log.LogInformation(\"Received {MessageType} message from {SocketType} socket (expecting {ExpectedMessageType}).\",\n                        received.Result.MessageType,\n                        socketType,\n                        WebSocketMessageType.Close\n                    );\n\n                    if (received.Result.MessageType == WebSocketMessageType.Close)\n                    {\n                        Log.LogInformation(\"Closing {SocketType} socket (with status {CloseStatus})...\", socketType, received.Result.CloseStatus);\n\n                        await socket.CloseAsync(closeStatus, closeStatusDescription, TestCancellation);\n\n                        Log.LogInformation(\"{SocketType} socket closed.\", socketType);\n                    }\n\n                    Assert.Equal(WebSocketMessageType.Close, received.Result.MessageType);\n                }\n            });\n        }\n\n        /// <summary>\n        ///     Send text to a multiplexed substream over the specified WebSocket.\n        /// </summary>\n        /// <param name=\"webSocket\">\n        ///     The target <see cref=\"WebSocket\"/>.\n        /// </param>\n        /// <param name=\"streamIndex\">\n        ///     The 0-based index of the target substream.\n        /// </param>\n        /// <param name=\"text\">\n        ///     The text to send.\n        /// </param>\n        /// <param name=\"encoding\">\n        ///     The text encoding to use (defaults to UTF8).\n        /// </param>\n        /// <returns>\n        ///     The number of bytes sent to the WebSocket.\n        /// </returns>\n        protected async Task<int> SendMultiplexed(WebSocket webSocket, byte streamIndex, string text, Encoding encoding = null)\n        {\n            if (webSocket == null)\n                throw new ArgumentNullException(nameof(webSocket));\n\n            if (text == null)\n                throw new ArgumentNullException(nameof(text));\n\n            if (encoding == null)\n                encoding = Encoding.UTF8;\n\n            byte[] payload = encoding.GetBytes(text);\n            byte[] sendBuffer = new byte[payload.Length + 1];\n\n            sendBuffer[0] = streamIndex;\n            Array.Copy(payload, 0, sendBuffer, 1, payload.Length);\n\n            await webSocket.SendAsync(sendBuffer, WebSocketMessageType.Binary,\n                endOfMessage: true,\n                cancellationToken: TestCancellation\n            );\n\n            return sendBuffer.Length;\n        }\n\n        /// <summary>\n        ///     Receive text from a multiplexed substream over the specified WebSocket.\n        /// </summary>\n        /// <param name=\"webSocket\">\n        ///     The target <see cref=\"WebSocket\"/>.\n        /// </param>\n        /// <param name=\"text\">\n        ///     The text to send.\n        /// </param>\n        /// <param name=\"encoding\">\n        ///     The text encoding to use (defaults to UTF8).\n        /// </param>\n        /// <returns>\n        ///     A tuple containing the received text, 0-based substream index, and total bytes received.\n        /// </returns>\n        protected async Task<(string text, byte streamIndex, int totalBytes)> ReceiveTextMultiplexed(WebSocket webSocket, Encoding encoding = null)\n        {\n            if (webSocket == null)\n                throw new ArgumentNullException(nameof(webSocket));\n\n            if (encoding == null)\n                encoding = Encoding.UTF8;\n\n            byte[] receivedData;\n            using (MemoryStream buffer = new MemoryStream())\n            {\n                byte[] receiveBuffer = new byte[1024];\n                WebSocketReceiveResult receiveResult = await webSocket.ReceiveAsync(receiveBuffer, TestCancellation);\n                if (receiveResult.MessageType != WebSocketMessageType.Binary)\n                    throw new IOException($\"Received unexpected WebSocket message of type '{receiveResult.MessageType}'.\");\n\n                buffer.Write(receiveBuffer, 0, receiveResult.Count);\n\n                while (!receiveResult.EndOfMessage)\n                {\n                    receiveResult = await webSocket.ReceiveAsync(receiveBuffer, TestCancellation);\n                    buffer.Write(receiveBuffer, 0, receiveResult.Count);\n                }\n\n                buffer.Flush();\n\n                receivedData = buffer.ToArray();\n            }\n\n            return (\n                text: encoding.GetString(receivedData, 1, receivedData.Length - 1),\n                streamIndex: receivedData[0],\n                totalBytes: receivedData.Length\n            );\n        }\n\n        /// <summary>\n        ///     Event Id constants used in WebSocket tests.\n        /// </summary>\n        protected static class EventIds\n        {\n            /// <summary>\n            ///     An error occurred while closing the server-side socket.\n            /// </summary>\n            public static readonly EventId ErrorClosingServerSocket = new EventId(1000, nameof(ErrorClosingServerSocket));\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Http/Testability/MessageExtensions.cs",
    "content": "using System;\nusing System.Net;\nusing System.Net.Http;\n\nnamespace KubeClient.Http.Testability\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Formatters;\n\n    /// <summary>\n    /// \tExtension methods for <see cref=\"HttpRequestMessage\"/> / <see cref=\"HttpResponseMessage\"/>.\n    /// </summary>\n    public static class MessageExtensions\n    {\n        /// <summary>\n        /// \tCreate a <see cref=\"HttpResponseMessage\">response message</see> with an <see cref=\"HttpStatusCode.OK\"/> status code.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\">response message</see>.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured response message.\n        /// </returns>\n        public static HttpResponseMessage CreateResponse(this HttpRequestMessage request)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            return request.CreateResponse(HttpStatusCode.OK);\n        }\n\n        /// <summary>\n        /// \tCreate a <see cref=\"HttpResponseMessage\">response message</see>.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\">response message</see>.\n        /// </param>\n        /// <param name=\"statusCode\">\n        ///\t\tThe response status code.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured response message.\n        /// </returns>\n        public static HttpResponseMessage CreateResponse(this HttpRequestMessage request, HttpStatusCode statusCode)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            HttpResponseMessage response = new HttpResponseMessage(statusCode);\n            try\n            {\n                response.RequestMessage = request;\n            }\n            catch\n            {\n                using (response)\n                {\n                    throw;\n                }\n            }\n\n            return response;\n        }\n\n        /// <summary>\n        /// \tCreate a <see cref=\"HttpResponseMessage\">response message</see>.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\">response message</see>.\n        /// </param>\n        /// <param name=\"statusCode\">\n        ///\t\tThe response status code.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe response body (media type will be \"text/plain\").\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured response message.\n        /// </returns>\n        public static HttpResponseMessage CreateResponse(this HttpRequestMessage request, HttpStatusCode statusCode, string responseBody)\n        {\n            return request.CreateResponse(statusCode, responseBody, WellKnownMediaTypes.PlainText);\n        }\n\n        /// <summary>\n        /// \tCreate a <see cref=\"HttpResponseMessage\">response message</see>.\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\">response message</see>.\n        /// </param>\n        /// <param name=\"statusCode\">\n        ///\t\tThe response status code.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe response body.\n        /// </param>\n        /// <param name=\"mediaType\">\n        ///\t\tThe response media type.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured response message.\n        /// </returns>\n        public static HttpResponseMessage CreateResponse(this HttpRequestMessage request, HttpStatusCode statusCode, string responseBody, string mediaType)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (responseBody != null && String.IsNullOrWhiteSpace(mediaType))\n                throw new ArgumentException(\"Must specify a valid media type if specifying a response body.\", nameof(mediaType));\n\n            HttpResponseMessage response = request.CreateResponse(statusCode);\n            if (responseBody == null)\n                return response;\n\n            try\n            {\n                response.Content = new StringContent(responseBody, OutputEncoding.UTF8, mediaType);\n            }\n            catch\n            {\n                using (response)\n                {\n                    throw;\n                }\n            }\n\n            return response;\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Http/Testability/MessageHandlers/MockMessageHandler.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Testability.MessageHandlers\n{\n    /// <summary>\n    ///\t\tMock <see cref=\"DelegatingHandler\"/> that calls an arbitrary delegate to receive and respond to a message.\n    /// </summary>\n    public sealed class MockMessageHandler\n        : DelegatingHandler\n    {\n        /// <summary>\n        ///\t\tThe handler implementation.\n        /// </summary>\n        readonly Func<HttpRequestMessage, Task<HttpResponseMessage>> _handlerImplementation;\n\n        /// <summary>\n        ///\t\tCreate a new mock message handler.\n        /// </summary>\n        /// <param name=\"handlerImplementation\">\n        ///\t\tThe handler implementation.\n        /// </param>\n        public MockMessageHandler(Func<HttpRequestMessage, HttpResponseMessage> handlerImplementation)\n        {\n            if (handlerImplementation == null)\n                throw new ArgumentNullException(nameof(handlerImplementation));\n\n            _handlerImplementation = request => Task<HttpResponseMessage>.Factory.StartNew(\n                () => handlerImplementation(request)\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate a new mock message handler.\n        /// </summary>\n        /// <param name=\"handlerImplementation\">\n        ///\t\tThe handler implementation.\n        /// </param>\n        public MockMessageHandler(Func<HttpRequestMessage, Task<HttpResponseMessage>> handlerImplementation)\n        {\n            if (handlerImplementation == null)\n                throw new ArgumentNullException(nameof(handlerImplementation));\n\n            _handlerImplementation = handlerImplementation;\n        }\n\n        /// <summary>\n        ///\t\tAsynchronously handle a request\n        /// </summary>\n        /// <param name=\"request\">\n        ///\t\tThe request message.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///\t\tA cancellation token that can be used to cancel the operation.\n        /// </param>\n        /// <returns>\n        ///\t\tA <see cref=\"Task{TResult}\"/> representing the asynchronous operation, whose result is the response message.\n        /// </returns>\n        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            return await _handlerImplementation(request);\n        }\n\n        /// <summary>\n        /// \tCreate an <see cref=\"HttpClient\"/> that wraps the <see cref=\"MockMessageHandler\"/>.\n        /// </summary>\n        /// <returns>\n        /// \tThe new <see cref=\"HttpClient\"/>\n        /// </returns>\n        public HttpClient CreateClient() => new HttpClient(this);\n\n        /// <summary>\n        /// \tCreate an instance of the default mock message handler (responds to any request with <see cref=\"HttpStatusCode.OK\"/>).\n        /// </summary>\n        public static MockMessageHandler Default()\n        {\n            return new MockMessageHandler(\n                request => request.CreateResponse(HttpStatusCode.OK)\n            );\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Http/Testability/Xunit/MessageAssert.cs",
    "content": "﻿using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace KubeClient.Http.Testability.Xunit\n{\n    /// <summary>\n    ///\t\tAssertion functionality for HTTP request / response message generated by <see cref=\"HttpRequest\"/> / <see cref=\"HttpRequest{TContext}\"/>.\n    /// </summary>\n    public static class MessageAssert\n    {\n        /// <summary>\n        ///\t\tAssert that the request message has the specified URI.\n        /// </summary>\n        /// <param name=\"requestMessage\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\"/>.\n        /// </param>\n        /// <param name=\"expectedUri\">\n        ///\t\tThe expected URI.\n        /// </param>\n        public static void HasRequestUri(HttpRequestMessage requestMessage, string expectedUri)\n        {\n            if (requestMessage == null)\n                throw new ArgumentNullException(nameof(requestMessage));\n\n            if (String.IsNullOrWhiteSpace(expectedUri))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'expectedUri'.\", nameof(expectedUri));\n\n            HasRequestUri(requestMessage,\n                new Uri(expectedUri, UriKind.RelativeOrAbsolute)\n            );\n        }\n\n        /// <summary>\n        ///\t\tAssert that the request message has the specified URI.\n        /// </summary>\n        /// <param name=\"requestMessage\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\"/>.\n        /// </param>\n        /// <param name=\"expectedUri\">\n        ///\t\tThe expected URI.\n        /// </param>\n        public static void HasRequestUri(HttpRequestMessage requestMessage, Uri expectedUri)\n        {\n            if (requestMessage == null)\n                throw new ArgumentNullException(nameof(requestMessage));\n\n            if (requestMessage == null)\n                throw new ArgumentNullException(nameof(requestMessage));\n\n            Assert.Equal(expectedUri,\n                requestMessage.RequestUri\n            );\n        }\n\n        /// <summary>\n        ///\t\tAssert that the request message's Accept header contains the specified media type.\n        /// </summary>\n        /// <param name=\"requestMessage\">\n        ///\t\tThe <see cref=\"HttpRequestMessage\"/>.\n        /// </param>\n        /// <param name=\"mediaType\">\n        ///\t\tThe expected media type.\n        /// </param>\n        public static void AcceptsMediaType(HttpRequestMessage requestMessage, string mediaType)\n        {\n            if (requestMessage == null)\n                throw new ArgumentNullException(nameof(requestMessage));\n\n            if (String.IsNullOrWhiteSpace(mediaType))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'mediaType'.\", nameof(mediaType));\n\n            Assert.Contains(requestMessage.Headers.Accept,\n                accept => accept.MediaType == mediaType\n            );\n        }\n\n        /// <summary>\n        ///\t\tAsynchronously assert that the request message body is equal to the specified string.\n        /// </summary>\n        /// <param name=\"requestMessage\">\n        ///\t\tThe HTTP request message to examine.\n        /// </param>\n        /// <param name=\"expectedBody\">\n        ///\t\tA string containing the expected message body.\n        /// </param>\n        /// <returns>\n        ///\t\tThe actual message body.\n        /// </returns>\n        public static async Task<string> BodyIsAsync(HttpRequestMessage requestMessage, string expectedBody)\n        {\n            if (requestMessage == null)\n                throw new ArgumentNullException(nameof(requestMessage));\n\n            string actualBody = null;\n            if (requestMessage.Content != null)\n                actualBody = await requestMessage.Content.ReadAsStringAsync();\n\n            Assert.Equal(expectedBody, actualBody);\n\n            return actualBody;\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Http/Testability/Xunit/RequestAssert.cs",
    "content": "﻿using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Http.Testability.Xunit\n{\n\t/// <summary>\n\t///\t\tAssertion functionality for <see cref=\"HttpRequest\"/> / <see cref=\"HttpRequest{TContext}\"/>.\n\t/// </summary>\n\tpublic static class RequestAssert\n    {\n\t\t#region Untyped requests\n\t\t\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the HTTP GET method and no base URI.\n\t\t/// </remarks>\n\t\tpublic static void MessageHasUri(HttpRequest request, string expectedUri)\n\t\t{\n\t\t\tMessageHasUri(request, HttpMethod.Get,\n\t\t\t\tbaseUri: null,\n\t\t\t\texpectedUri: expectedUri\n\t\t\t);\n\t\t}\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the HTTP GET method and no base URI.\n\t\t/// </remarks>\n\t\tpublic static void MessageHasUri(HttpRequest request, Uri expectedUri)\n\t\t{\n\t\t\tMessageHasUri(request, HttpMethod.Get,\n\t\t\t\tbaseUri: null,\n\t\t\t\texpectedUri: expectedUri\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the HTTP GET method.\n\t\t/// </remarks>\n\t\tpublic static void MessageHasUri(HttpRequest request, Uri baseUri, string expectedUri)\n\t\t{\n\t\t\tMessageHasUri(request, HttpMethod.Get, baseUri, expectedUri);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the HTTP GET method.\n\t\t/// </remarks>\n\t\tpublic static void MessageHasUri(HttpRequest request, Uri baseUri, Uri expectedUri)\n\t\t{\n\t\t\tMessageHasUri(request, HttpMethod.Get, baseUri, expectedUri);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\tpublic static void MessageHasUri(HttpRequest request, HttpMethod method, Uri baseUri, string expectedUri)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(expectedUri))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'expectedUri'.\", nameof(expectedUri));\n\n\t\t\tMessage(request, method, baseUri, requestMessage =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(requestMessage, expectedUri);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\tpublic static void MessageHasUri(HttpRequest request, HttpMethod method, Uri baseUri, Uri expectedUri)\n\t\t{\n\t\t\tMessage(request, method, baseUri, requestMessage =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(requestMessage, expectedUri);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static void Message(HttpRequest request, HttpMethod method, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tMessage(request, method,\n\t\t\t\tbodyContent: null,\n\t\t\t\tbaseUri: null,\n\t\t\t\tassertion: assertion\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe request base URI.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static void Message(HttpRequest request, HttpMethod method, Uri baseUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tMessage(request, method,\n\t\t\t\tbodyContent: null,\n\t\t\t\tbaseUri: baseUri,\n\t\t\t\tassertion: assertion\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body content.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static void Message(HttpRequest request, HttpMethod method, HttpContent bodyContent, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tMessage(request, method, bodyContent, null, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body content.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static void Message(HttpRequest request, HttpMethod method, HttpContent bodyContent, Uri baseUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (assertion == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(assertion));\n\n\t\t\tif (method == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(method));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(method, bodyContent, baseUri))\n\t\t\t{\n\t\t\t\tassertion(requestMessage);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body content.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"asyncAssertion\">\n\t\t///\t\tAn asynchronous delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static async Task MessageAsync(HttpRequest request, HttpMethod method, HttpContent bodyContent, Uri baseUri, Func<HttpRequestMessage, Task> asyncAssertion)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (asyncAssertion == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(asyncAssertion));\n\n\t\t\tif (method == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(method));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(method, bodyContent, baseUri))\n\t\t\t{\n\t\t\t\tawait asyncAssertion(requestMessage);\n\t\t\t}\n\t\t}\n\n\t\t#endregion // Untyped requests\n\n\t\t#region Typed requests\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values for each request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the HTTP GET method and no base URI.\n\t\t/// </remarks>\n\t\tpublic static void MessageHasUri<TContext>(HttpRequest<TContext> request, TContext context, string expectedUri)\n\t\t{\n\t\t\tMessageHasUri(request, HttpMethod.Get, context,\n\t\t\t\tbaseUri: null,\n\t\t\t\texpectedUri: expectedUri\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values for each request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the HTTP GET method and no base URI.\n\t\t/// </remarks>\n\t\tpublic static void MessageHasUri<TContext>(HttpRequest<TContext> request, TContext context, Uri expectedUri)\n\t\t{\n\t\t\tMessageHasUri(request, HttpMethod.Get, context,\n\t\t\t\tbaseUri: null,\n\t\t\t\texpectedUri: expectedUri\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values for each request.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the HTTP GET method.\n\t\t/// </remarks>\n\t\tpublic static void MessageHasUri<TContext>(HttpRequest<TContext> request, TContext context, Uri baseUri, string expectedUri)\n\t\t{\n\t\t\tMessageHasUri(request, HttpMethod.Get, context, baseUri, expectedUri);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values for each request.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the HTTP GET method.\n\t\t/// </remarks>\n\t\tpublic static void MessageHasUri<TContext>(HttpRequest<TContext> request, TContext context, Uri baseUri, Uri expectedUri)\n\t\t{\n\t\t\tMessageHasUri(request, HttpMethod.Get, context, baseUri, expectedUri);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values for each request.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\tpublic static void MessageHasUri<TContext>(HttpRequest<TContext> request, HttpMethod method, TContext context, Uri baseUri, string expectedUri)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(expectedUri))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'expectedUri'.\", nameof(expectedUri));\n\n\t\t\tMessage(request, method, context, baseUri, requestMessage =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(requestMessage, expectedUri);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAssert that the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest\"/> has the specified URI.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values for each request.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"expectedUri\">\n\t\t///\t\tThe expected URI.\n\t\t/// </param>\n\t\tpublic static void MessageHasUri<TContext>(HttpRequest<TContext> request, HttpMethod method, TContext context, Uri baseUri, Uri expectedUri)\n\t\t{\n\t\t\tMessage(request, method, context, baseUri, requestMessage =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(requestMessage, expectedUri);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the default value for <typeparamref name=\"TContext\"/>.\n\t\t/// </remarks>\n\t\tpublic static void Message<TContext>(HttpRequest<TContext> request, HttpMethod method, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tMessage(request, method,\n\t\t\t\tcontext: default(TContext),\n\t\t\t\tbodyContent: null,\n\t\t\t\tbaseUri: null,\n\t\t\t\tassertion: assertion\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe request base URI.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\t/// <remarks>\n\t\t///\t\tUses the default value for <typeparamref name=\"TContext\"/>.\n\t\t/// </remarks>\n\t\tpublic static void Message<TContext>(HttpRequest<TContext> request, HttpMethod method, Uri baseUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tMessage(request, method,\n\t\t\t\tcontext: default(TContext),\n\t\t\t\tbodyContent: null,\n\t\t\t\tbaseUri: baseUri,\n\t\t\t\tassertion: assertion\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static void Message<TContext>(HttpRequest<TContext> request, HttpMethod method, TContext context, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tMessage(request, method, context,\n\t\t\t\tbodyContent: null,\n\t\t\t\tbaseUri: null,\n\t\t\t\tassertion: assertion\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tThe request base URI.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static void Message<TContext>(HttpRequest<TContext> request, HttpMethod method, TContext context, Uri baseUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tMessage(request, method, context,\n\t\t\t\tbodyContent: null,\n\t\t\t\tbaseUri: baseUri,\n\t\t\t\tassertion: assertion\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values.\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body content.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static void Message<TContext>(HttpRequest<TContext> request, HttpMethod method, TContext context, HttpContent bodyContent, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tMessage(request, method, context, bodyContent,\n\t\t\t\tbaseUri: null,\n\t\t\t\tassertion: assertion\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values.\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body content.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static void Message<TContext>(HttpRequest<TContext> request, HttpMethod method, TContext context, HttpContent bodyContent, Uri baseUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (assertion == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(assertion));\n\n\t\t\tif (method == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(method));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(method, context, bodyContent, baseUri))\n\t\t\t{\n\t\t\t\tassertion(requestMessage);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tMake assertions about the <see cref=\"HttpRequestMessage\"/> generated by the <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TContext\">\n\t\t///\t\tThe type of object used as a context for resolving deferred parameters.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequest{TContext}\"/>.\n\t\t/// </param>\n\t\t/// <param name=\"method\">\n\t\t///\t\tThe HTTP method (e.g. GET / POST / PUT).\n\t\t/// </param>\n\t\t/// <param name=\"context\">\n\t\t///\t\tThe <typeparamref name=\"TContext\"/> instance used as a context for resolving deferred values.\n\t\t/// </param>\n\t\t/// <param name=\"bodyContent\">\n\t\t///\t\t<see cref=\"HttpContent\"/> representing the request body content.\n\t\t/// </param>\n\t\t/// <param name=\"baseUri\">\n\t\t///\t\tAn optional base URI for the request.\n\t\t/// </param>\n\t\t/// <param name=\"asyncAssertion\">\n\t\t///\t\tAn asynchronous delegate that makes assertions about the <see cref=\"HttpRequestMessage\"/>.\n\t\t/// </param>\n\t\tpublic static async Task MessageAsync<TContext>(HttpRequest<TContext> request, HttpMethod method, TContext context, HttpContent bodyContent, Uri baseUri, Func<HttpRequestMessage, Task> asyncAssertion)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (asyncAssertion == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(asyncAssertion));\n\n\t\t\tif (method == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(method));\n\n\t\t\tusing (HttpRequestMessage requestMessage = request.BuildRequestMessage(method, context, bodyContent, baseUri))\n\t\t\t{\n\t\t\t\tawait asyncAssertion(requestMessage);\n\t\t\t}\n\t\t}\n\n\t\t#endregion // Typed requests\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Http/Testability/Xunit/TestClients.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace KubeClient.Http.Testability.Xunit\n{\n    /// <summary>\n    ///\t\tFactory methods for mocked <see cref=\"HttpClient\"/>s used by tests.\n    /// </summary>\n    public static class TestClients\n    {\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that always responds to requests with the <see cref=\"HttpStatusCode.OK\"/> status code.\n        /// </summary>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient RespondWithOk()\n        {\n            return TestHandlers.RespondWith(HttpStatusCode.OK).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that always responds to requests with the <see cref=\"HttpStatusCode.BadRequest\"/> status code.\n        /// </summary>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient RespondWithBadRequest()\n        {\n            return TestHandlers.RespondWith(HttpStatusCode.BadRequest).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that always responds to requests with the <see cref=\"HttpStatusCode.BadRequest\"/> status code.\n        /// </summary>\n        /// <param name=\"responseBody\">\n        ///\t\tA string to be used as the response message body.\n        /// </param>\n        /// <param name=\"responseMediaType\">\n        ///\t\tThe response media type.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient RespondWithBadRequest(string responseBody, string responseMediaType)\n        {\n            if (String.IsNullOrWhiteSpace(responseMediaType))\n                throw new ArgumentException(\"Must specify a valid media type.\", nameof(responseMediaType));\n\n            return\n                TestHandlers.RespondWith(\n                    request => request.CreateResponse(HttpStatusCode.BadRequest, responseBody, responseMediaType)\n                )\n                .CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that always responds to requests with the specified status code.\n        /// </summary>\n        /// <param name=\"statusCode\">\n        ///\t\tThe HTTP status code.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient RespondWith(HttpStatusCode statusCode)\n        {\n            return\n                TestHandlers.RespondWith(\n                    request => request.CreateResponse(statusCode)\n                )\n                .CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that calls the specified delegate to synchronously respond to requests.\n        /// </summary>\n        /// <param name=\"handler\">\n        ///\t\tA delegate that takes an incoming <see cref=\"HttpRequest\"/> and returns an outgoing <see cref=\"HttpResponseMessage\"/>.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient RespondWith(Func<HttpRequestMessage, HttpResponseMessage> handler)\n        {\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            return TestHandlers.RespondWith(handler).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that calls the specified delegate to asynchronously respond to requests.\n        /// </summary>\n        /// <param name=\"handler\">\n        ///\t\tA delegate that takes an incoming <see cref=\"HttpRequest\"/> and asynchronously returns an outgoing <see cref=\"HttpResponseMessage\"/>.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient AsyncRespondWith(Func<HttpRequestMessage, Task<HttpResponseMessage>> handler)\n        {\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            return TestHandlers.AsyncRespondWith(handler).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that expects an incoming GET request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectGet(Uri expectedRequestUri)\n        {\n            return TestHandlers.ExpectGet(expectedRequestUri, HttpStatusCode.OK, assertion: null).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming GET request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectGet(Uri expectedRequestUri, Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.ExpectGet(expectedRequestUri, HttpStatusCode.OK, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming GET request message and returns a predefined response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectGet(Uri expectedRequestUri, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.Expect(expectedRequestUri, HttpMethod.Get, responseStatusCode, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that expects an incoming POST request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectPost(Uri expectedRequestUri)\n        {\n            return TestHandlers.ExpectPost(expectedRequestUri, HttpStatusCode.OK, assertion: null).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming POST request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectPost(Uri expectedRequestUri, Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.ExpectPost(expectedRequestUri, HttpStatusCode.OK, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming POST request message and returns a predefined response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectPost(Uri expectedRequestUri, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.Expect(expectedRequestUri, HttpMethod.Post, responseStatusCode, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that expects an incoming PUT request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectPut(Uri expectedRequestUri)\n        {\n            return TestHandlers.ExpectPut(expectedRequestUri, HttpStatusCode.OK, assertion: null).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming PUT request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectPut(Uri expectedRequestUri, Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.ExpectPut(expectedRequestUri, HttpStatusCode.OK, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming PUT request message and returns a predefined response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectPut(Uri expectedRequestUri, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.Expect(expectedRequestUri, HttpMethod.Put, responseStatusCode, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that expects an incoming DELETE request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectDelete(Uri expectedRequestUri)\n        {\n            return TestHandlers.ExpectDelete(expectedRequestUri, HttpStatusCode.OK, assertion: null).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming DELETE request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectDelete(Uri expectedRequestUri, Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.ExpectDelete(expectedRequestUri, HttpStatusCode.OK, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming DELETE request message and returns a predefined response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectDelete(Uri expectedRequestUri, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.Expect(expectedRequestUri, HttpMethod.Delete, responseStatusCode, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined response.\n        /// </summary>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient Expect(Action<HttpRequestMessage> assertion)\n        {\n            return TestHandlers.Expect(HttpStatusCode.OK, assertion).CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined response.\n        /// </summary>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient Expect(HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n        {\n            return\n                TestHandlers.RespondWith(requestMessage =>\n                {\n                    Assert.NotNull(requestMessage);\n\n                    assertion?.Invoke(requestMessage);\n\n                    return requestMessage.CreateResponse(responseStatusCode);\n                })\n                .CreateClient();\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined response.\n        /// </summary>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"expectedRequestMethod\">\n        ///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient Expect(Uri expectedRequestUri, HttpMethod expectedRequestMethod, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n        {\n            if (expectedRequestUri == null)\n                throw new ArgumentNullException(nameof(expectedRequestUri));\n\n            if (expectedRequestMethod == null)\n                throw new ArgumentNullException(nameof(expectedRequestMethod));\n\n            return\n                TestHandlers.Expect(responseStatusCode, requestMessage =>\n                {\n                    Assert.Equal(expectedRequestMethod, requestMessage.Method);\n                    Assert.Equal(expectedRequestUri, requestMessage.RequestUri);\n\n                    assertion?.Invoke(requestMessage);\n                })\n                .CreateClient();\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Http/Testability/Xunit/TestHandlers.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace KubeClient.Http.Testability.Xunit\n{\n    using MessageHandlers;\n\n    /// <summary>\n    ///\t\tFactory methods for mocked <see cref=\"MockMessageHandler\"/>s used by tests.\n    /// </summary>\n    public static class TestHandlers\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that always responds to requests with the <see cref=\"HttpStatusCode.OK\"/> status code.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler RespondWithOk()\n\t\t{\n\t\t\treturn RespondWith(HttpStatusCode.OK);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that always responds to requests with the <see cref=\"HttpStatusCode.BadRequest\"/> status code.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler RespondWithBadRequest()\n\t\t{\n\t\t\treturn RespondWith(HttpStatusCode.BadRequest);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that always responds to requests with the <see cref=\"HttpStatusCode.BadRequest\"/> status code.\n\t\t/// </summary>\n\t\t/// <param name=\"responseBody\">\n\t\t///\t\tA string to be used as the response message body.\n\t\t/// </param>\n\t\t/// <param name=\"responseMediaType\">\n\t\t///\t\tThe response media type.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler RespondWithBadRequest(string responseBody, string responseMediaType)\n\t\t{\n\t\t\tif (String.IsNullOrWhiteSpace(responseMediaType))\n\t\t\t\tthrow new ArgumentException(\"Must specify a valid media type.\", nameof(responseMediaType));\n\n\t\t\treturn RespondWith(\n\t\t\t\trequest => request.CreateResponse(HttpStatusCode.BadRequest, responseBody, responseMediaType)\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that always responds to requests with the specified status code.\n\t\t/// </summary>\n\t\t/// <param name=\"statusCode\">\n\t\t///\t\tThe HTTP status code.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler RespondWith(HttpStatusCode statusCode)\n\t\t{\n\t\t\treturn RespondWith(\n\t\t\t\trequest => request.CreateResponse(statusCode)\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that calls the specified delegate to synchronously respond to requests.\n\t\t/// </summary>\n\t\t/// <param name=\"handler\">\n\t\t///\t\tA delegate that takes an incoming <see cref=\"HttpRequest\"/> and returns an outgoing <see cref=\"HttpResponseMessage\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler RespondWith(Func<HttpRequestMessage, HttpResponseMessage> handler)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(handler));\n\n\t\t\treturn new MockMessageHandler(handler);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that calls the specified delegate to asynchronously respond to requests.\n\t\t/// </summary>\n\t\t/// <param name=\"handler\">\n\t\t///\t\tA delegate that takes an incoming <see cref=\"HttpRequest\"/> and asynchronously returns an outgoing <see cref=\"HttpResponseMessage\"/>.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler AsyncRespondWith(Func<HttpRequestMessage, Task<HttpResponseMessage>> handler)\n\t\t{\n\t\t\tif (handler == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(handler));\n\n\t\t\treturn new MockMessageHandler(handler);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that expects an incoming GET request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectGet(Uri expectedRequestUri)\n\t\t{\n\t\t\treturn ExpectGet(expectedRequestUri, HttpStatusCode.OK, assertion: null);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming GET request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectGet(Uri expectedRequestUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn ExpectGet(expectedRequestUri, HttpStatusCode.OK, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming GET request message and returns a predefined response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"responseStatusCode\">\n\t\t///\t\tThe HTTP status code for the outgoing response message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectGet(Uri expectedRequestUri, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn Expect(expectedRequestUri, HttpMethod.Get, responseStatusCode, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that expects an incoming POST request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectPost(Uri expectedRequestUri)\n\t\t{\n\t\t\treturn ExpectPost(expectedRequestUri, HttpStatusCode.OK, assertion: null);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming POST request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectPost(Uri expectedRequestUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn ExpectPost(expectedRequestUri, HttpStatusCode.OK, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming POST request message and returns a predefined response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"responseStatusCode\">\n\t\t///\t\tThe HTTP status code for the outgoing response message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectPost(Uri expectedRequestUri, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn Expect(expectedRequestUri, HttpMethod.Post, responseStatusCode, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that expects an incoming PUT request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectPut(Uri expectedRequestUri)\n\t\t{\n\t\t\treturn ExpectPut(expectedRequestUri, HttpStatusCode.OK, assertion: null);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming PUT request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectPut(Uri expectedRequestUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn ExpectPut(expectedRequestUri, HttpStatusCode.OK, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming PUT request message and returns a predefined response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"responseStatusCode\">\n\t\t///\t\tThe HTTP status code for the outgoing response message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectPut(Uri expectedRequestUri, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn Expect(expectedRequestUri, HttpMethod.Put, responseStatusCode, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that expects an incoming DELETE request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectDelete(Uri expectedRequestUri)\n\t\t{\n\t\t\treturn ExpectDelete(expectedRequestUri, HttpStatusCode.OK, assertion: null);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming DELETE request message and returns an <see cref=\"HttpStatusCode.OK\"/> response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectDelete(Uri expectedRequestUri, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn ExpectDelete(expectedRequestUri, HttpStatusCode.OK, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming DELETE request message and returns a predefined response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"responseStatusCode\">\n\t\t///\t\tThe HTTP status code for the outgoing response message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler ExpectDelete(Uri expectedRequestUri, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn Expect(expectedRequestUri, HttpMethod.Delete, responseStatusCode, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming request message and returns a predefined response.\n\t\t/// </summary>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler Expect(Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn Expect(HttpStatusCode.OK, assertion);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming request message and returns a predefined response.\n\t\t/// </summary>\n\t\t/// <param name=\"responseStatusCode\">\n\t\t///\t\tThe HTTP status code for the outgoing response message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler Expect(HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\treturn RespondWith(requestMessage =>\n\t\t\t{\n\t\t\t\tAssert.NotNull(requestMessage);\n\n\t\t\t\tassertion?.Invoke(requestMessage);\n\n\t\t\t\treturn requestMessage.CreateResponse(responseStatusCode);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tCreate an <see cref=\"MockMessageHandler\"/> that performs assertions on an incoming request message and returns a predefined response.\n\t\t/// </summary>\n\t\t/// <param name=\"expectedRequestUri\">\n\t\t///\t\tThe expected URI for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"expectedRequestMethod\">\n\t\t///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n\t\t/// </param>\n\t\t/// <param name=\"responseStatusCode\">\n\t\t///\t\tThe HTTP status code for the outgoing response message.\n\t\t/// </param>\n\t\t/// <param name=\"assertion\">\n\t\t///\t\tA delegate that makes assertions about the incoming request message.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured <see cref=\"MockMessageHandler\"/>.\n\t\t/// </returns>\n\t\tpublic static MockMessageHandler Expect(Uri expectedRequestUri, HttpMethod expectedRequestMethod, HttpStatusCode responseStatusCode, Action<HttpRequestMessage> assertion)\n\t\t{\n\t\t\tif (expectedRequestUri == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(expectedRequestUri));\n\n\t\t\tif (expectedRequestMethod == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(expectedRequestMethod));\n\n\t\t\treturn Expect(responseStatusCode, requestMessage =>\n\t\t\t{\n\t\t\t\tAssert.Equal(expectedRequestMethod, requestMessage.Method);\n\t\t\t\tAssert.Equal(expectedRequestUri, requestMessage.RequestUri);\n\n\t\t\t\tassertion?.Invoke(requestMessage);\n\t\t\t});\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/KubeClient.TestCommon.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n\n    <IsPackable>false</IsPackable>\n    <IsTestProject>false</IsTestProject>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"7.0.0\" />\n\n    <PackageReference Include=\"xunit\" Version=\"2.9.3\" />\n  </ItemGroup>\n  \n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"8.0.8\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"8.0.0\" />\n\n    <PackageReference Include=\"xunit\" Version=\"2.9.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"9.0.3\" />\n\n    <PackageReference Include=\"xunit\" Version=\"2.9.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Logging.Debug\" Version=\"10.0.0\" />\n\n    <PackageReference Include=\"xunit\" Version=\"2.9.3\" />\n  </ItemGroup>\n  \n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n</Project>\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Logging/TestOutputLogger.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Reactive.Disposables;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.TestCommon\n{\n    /// <summary>\n    /// \tAn implementation of <see cref=\"ILogger\"/> that writes to the output of the current Xunit test.\n    /// </summary>\n    sealed class TestOutputLogger\n        : ILogger\n    {\n        /// <summary>\n        /// \tCreate a new <see cref=\"TestOutputLogger\"/>.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     The output for the current test.\n        /// </param>\n        /// <param name=\"loggerCategory\">\n        ///     The logger's category name.\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        /// \tThe logger's minimum log level.\n        /// </param>\n        public TestOutputLogger(ITestOutputHelper testOutput, string loggerCategory, LogLevel minLogLevel)\n        {\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n\n            if (String.IsNullOrWhiteSpace(loggerCategory))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'loggerCategory'.\", nameof(loggerCategory));\n            \n            TestOutput = testOutput;\n            LoggerCategory = loggerCategory;\n            MinLogLevel = minLogLevel;\n        }\n\n        /// <summary>\n        ///     The output for the current test.\n        /// </summary>\n        public ITestOutputHelper TestOutput { get; }\n\n        /// <summary>\n        ///     The logger's category name.\n        /// </summary>\n        public string LoggerCategory { get; }\n\n        /// <summary>\n        /// \tThe logger's minimum log level.\n        /// </summary>\n        public LogLevel MinLogLevel { get; }\n\n        /// <summary>\n        /// \tEmit a log entry.\n        /// </summary>\n        /// <param name=\"level\">\n        /// \tThe log entry's level.\n        /// </param>\n        /// <param name=\"eventId\">\n        /// \tThe log entry's associated event Id.\n        /// </param>\n        /// <param name=\"state\">\n        /// \tThe log entry to be written. Can be also an object.\n        /// </param>\n        /// <param name=\"exception\">\n        /// \tThe exception (if any) related to the log entry.\n        /// </param>\n        /// <param name=\"formatter\">\n        /// \tA function that creates a <c>string</c> log message from the <paramref name=\"state\"/> and <paramref name=\"exception\"/>.\n        /// </param>\n        public void Log<TState>(LogLevel level, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)\n        {\n            if (formatter == null)\n                throw new ArgumentNullException(nameof(formatter));\n\n            TestOutput.WriteLine(String.Format(\"[{0}] {1}: {2}\",\n                level,\n                LoggerCategory,\n                formatter(state, exception)\n            ));\n        }\n\n        /// <summary>\n        /// \tCheck if the given <paramref name=\"logLevel\"/> is enabled.\n        /// </summary>\n        /// <param name=\"logLevel\">\n        /// \tThe level to be checked.\n        /// </param>\n        /// <returns>\n        /// \t<c>true</c> if enabled; otherwise, <c>false</c>.\n        /// </returns>\n        public bool IsEnabled(LogLevel logLevel) => logLevel >= MinLogLevel;\n\n        /// <summary>\n        /// \tBegin a logical operation scope.\n        /// </summary>\n        /// <param name=\"state\">\n        /// \tAn identifier for the scope.\n        /// </param>\n        /// <returns>\n        /// \tAn <see cref=\"IDisposable\"/> that ends the logical operation scope when disposed.\n        /// </returns>\n        public IDisposable BeginScope<TState>(TState state) => Disposable.Empty;\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Logging/TestOutputLoggerProvider.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.TestCommon\n{\n    /// <summary>\n    ///     Logger provider for logging to Xunit test output.\n    /// </summary>\n    sealed class TestOutputLoggerProvider\n        : ILoggerProvider\n    {\n        /// <summary>\n        /// \tCreate a new <see cref=\"TestOutputLoggerProvider\"/>.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     The output for the current test.\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        /// \tThe logger's minimum log level.\n        /// </param>\n        public TestOutputLoggerProvider(ITestOutputHelper testOutput, LogLevel minLogLevel)\n        {\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n            \n            TestOutput = testOutput;\n            MinLogLevel = minLogLevel;\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the logger provider.\n        /// </summary>\n        public void Dispose()\n        {\n        }\n\n        /// <summary>\n        ///     The output for the current test.\n        /// </summary>\n        ITestOutputHelper TestOutput { get; }\n\n        /// <summary>\n        /// \tThe logger's minimum log level.\n        /// </summary>\n        public LogLevel MinLogLevel { get; }\n\n        /// <summary>\n        ///     Create a new logger.\n        /// </summary>\n        /// <param name=\"categoryName\">\n        ///     The logger category name.\n        /// </param>\n        /// <returns>\n        ///     The logger, as an <see cref=\"ILogger\"/>.\n        /// </returns>\n        public ILogger CreateLogger(string categoryName) => new TestOutputLogger(TestOutput, categoryName, MinLogLevel);\n    }\n}"
  },
  {
    "path": "test/KubeClient.TestCommon/Logging/TestOutputLoggingExtensions.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.TestCommon.Logging\n{\n    /// <summary>\n    ///     Extension methods for logging to Xunit text output.\n    /// </summary>\n    public static class TestOutputLoggingExtensions\n    {\n        static readonly LogLevel DefaultMinLogLevel = LogLevel.Information;\n\n        /// <summary>\n        ///     Log to test output.\n        /// </summary>\n        /// <param name=\"logging\">\n        ///     The global logging configuration.\n        /// </param>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        ///     The minimum level to log at.\n        /// </param>\n        public static void AddTestOutput(this ILoggingBuilder logging, ITestOutputHelper testOutput, LogLevel? minLogLevel = null)\n        {\n            if (logging == null)\n                throw new ArgumentNullException(nameof(logging));\n\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n            \n            logging.AddProvider(\n                new TestOutputLoggerProvider(testOutput, minLogLevel ?? DefaultMinLogLevel)\n            );\n        }\n\n        /// <summary>\n        ///     Log to test output.\n        /// </summary>\n        /// <param name=\"loggers\">\n        ///     The logger factory.\n        /// </param>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        ///     The minimum level to log at.\n        /// </param>\n        /// <returns>\n        ///     The logger factory (enables inline use / method-chaining).\n        /// </returns>\n        public static ILoggerFactory AddTestOutput(this ILoggerFactory loggers, ITestOutputHelper testOutput, LogLevel? minLogLevel = null)\n        {\n            if (loggers == null)\n                throw new ArgumentNullException(nameof(loggers));\n            \n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n            \n            loggers.AddProvider(\n                new TestOutputLoggerProvider(testOutput, minLogLevel ?? DefaultMinLogLevel)\n            );\n\n            return loggers;\n        }\n    }\n}"
  },
  {
    "path": "test/KubeClient.TestCommon/Mocks/JsonPatch.cs",
    "content": "﻿using Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Runtime.Serialization;\n\nnamespace KubeClient.TestCommon.Mocks\n{\n    /// <summary>\n    ///     Represents a single operation within a JSON Patch request.\n    /// </summary>\n    /// <param name=\"Kind\">\n    ///     A <see cref=\"JsonPatchOperationKind\"/> value indicating the kind of operation.\n    /// </param>\n    /// <param name=\"Path\">\n    ///     The path of the operation's target token.\n    /// </param>\n    /// <param name=\"Value\">\n    ///     The operation's associated value (semantics dependent on <see cref=\"Kind\"/>).\n    /// </param>\n    public record class JsonPatchOperation(\n        [JsonProperty(\"op\")] JsonPatchOperationKind Kind,\n        [JsonProperty(\"path\")] string Path,\n        [JsonProperty(\"value\")] JToken Value\n    )\n    {\n        /// <summary>\n        ///     Is the <see cref=\"JsonPatchOperation\"/> valid?\n        /// </summary>\n        [JsonIgnore]\n        public bool IsValid\n        {\n            get\n            {\n                if (Kind == JsonPatchOperationKind.Unknown || !Enum.IsDefined(Kind))\n                    return false;\n\n                if (String.IsNullOrWhiteSpace(Path))\n                    return false;\n\n                if (Value == null && Kind != JsonPatchOperationKind.Delete)\n                    return false;\n\n                return true;\n            }\n        }\n\n        /// <summary>\n        ///     Ensure that the <see cref=\"JsonPatchOperation\"/> is valid.\n        /// </summary>\n        /// <exception cref=\"JsonException\">\n        ///     The <see cref=\"JsonPatchOperation\"/> is not valid.\n        /// </exception>\n        public void EnsureValid()\n        {\n            if (Kind == JsonPatchOperationKind.Unknown || !Enum.IsDefined(Kind))\n                throw new JsonException($\"Invalid JSON-patch operation (invalid 'operation' kind).\");\n\n            if (String.IsNullOrWhiteSpace(Path))\n                throw new JsonException($\"Invalid JSON-patch operation (missing 'path' directive).\");\n\n            if (Value == null && Kind != JsonPatchOperationKind.Delete)\n                throw new JsonException($\"Invalid JSON-patch operation (missing 'value' directive but operation is '{Kind}', not 'delete').\");\n        }\n    }\n\n    /// <summary>\n    ///     Well-known kinds of JSON Patch operation.\n    /// </summary>\n    public enum JsonPatchOperationKind\n    {\n        /// <summary>\n        ///     An unknown kind of JSON Patch operation.\n        /// </summary>\n        Unknown = 0,\n\n        /// <summary>\n        ///     A deletion operation.\n        /// </summary>\n        [EnumMember(Value = \"delete\")]\n        Delete = 5,\n\n        /// <summary>\n        ///     A replacement operation.\n        /// </summary>\n        [EnumMember(Value = \"replace\")]\n        Replace = 10,\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Mocks/MockApiResults.cs",
    "content": "﻿using KubeClient.Models;\nusing Microsoft.AspNetCore.Http;\n\nnamespace KubeClient.TestCommon.Mocks\n{\n    /// <summary>\n    ///     Factory methods for well-known API results returned from minimal APIs.\n    /// </summary>\n    public static class MockApiResults\n    {\n        /// <summary>\n        ///     Create an HTTP 200 result that serialises the specified value as JSON using the Newtonsoft serialiser and sends it as the response body.\n        /// </summary>\n        /// <typeparam name=\"TValue\">\n        ///     The type of value to use as the response body.\n        /// </typeparam>\n        /// <param name=\"value\">\n        ///     The value to use as the response body.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IResult\"/>.\n        /// </returns>\n        public static IResult Ok<TValue>(TValue value) => new NewtonsoftJsonHttpResult<TValue>(value, StatusCodes.Status200OK);\n\n        /// <summary>\n        ///     Create an HTTP 400 result that serialises the specified status as JSON using the Newtonsoft serialiser and sends it as the response body.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The <see cref=\"StatusV1\"/> to use as the response body.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IResult\"/>.\n        /// </returns>\n        public static IResult BadRequest(StatusV1 status) => new NewtonsoftJsonHttpResult<StatusV1>(status, StatusCodes.Status400BadRequest);\n\n        /// <summary>\n        ///     Create an HTTP 404 result that serialises the specified status as JSON using the Newtonsoft serialiser and sends it as the response body.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The <see cref=\"StatusV1\"/> to use as the response body.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IResult\"/>.\n        /// </returns>\n        public static IResult NotFound(StatusV1 status) => new NewtonsoftJsonHttpResult<StatusV1>(status, StatusCodes.Status404NotFound);\n\n        /// <summary>\n        ///     Create an HTTP 500 result that serialises the specified status as JSON using the Newtonsoft serialiser and sends it as the response body.\n        /// </summary>\n        /// <param name=\"status\">\n        ///     The <see cref=\"StatusV1\"/> to use as the response body.\n        /// </param>\n        /// <returns>\n        ///     The <see cref=\"IResult\"/>.\n        /// </returns>\n        public static IResult InternalServerError(StatusV1 status) => new NewtonsoftJsonHttpResult<StatusV1>(status, StatusCodes.Status500InternalServerError);\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Mocks/MockKubeApi.cs",
    "content": "﻿using KubeClient.Models;\nusing KubeClient.TestCommon.Logging;\nusing Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Diagnostics;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.TestHost;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing Newtonsoft.Json;\nusing System;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Xunit.Abstractions;\n\n#pragma warning disable ASP0012 // Suggest using builder.Services over Host.ConfigureServices or WebHost.ConfigureServices\n\nnamespace KubeClient.TestCommon.Mocks\n{\n    /// <summary>\n    ///     A mock implementation of the Kubernetes API.\n    /// </summary>\n    public sealed class MockKubeApi\n        : IAsyncDisposable\n    {\n        /// <summary>\n        ///     The underlying <see cref=\"WebApplication\"/> that hosts the mock API.\n        /// </summary>\n        readonly WebApplication _webApplication;\n\n        /// <summary>\n        ///     The <see cref=\"TestServer\"/> that provides in-process access to the hosted <see cref=\"WebApplication\"/>.\n        /// </summary>\n        readonly TestServer _testServer;\n\n        /// <summary>\n        ///     Has the <see cref=\"MockKubeApi\"/> been disposed?\n        /// </summary>\n        int _isDisposed;\n\n        #region Construction / Disposal\n\n        /// <summary>\n        ///     Create a new <see cref=\"MockKubeApi\"/>.\n        /// </summary>\n        /// <param name=\"webApplication\">\n        ///     The underlying <see cref=\"WebApplication\"/> that hosts the mock API.\n        /// </param>\n        MockKubeApi(WebApplication webApplication)\n        {\n            if (webApplication == null)\n                throw new ArgumentNullException(nameof(webApplication));\n\n            _webApplication = webApplication;\n            _testServer = webApplication.GetTestServer();\n        }\n\n        /// <summary>\n        ///     Asynchronously dispose of resources being used by the mock API.\n        /// </summary>\n        /// <returns>\n        ///     A <see cref=\"ValueTask\"/> representing the disposal operation.\n        /// </returns>\n        public async ValueTask DisposeAsync()\n        {\n            int wasDisposed = Interlocked.Exchange(ref _isDisposed, 1);\n            if (wasDisposed != 0)\n                return;\n\n            await using WebApplication webApplication = _webApplication;\n            using TestServer testServer = _testServer;\n        }\n\n        /// <summary>\n        ///     Check if the <see cref=\"MockKubeApi\"/> has been disposed.\n        /// </summary>\n        /// <exception cref=\"ObjectDisposedException\">\n        ///     The <see cref=\"MockKubeApi\"/> has been disposed.\n        /// </exception>\n        void CheckDisposed()\n        {\n            if (_isDisposed != 0)\n                throw new ObjectDisposedException(GetType().Name);\n        }\n\n        #endregion // Construction / Disposal\n\n        /// <summary>\n        ///     The base address of the mock API.\n        /// </summary>\n        public Uri BaseAddress\n        {\n            get\n            {\n                CheckDisposed();\n\n                return _testServer.BaseAddress;\n            }\n        }\n\n        /// <summary>\n        ///     Create a custom <see cref=\"HttpMessageHandler\" /> for processing HTTP requests/responses against the mock Kubernetes API.\n        /// </summary>\n        public HttpMessageHandler CreateHandler()\n        {\n            CheckDisposed();\n\n            return _testServer.CreateHandler();\n        }\n\n#if !NET6_0\n\n        /// <summary>\n        ///     Create a custom <see cref=\"HttpMessageHandler\" /> for processing HTTP requests/responses with custom configuration against the mock Kubernetes API.\n        /// </summary>\n        public HttpMessageHandler CreateHandler(Action<HttpContext> additionalContextConfiguration)\n        {\n            CheckDisposed();\n\n            return _testServer.CreateHandler(additionalContextConfiguration);\n        }\n\n#endif // !NET6_0\n\n        /// <summary>\n        ///     Create a <see cref=\"HttpClient\" /> for processing HTTP requests/responses against the mock Kubernetes API.\n        /// </summary>\n        public HttpClient CreateClient()\n        {\n            CheckDisposed();\n\n            return _testServer.CreateClient();\n        }\n\n        /// <summary>\n        ///     Create a <see cref=\"WebSocketClient\" /> for interacting with the mock Kubernetes API.\n        /// </summary>\n        public WebSocketClient CreateWebSocketClient()\n        {\n            CheckDisposed();\n            \n            return _testServer.CreateWebSocketClient();\n        }\n\n        /// <summary>\n        ///     Start constructing a request message for submission to the mock Kubernetes API.\n        /// </summary>\n        /// <param name=\"path\">\n        ///     The request path.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"RequestBuilder\"/> used to construct the request.\n        /// </returns>\n        public RequestBuilder CreateRequest(string path)\n        {\n            if (path == null)\n                throw new ArgumentNullException(nameof(path));\n\n            return _testServer.CreateRequest(path);\n        }\n\n        /// <summary>\n        ///     Get a simple dictionary key to identify a resource.\n        /// </summary>\n        /// <param name=\"resourceMetadata\">\n        ///     The resource metadata.\n        /// </param>\n        /// <returns>\n        ///     A string that can be used as a dictionary key to identify the resource.\n        /// </returns>\n        public static string GetResourceKey(ObjectMetaV1 resourceMetadata)\n        {\n            if (resourceMetadata == null)\n                throw new ArgumentNullException(nameof(resourceMetadata));\n\n            return GetResourceKey(resourceMetadata.Name, resourceMetadata.Namespace);\n        }\n\n        /// <summary>\n        ///     Get a simple dictionary key to identify a resource.\n        /// </summary>\n        /// <param name=\"resourceName\">\n        ///     The resource name.\n        /// </param>\n        /// <param name=\"resourceNamespace\">\n        ///     The resource namespace.\n        /// </param>\n        /// <returns>\n        ///     A string that can be used as a dictionary key to identify the resource.\n        /// </returns>\n        public static string GetResourceKey(string resourceName, string resourceNamespace)\n        {\n            if (String.IsNullOrWhiteSpace(resourceName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourceName)}.\", nameof(resourceName));\n\n            if (resourceNamespace != null)\n                return $\"{resourceNamespace}/{resourceName}\";\n\n            return resourceName;\n        }\n\n        /// <summary>\n        ///     Start a new <see cref=\"MockKubeApi\"/> instance.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     An <see cref=\"ITestOutputHelper\"/> representing the output for the current test.\n        /// </param>\n        /// <param name=\"configureApp\">\n        ///     An optional delegate to configure the request-processing pipeline (i.e. API end-points).\n        /// </param>\n        /// <param name=\"configureServices\">\n        ///     An optional delegate to configure server-side components and services (<see cref=\"IServiceCollection\"/>, etc).\n        /// </param>\n        /// <param name=\"configureConfiguration\">\n        ///     An optional delegate to configure server-side configuration (<see cref=\"IConfiguration\"/>, etc).\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        ///     An optional minimum level to log at (defaults to <see cref=\"LogLevel.Information\"/>).\n        /// </param>\n        /// <returns>\n        ///     The configured (and running) <see cref=\"MockKubeApi\"/>.\n        /// </returns>\n        public static MockKubeApi Create(ITestOutputHelper testOutput, Action<WebApplication> configureApp = null, Action<WebHostBuilderContext, IServiceCollection> configureServices = null, Action<ConfigurationManager> configureConfiguration = null, LogLevel? minLogLevel = null)\n        {\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n\n            WebApplication webApp = BuildWebApplication(testOutput, configureApp, configureServices, configureConfiguration, minLogLevel);\n\n            try\n            {\n                webApp.Start();\n\n                return new MockKubeApi(webApp);\n            }\n            catch (Exception)\n            {\n                // Clean up.\n                using (webApp)\n                {\n                    throw;\n                }\n            }\n        }\n\n        /// <summary>\n        ///     Build a <see cref=\"WebApplication\"/> to host the mock API.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     An <see cref=\"ITestOutputHelper\"/> representing the output for the current test.\n        /// </param>\n        /// <param name=\"configureApp\">\n        ///     An optional delegate to configure the server-side request-processing pipeline (i.e. API end-points).\n        /// </param>\n        /// <param name=\"configureServices\">\n        ///     An optional delegate to configure server-side components and services (<see cref=\"IServiceCollection\"/>, etc).\n        /// </param>\n        /// <param name=\"configureConfiguration\">\n        ///     An optional delegate to configure server-side configuration (<see cref=\"IConfiguration\"/>, etc).\n        /// </param>\n        /// <param name=\"minLogLevel\">\n        ///     An optional minimum level to log at (defaults to <see cref=\"LogLevel.Information\"/>).\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        static WebApplication BuildWebApplication(ITestOutputHelper testOutput, Action<WebApplication> configureApp, Action<WebHostBuilderContext, IServiceCollection> configureServices, Action<ConfigurationManager> configureConfiguration, LogLevel? minLogLevel)\n        {\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n\n            WebApplicationBuilder webAppBuilder = WebApplication.CreateBuilder();\n\n            DefaultConfiguration(webAppBuilder.Configuration);\n            if (configureConfiguration != null)\n                configureConfiguration(webAppBuilder.Configuration);\n\n            webAppBuilder.Logging.AddDebug();\n            webAppBuilder.Logging.AddTestOutput(testOutput, minLogLevel);\n            if (minLogLevel != null)\n                webAppBuilder.Logging.SetMinimumLevel(minLogLevel.Value);\n            \n            webAppBuilder.WebHost.UseTestServer(testServer =>\n            {\n                testServer.AllowSynchronousIO = true;\n            });\n            \n            webAppBuilder.WebHost.ConfigureServices(DefaultServices);\n            if (configureServices != null)\n                webAppBuilder.WebHost.ConfigureServices(configureServices);\n\n            WebApplication webApp = webAppBuilder.Build();\n\n            DefaultApplication(webApp);\n\n            if (configureApp != null)\n                configureApp(webApp);\n\n            return webApp;\n        }\n\n        /// <summary>\n        ///     Default server-side configuration for the mock API.\n        /// </summary>\n        /// <param name=\"configuration\">\n        ///     The <see cref=\"ConfigurationManager\"/> to configure.\n        /// </param>\n        public static void DefaultConfiguration(ConfigurationManager configuration)\n        {\n            if (configuration == null)\n                throw new ArgumentNullException(nameof(configuration));\n        }\n\n        /// <summary>\n        ///     Default server-side dependency-injection configuration for the mock API.\n        /// </summary>\n        /// <param name=\"context\">\n        ///     Contextual information about the web host being build.\n        /// </param>\n        /// <param name=\"services\">\n        ///     The <see cref=\"IServiceCollection\"/> to configure.\n        /// </param>\n        public static void DefaultServices(WebHostBuilderContext context, IServiceCollection services)\n        {\n            if (context == null)\n                throw new ArgumentNullException(nameof(context));\n\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n        }\n\n        /// <summary>\n        ///     Default configuration for the server-side request-processing pipeline (i.e. API end-points).\n        /// </summary>\n        /// <param name=\"webApp\">\n        ///     The <see cref=\"WebApplication\"/> to configure.\n        /// </param>\n        public static void DefaultApplication(WebApplication webApp)\n        {\n            if (webApp == null)\n                throw new ArgumentNullException(nameof(webApp));\n\n            webApp.UseExceptionHandler(new ExceptionHandlerOptions\n            {\n                ExceptionHandler = async (context) =>\n                {\n                    if (context.Response.HasStarted)\n                        return;\n\n                    context.Response.StatusCode = StatusCodes.Status500InternalServerError;\n                    context.Response.ContentType = \"application/json\";\n\n                    StatusV1 responseBody = StatusV1.Failure($\"An unexpected error occurred while handling {context.Request.Method} request on '{context.Request.Path}'.\",\n                        reason: \"InternalServerError\",\n                        code: StatusCodes.Status500InternalServerError\n                    );\n\n                    IExceptionHandlerFeature exceptionHandlerFeature = context.Features.Get<IExceptionHandlerFeature>();\n                    if (exceptionHandlerFeature?.Error != null)\n                        responseBody.Message = exceptionHandlerFeature.Error.ToString();\n\n                    await context.Response.WriteAsync(\n                        JsonConvert.SerializeObject(responseBody),\n                        cancellationToken: context.RequestAborted\n                    );\n                }\n            });\n\n            webApp.MapFallback((HttpContext context) =>\n            {\n                ILogger logger = context.RequestServices.GetRequiredService<ILoggerFactory>().CreateLogger(\"MockKubeApi.FallbackHandler\");\n\n                logger.LogWarning(\"Unhandled {RequestMethod} request to {RequestPath}.\", context.Request.Method, context.Request.Path);\n\n                return Results.Content(\n                    JsonConvert.SerializeObject(\n                        StatusV1.Failure($\"No handler is registered for {context.Request.Method} requests on '{context.Request.Path}'.\",\n                            reason: \"NotImplemented\",\n                            code: StatusCodes.Status501NotImplemented\n                        )\n                    ),\n                    contentType: \"application/json\",\n                    statusCode: StatusCodes.Status501NotImplemented\n                );\n            });\n        }\n\n        /// <summary>\n        ///     Synchronous delegate for listing all resources of a given (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model representing a list of <typeparamref name=\"TResource\"/>s (must derive from <see cref=\"KubeResourceListV1{TResource}\"/>).\n        /// </typeparam>\n        /// <returns>\n        ///     The list of resources.\n        /// </returns>\n        public delegate TResourceList ListResourcesHandler<TResource, TResourceList>()\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>;\n\n        /// <summary>\n        ///     Synchronous delegate for listing all resources of a given (namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model representing a list of <typeparamref name=\"TResource\"/>s (must derive from <see cref=\"KubeResourceListV1{TResource}\"/>).\n        /// </typeparam>\n        /// <returns>\n        ///     The list of resources.\n        /// </returns>\n        public delegate TResourceList ListNamespacedResourcesHandler<TResource, TResourceList>(string resourceNamespace)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>;\n\n        /// <summary>\n        ///     Asynchronous delegate for listing all resources of a given (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model representing a list of <typeparamref name=\"TResource\"/>s (must derive from <see cref=\"KubeResourceListV1{TResource}\"/>).\n        /// </typeparam>\n        /// <returns>\n        ///     The list of resources.\n        /// </returns>\n        public delegate Task<TResourceList> AsyncListResourcesHandler<TResource, TResourceList>()\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>;\n\n        /// <summary>\n        ///     Aynchronous delegate for listing all resources of a given (namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model representing a list of <typeparamref name=\"TResource\"/>s (must derive from <see cref=\"KubeResourceListV1{TResource}\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceNamespace\">\n        ///     The name of the target namespace.\n        /// </param>\n        /// <returns>\n        ///     The list of resources.\n        /// </returns>\n        public delegate Task<TResourceList> AsyncListNamespacedResourcesHandler<TResource, TResourceList>(string resourceNamespace)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>;\n\n        /// <summary>\n        ///     Synchronous delegate for retrieving persisted state for a single (non-namespaced) resource instance.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <returns>\n        ///     The resource, or <c>null</c> if no persisted state exists for the resource with the specified name.\n        /// </returns>\n        public delegate TResource LoadResourceHandler<TResource>(string resourceName)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Synchronous delegate for retrieving persisted state for a single (namespaced) resource instance.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <param name=\"resourceNamespace\">\n        ///     The name of the target resource's namespace.\n        /// </param>\n        /// <returns>\n        ///     The resource, or <c>null</c> if no persisted state exists for the resource with the specified name and namespace.\n        /// </returns>\n        public delegate TResource LoadNamespacedResourceHandler<TResource>(string resourceName, string resourceNamespace)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Asynchronous delegate for retrieving persisted state for a single (non-namespaced) resource instance.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <returns>\n        ///     The resource, or <c>null</c> if no persisted state exists for the resource with the specified name.\n        /// </returns>\n        public delegate Task<TResource> AsyncLoadResourceHandler<TResource>(string resourceName)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Asynchronous delegate for retrieving persisted state for a single (namespaced) resource instance.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <param name=\"resourceNamespace\">\n        ///     The name of the target resource's namespace.\n        /// </param>\n        /// <returns>\n        ///     The resource, or <c>null</c> if no persisted state exists for the resource with the specified name and namespace.\n        /// </returns>\n        public delegate Task<TResource> AsyncLoadNamespacedResourceHandler<TResource>(string resourceName, string resourceNamespace)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Synchronous delegate for persisting state for a single resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resource\">\n        ///     A <typeparamref name=\"TResource\"/> representing the resource state to persist.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the persisted resource state.\n        /// </returns>\n        public delegate TResource SaveResourceHandler<TResource>(TResource resource)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Asynchronous delegate for persisting state for a single resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resource\">\n        ///     A <typeparamref name=\"TResource\"/> representing the resource state to persist.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the persisted resource state.\n        /// </returns>\n        public delegate Task<TResource> AsyncSaveResourceHandler<TResource>(TResource resource)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Synchronous delegate for applying a patch request to persisted state for a single (non-namespaced) resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the modified (and persisted) resource state, or <c>null</c> if no persisted state exists for the resource with the specified name.\n        /// </returns>\n        public delegate TResource PatchResourceHandler<TResource>(string resourceName, JsonPatchOperation[] patchRequest)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Synchronous delegate for applying a patch request to persisted state for a single (namespaced) resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <param name=\"resourceNamespace\">\n        ///     The name of the target resource's namespace.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the modified (and persisted) resource state, or <c>null</c> if no persisted state exists for the resource with the specified name and namespace.\n        /// </returns>\n        public delegate TResource PatchNamespacedResourceHandler<TResource>(string resourceName, string resourceNamespace, JsonPatchOperation[] patchRequest)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Asynchronous delegate for applying a patch request to persisted state for a single (non-namespaced) resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the modified (and persisted) resource state, or <c>null</c> if no persisted state exists for the resource with the specified name.\n        /// </returns>\n        public delegate Task<TResource> AsyncPatchResourceHandler<TResource>(string resourceName, JsonPatchOperation[] patchRequest)\n            where TResource : KubeResourceV1;\n\n        /// <summary>\n        ///     Asynchronous delegate for applying a patch request to persisted state for a single (non-namespaced) resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model representing the target resource type (must derive from <see cref=\"KubeResourceV1\"/>).\n        /// </typeparam>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <param name=\"resourceNamespace\">\n        ///     The name of the target resource's namespace.\n        /// </param>\n        /// <returns>\n        ///     A <typeparamref name=\"TResource\"/> representing the modified (and persisted) resource state, or <c>null</c> if no persisted state exists for the resource with the specified name and namespace.\n        /// </returns>\n        public delegate Task<TResource> AsyncPatchNamespacedResourceHandler<TResource>(string resourceName, string resourceNamespace, JsonPatchOperation[] patchRequest)\n            where TResource : KubeResourceV1;\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Mocks/MockKubeApiExtensions.cs",
    "content": "﻿using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Routing;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Reactive.Subjects;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nusing Xunit;\nusing NJ = Newtonsoft.Json;\n\nnamespace KubeClient.TestCommon.Mocks\n{\n    using ApiMetadata;\n    using Models;\n\n    /// <summary>\n    ///     Extensions for configuring <see cref=\"MockKubeApi\"/>.\n    /// </summary>\n    public static class MockKubeApiExtensions\n    {\n        /// <summary>\n        ///     Configure the mock API to handle all standard requests for the specified resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model (derived from <see cref=\"KubeResourceListV1\"/>) used to represent a list of <typeparamref name=\"TResource\"/>s.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resources\">\n        ///     A <see cref=\"ConcurrentDictionary{TKey, TValue}\"/> that will be used as a backing store to represent resource instances.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResources<TResource, TResourceList>(this WebApplication mockKubeApiApp, ConcurrentDictionary<string, TResource> resources)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>, new()\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (resources == null)\n                throw new ArgumentNullException(nameof(resources));\n\n            Subject<TResource> watchSubject = new Subject<TResource>();\n\n            mockKubeApiApp.Lifetime.ApplicationStopping.Register(() =>\n            {\n                using (watchSubject)\n                {\n                    watchSubject.OnCompleted();\n                }\n            });\n\n            mockKubeApiApp.HandleResources<TResource, TResourceList>(\n                listResources: (string resourceNamespace) =>\n                {\n                    IEnumerable<TResource> matchingResources = resources.Values;\n\n                    if (resourceNamespace != null)\n                    {\n                        matchingResources = matchingResources.Where(\n                            resource => resource.Metadata?.Namespace == resourceNamespace\n                        );\n                    }\n\n                    return matchingResources\n                        .OrderBy(\n                            resource => resource.Metadata?.Name ?? String.Empty\n                        )\n                        .ToList();\n                },\n                loadResource: (string resourceName, string resourceNamespace) =>\n                {\n                    string persistenceKey = MockKubeApi.GetResourceKey(resourceName, resourceNamespace);\n                    if (resources.TryGetValue(persistenceKey, out TResource persistedResource))\n                        return persistedResource;\n\n                    return null;\n                },\n                saveResource: (TResource resource) =>\n                {\n                    string persistenceKey = MockKubeApi.GetResourceKey(resource.Metadata);\n                    TResource persistedResource = resources.AddOrUpdate(persistenceKey,\n                        addValue: resource,\n                        updateValueFactory: (string persistenceKey, TResource updatedResource) => resource\n                    );\n\n                    return persistedResource;\n                },\n                watchSubject\n            );\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle all standard requests for the specified resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model (derived from <see cref=\"KubeResourceListV1\"/>) used to represent a list of <typeparamref name=\"TResource\"/>s.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resources\">\n        ///     A <see cref=\"ConcurrentDictionary{TKey, TValue}\"/> that will be used as a backing store to represent resource instances.\n        /// </param>\n        /// <param name=\"watchSubject\">\n        ///     A <see cref=\"ISubject{T}\"/> that can be used to publish or observe resource-change notifications.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResources<TResource, TResourceList>(this WebApplication mockKubeApiApp, ConcurrentDictionary<string, TResource> resources, ISubject<TResource> watchSubject)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>, new()\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (resources == null)\n                throw new ArgumentNullException(nameof(resources));\n\n            if (watchSubject == null)\n                throw new ArgumentNullException(nameof(watchSubject));\n\n            mockKubeApiApp.HandleResources<TResource, TResourceList>(\n                listResources: (string resourceNamespace) =>\n                {\n                    IEnumerable<TResource> matchingResources = resources.Values;\n\n                    if (resourceNamespace != null)\n                    {\n                        matchingResources = matchingResources.Where(\n                            resource => resource.Metadata?.Namespace == resourceNamespace\n                        );\n                    }\n                    \n                    return matchingResources\n                        .OrderBy(\n                            resource => resource.Metadata?.Name ?? String.Empty\n                        )\n                        .ToList();\n                },\n                loadResource: (string resourceName, string resourceNamespace) =>\n                {\n                    string persistenceKey = MockKubeApi.GetResourceKey(resourceName, resourceNamespace);\n                    if (resources.TryGetValue(persistenceKey, out TResource persistedResource))\n                        return persistedResource;\n\n                    return null;\n                },\n                saveResource: (TResource resource) =>\n                {\n                    string persistenceKey = MockKubeApi.GetResourceKey(resource.Metadata);\n                    TResource persistedResource = resources.AddOrUpdate(persistenceKey,\n                        addValue: resource,\n                        updateValueFactory: (string persistenceKey, TResource updatedResource) => resource\n                    );\n\n                    return persistedResource;\n                },\n                watchSubject\n            );\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle all standard requests for the specified resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model (derived from <see cref=\"KubeResourceListV1\"/>) used to represent a list of <typeparamref name=\"TResource\"/>s.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"listResources\">\n        ///     A delegate that is called to obtain a list of all resources of the specified type.\n        ///     \n        ///     <para>\n        ///         Return value is a sequence of resources.\n        ///     </para>\n        /// </param>\n        /// <param name=\"loadResource\">\n        ///     A delegate that is called to retrieve a single persisted resource of the specified type.\n        ///     \n        ///     <para>\n        ///         Arguments are the name namespace of the target resource, return value is the persisted resource.\n        ///     </para>\n        /// </param>\n        /// <param name=\"saveResource\">\n        ///     A delegate that is called to persist a single resource of the specified type.\n        ///     \n        ///     <para>\n        ///         Argument is resource to persist, return value is the persisted resource.\n        ///     </para>\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResources<TResource, TResourceList>(this WebApplication mockKubeApiApp, Func<string, List<TResource>> listResources, Func<string, string, TResource> loadResource, Func<TResource, TResource> saveResource, ISubject<TResource> watchSubject)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>, new()\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (listResources == null)\n                throw new ArgumentNullException(nameof(listResources));\n\n            if (loadResource == null)\n                throw new ArgumentNullException(nameof(loadResource));\n\n            if (saveResource == null)\n                throw new ArgumentNullException(nameof(saveResource));\n\n            if (watchSubject == null)\n                throw new ArgumentNullException(nameof(watchSubject));\n\n            KubeApiMetadataCache apiMetadataCache = LoadMetadata<TResource>();\n\n            (string resourceKind, string resourceApiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n            KubeApiMetadata resourceMetadata = apiMetadataCache.Get(resourceKind, resourceApiVersion);\n            if (resourceMetadata == null)\n                throw new InvalidOperationException($\"Failed to load metadata for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            (string listKind, string listApiVersion) = KubeObjectV1.GetKubeKind<TResourceList>();\n            \n            KubeApiPathMetadata listPath = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.List);\n            if (listPath == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-list path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata getPath = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Get);\n            if (getPath == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-get path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata createPath = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Create);\n            if (createPath == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-create path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata updatePath = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Update);\n            if (updatePath == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-update path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata patchPath = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Patch);\n            if (patchPath == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-patch path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata watchPath = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Watch);\n            if (watchPath == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-create path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            // We need to handle namespaced paths differently because of how ASP.NET Core Minimal APIs does route matching / parameter binding on path segments.\n            bool isNamespaced = listPath.IsNamespaced;\n            if (isNamespaced)\n            {\n                mockKubeApiApp.HandleResourceList<TResource, TResourceList>(listPath.Path, (string resourceNamespace) =>\n                {\n                    List<TResource> resources = listResources(resourceNamespace);\n                    if (resources == null)\n                        throw new InvalidOperationException($\"Resource-list handler for {resourceApiVersion}/{resourceKind} returned null.\");\n\n                    TResourceList resourceList = new TResourceList();\n                    resourceList.Items.AddRange(resources);\n\n                    return resourceList;\n                });\n\n                mockKubeApiApp.HandleResourceGet(getPath.Path, (string resourceName, string resourceNamespace) =>\n                {\n                    TResource resource = loadResource(resourceName, resourceNamespace);\n\n                    return resource;\n                });\n\n                mockKubeApiApp.HandleResourcePatch(patchPath.Path, (string resourceName, string resourceNamespace, JsonPatchOperation[] patchRequest) =>\n                {\n                    TResource persistedResource = loadResource(resourceName, resourceNamespace);\n                    if (persistedResource == null)\n                        return null;\n\n                    TResource patchedResource = persistedResource.ApplyJsonPatch(patchRequest);\n                    persistedResource = saveResource(patchedResource);\n\n                    watchSubject.OnNext(persistedResource);\n\n                    return persistedResource;\n                });\n            }\n            else\n            {\n                mockKubeApiApp.HandleResourceList<TResource, TResourceList>(listPath.Path, () =>\n                {\n                    string resourceNamespace = null;\n                    List<TResource> resources = listResources(resourceNamespace);\n                    if (resources == null)\n                        throw new InvalidOperationException($\"Resource-list handler for {resourceApiVersion}/{resourceKind} returned null.\");\n\n                    TResourceList resourceList = new TResourceList();\n                    resourceList.Items.AddRange(resources);\n\n                    return resourceList;\n                });\n\n                mockKubeApiApp.HandleResourceGet(getPath.Path, (string resourceName) =>\n                {\n                    string resourceNamespace = null;\n                    TResource resource = loadResource(resourceName, resourceNamespace);\n\n                    return resource;\n                });\n\n                mockKubeApiApp.HandleResourcePatch(patchPath.Path, (string resourceName, string resourceNamespace, JsonPatchOperation[] patchRequest) =>\n                {\n                    TResource persistedResource = loadResource(resourceName, resourceNamespace);\n                    if (persistedResource == null)\n                        return null;\n\n                    TResource patchedResource = persistedResource.ApplyJsonPatch(patchRequest);\n                    persistedResource = saveResource(patchedResource);\n\n                    watchSubject.OnNext(persistedResource);\n\n                    return persistedResource;\n                });\n            }\n            \n            mockKubeApiApp.HandleResourceCreate(createPath.Path, (TResource initialResource) =>\n            {\n                TResource persistedResource = saveResource(initialResource);\n                watchSubject.OnNext(persistedResource);\n\n                return persistedResource;\n            });\n            mockKubeApiApp.HandleResourceUpdate(updatePath.Path, (TResource updatedResource) =>\n            {\n                TResource persistedResource = saveResource(updatedResource);\n                watchSubject.OnNext(persistedResource);\n\n                return persistedResource;\n            });\n            mockKubeApiApp.HandleResourceWatch(watchPath.Path, watchSubject);\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle all standard (CRUD) requests for a single resource of the specified type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <param name=\"resourceNamespace\">\n        ///     The namespace of the target resource (if applicable).\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleSingleResource<TResource>(this WebApplication mockKubeApiApp, string resourceName, string resourceNamespace)\n            where TResource : KubeResourceV1\n        {\n            if (String.IsNullOrWhiteSpace(resourceName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourceName)}.\", nameof(resourceName));\n\n            Subject<TResource> watchSubject = new Subject<TResource>();\n\n            mockKubeApiApp.Lifetime.ApplicationStopping.Register(() =>\n            {\n                using (watchSubject)\n                {\n                    watchSubject.OnCompleted();\n                }\n            });\n\n            mockKubeApiApp.HandleSingleResource(resourceName, resourceNamespace, watchSubject);\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle all standard (CRUD, Watch) requests for a single resource of the specified type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourceName\">\n        ///     The name of the target resource.\n        /// </param>\n        /// <param name=\"resourceNamespace\">\n        ///     The namespace of the target resource (if applicable).\n        /// </param>\n        /// <param name=\"watchSubject\">\n        ///     An <see cref=\"ISubject{T}\"/> that can be used to publish / subscribe to resource-watch notifications for the target resource.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleSingleResource<TResource>(this WebApplication mockKubeApiApp, string resourceName, string resourceNamespace, ISubject<TResource> watchSubject)\n            where TResource : KubeResourceV1\n        {\n            if (String.IsNullOrWhiteSpace(resourceName))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourceName)}.\", nameof(resourceName));\n\n            TResource resourceState = null;\n\n            KubeApiMetadataCache apiMetadataCache = LoadMetadata<TResource>();\n\n            (string resourceKind, string resourceApiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n            KubeApiMetadata resourceMetadata = apiMetadataCache.Get(resourceKind, resourceApiVersion);\n            if (resourceMetadata == null)\n                throw new InvalidOperationException($\"Failed to load metadata for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata getPathMetadata = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Get);\n            if (getPathMetadata == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-get path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata createPathMetadata = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Create);\n            if (createPathMetadata == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-create path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata updatePathMetadata = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Update);\n            if (updatePathMetadata == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-update path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata patchPathMetadata = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Patch);\n            if (patchPathMetadata == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-patch path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            KubeApiPathMetadata watchPathMetadata = resourceMetadata.FindApiPathPreferringNamespaced(KubeAction.Watch);\n            if (watchPathMetadata == null)\n                throw new InvalidOperationException($\"Cannot determine the resource-create path for the resource type represented by model '{typeof(TResource).FullName}.'.\");\n\n            // We need to handle namespaced paths differently because of how ASP.NET Core Minimal APIs does route matching / parameter binding on path segments.\n            bool isNamespaced = getPathMetadata.IsNamespaced;\n            if (isNamespaced)\n            {\n                if (String.IsNullOrWhiteSpace(resourceNamespace))\n                    throw new ArgumentException($\"Must supply a valid resource namespace (resource type '{resourceApiVersion}/{resourceKind}' is namespaced).\", nameof(resourceNamespace));\n\n                mockKubeApiApp.HandleResourceGet(getPathMetadata.Path, (string requestedResourceName, string requestedResourceNamespace) =>\n                {\n                    if (requestedResourceName != resourceName || requestedResourceNamespace != resourceNamespace)\n                        return null;\n\n                    return resourceState;\n                });\n\n                mockKubeApiApp.HandleResourcePatch(patchPathMetadata.Path, (string requestedResourceName, string requestedResourceNamespace, JsonPatchOperation[] patchRequest) =>\n                {\n                    Assert.Equal(resourceName, requestedResourceName);\n                    Assert.Equal(resourceNamespace, requestedResourceNamespace);\n\n                    resourceState = resourceState.ApplyJsonPatch(patchRequest);\n\n                    return resourceState;\n                });\n            }\n            else\n            {\n                mockKubeApiApp.HandleResourceGet(getPathMetadata.Path, (string requestedResourceName) =>\n                {\n                    if (requestedResourceName != resourceName)\n                        return null;\n\n                    return resourceState;\n                });\n\n                mockKubeApiApp.HandleResourcePatch(patchPathMetadata.Path, (string requestedResourceName, JsonPatchOperation[] patchRequest) =>\n                {\n                    Assert.Equal(resourceName, requestedResourceName);\n\n                    resourceState = resourceState.ApplyJsonPatch(patchRequest);\n\n                    return resourceState;\n                });\n            }\n\n            mockKubeApiApp.HandleResourceCreate(createPathMetadata.Path, (TResource initialResource) =>\n            {\n                Assert.NotNull(initialResource.Metadata);\n                Assert.Equal(resourceName, initialResource.Metadata.Name);\n                Assert.Equal(resourceNamespace, initialResource.Metadata.Namespace);\n\n                resourceState = initialResource;\n\n                return resourceState;\n            });\n            mockKubeApiApp.HandleResourceUpdate(updatePathMetadata.Path, (TResource updatedResource) =>\n            {\n                Assert.NotNull(updatedResource.Metadata);\n                Assert.Equal(resourceName, updatedResource.Metadata.Name);\n                Assert.Equal(resourceNamespace, updatedResource.Metadata.Namespace);\n\n                resourceState = updatedResource;\n\n                return resourceState;\n            });\n\n            mockKubeApiApp.HandleResourceWatch(watchPathMetadata.Path, watchSubject);\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle list requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model (derived from <see cref=\"KubeResourceListV1\"/>) used to represent a list of <typeparamref name=\"TResource\"/>s.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcesPath\">\n        ///     The path where resource-list requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     A handler delegate that returns all instances of the specified resource type.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceList<TResource, TResourceList>(this WebApplication mockKubeApiApp, string resourcesPath, MockKubeApi.ListResourcesHandler<TResource, TResourceList> handler)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>, new()\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcesPath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcesPath)}.\", nameof(resourcesPath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.HandleResourceListAsync<TResource, TResourceList>(resourcesPath, () =>\n            {\n                TResourceList response = handler();\n\n                return Task.FromResult(response);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle list requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model (derived from <see cref=\"KubeResourceListV1\"/>) used to represent a list of <typeparamref name=\"TResource\"/>s.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcesPath\">\n        ///     The path where resource-list requests should be handled.\n        /// </param>\n        /// <param name=\"asyncHandler\">\n        ///     An asynchronous handler delegate that returns all instances of the specified resource type.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceList<TResource, TResourceList>(this WebApplication mockKubeApiApp, string resourcesPath, MockKubeApi.ListNamespacedResourcesHandler<TResource, TResourceList> handler)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>, new()\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcesPath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcesPath)}.\", nameof(resourcesPath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.HandleResourceListAsync<TResource, TResourceList>(resourcesPath, (string resourceNamespace) =>\n            {\n                TResourceList response = handler(resourceNamespace);\n\n                return Task.FromResult(response);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle list requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model (derived from <see cref=\"KubeResourceListV1\"/>) used to represent a list of <typeparamref name=\"TResource\"/>s.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcesPath\">\n        ///     The path where resource-list requests should be handled.\n        /// </param>\n        /// <param name=\"asyncHandler\">\n        ///     An asynchronous handler delegate that returns all instances of the specified resource type.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceListAsync<TResource, TResourceList>(this WebApplication mockKubeApiApp, string resourcesPath, MockKubeApi.AsyncListResourcesHandler<TResource, TResourceList> asyncHandler)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>, new()\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcesPath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcesPath)}.\", nameof(resourcesPath));\n\n            if (asyncHandler == null)\n                throw new ArgumentNullException(nameof(asyncHandler));\n\n            mockKubeApiApp.MapGet(resourcesPath, async (HttpRequest request) =>\n            {\n                ILogger logger = request.CreateLogger(\"MockKubeApi.ResourceListHandler\");\n\n                TResourceList responseBody = await asyncHandler();\n                if (responseBody == null)\n                {\n                    return Results.Content(\n                        content: NJ.JsonConvert.SerializeObject(\n                            StatusV1.Failure($\"Resource-list handler for '{resourcesPath}' returned null.\",\n                                reason: \"InternalError\",\n                                code: StatusCodes.Status500InternalServerError\n                            )\n                        ),\n                        contentType: \"application/json\",\n                        statusCode: StatusCodes.Status500InternalServerError\n                    );\n                }\n\n                (string resourceKind, string resourceApiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n                logger.LogInformation(\"List {ResourceApiVersion}/{ResourceKind} resources: {ResourceCount} resource(s) found.\",\n                    resourceApiVersion,\n                    resourceKind,\n                    responseBody.Items.Count\n                );\n\n                return Results.Content(\n                    content: NJ.JsonConvert.SerializeObject(responseBody),\n                    contentType: \"application/json\",\n                    statusCode: StatusCodes.Status200OK\n                );\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle list requests for a (namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <typeparam name=\"TResourceList\">\n        ///     The type of model (derived from <see cref=\"KubeResourceListV1\"/>) used to represent a list of <typeparamref name=\"TResource\"/>s.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcesPath\">\n        ///     The path where resource-list requests should be handled.\n        /// </param>\n        /// <param name=\"asyncHandler\">\n        ///     An asynchronous handler delegate that returns all instances of the specified resource type in a given namespace.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceListAsync<TResource, TResourceList>(this WebApplication mockKubeApiApp, string resourcesPath, MockKubeApi.AsyncListNamespacedResourcesHandler<TResource, TResourceList> asyncHandler)\n            where TResource : KubeResourceV1\n            where TResourceList : KubeResourceListV1<TResource>, new()\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcesPath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcesPath)}.\", nameof(resourcesPath));\n\n            if (asyncHandler == null)\n                throw new ArgumentNullException(nameof(asyncHandler));\n\n            mockKubeApiApp.MapGet(resourcesPath, async (string @namespace, HttpRequest request) =>\n            {\n                ILogger logger = request.CreateLogger(\"MockKubeApi.ResourceListHandler\");\n\n                TResourceList responseBody = await asyncHandler(@namespace);\n                if (responseBody == null)\n                {\n                    return Results.Content(\n                        content: NJ.JsonConvert.SerializeObject(\n                            StatusV1.Failure($\"Resource-list handler for '{resourcesPath}' returned null.\",\n                                reason: \"InternalError\",\n                                code: StatusCodes.Status500InternalServerError\n                            )\n                        ),\n                        contentType: \"application/json\",\n                        statusCode: StatusCodes.Status500InternalServerError\n                    );\n                }\n\n                (string resourceKind, string resourceApiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n                logger.LogInformation(\"List {ResourceApiVersion}/{ResourceKind} resources in namespace {ResourceNamespace}: {ResourceCount} resource(s) found.\",\n                    resourceApiVersion,\n                    resourceKind,\n                    @namespace,\n                    responseBody.Items.Count\n                );\n\n                return MockApiResults.Ok(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle get requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-get requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     A handler delegate that returns the resource matching a given resource name (or <c>null</c>, if no resource matches that name).\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceGet<TResource>(this WebApplication mockKubeApiApp, string resourcePathTemplate, MockKubeApi.LoadResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePathTemplate))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePathTemplate)}.\", nameof(resourcePathTemplate));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.HandleResourceGetAsync(resourcePathTemplate, (string resourceName) =>\n            {\n                TResource response = handler(resourceName);\n\n                return Task.FromResult(response);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle get requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-get requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     A handler delegate that returns the resource matching a given resource name and namespace (or <c>null</c>, if no resource matches that name and namespace).\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceGet<TResource>(this WebApplication mockKubeApiApp, string resourcePathTemplate, MockKubeApi.LoadNamespacedResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePathTemplate))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePathTemplate)}.\", nameof(resourcePathTemplate));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.HandleResourceGetAsync(resourcePathTemplate, (string resourceName, string resourceNamespace) =>\n            {\n                TResource response = handler(resourceName, resourceNamespace);\n\n                return Task.FromResult(response);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle get requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-get requests should be handled.\n        /// </param>\n        /// <param name=\"asyncHandler\">\n        ///     An asynchronous handler delegate that returns the resource matching a given resource name (or <c>null</c>, if no resource matches that name).\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceGetAsync<TResource>(this WebApplication mockKubeApiApp, string resourcePathTemplate, MockKubeApi.AsyncLoadResourceHandler<TResource> asyncHandler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePathTemplate))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePathTemplate)}.\", nameof(resourcePathTemplate));\n\n            if (asyncHandler == null)\n                throw new ArgumentNullException(nameof(asyncHandler));\n\n            mockKubeApiApp.MapGet(resourcePathTemplate, async (string name) =>\n            {\n                TResource responseBody = await asyncHandler(name);\n                if (responseBody == null)\n                {\n                    (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n                    return MockApiResults.NotFound(\n                        StatusV1.Failure($\"{apiVersion}/{kind} resource '{name}' was not found.\", \"NotFound\")\n                    );\n                }\n\n                return MockApiResults.Ok(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle get requests for a (namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-get requests should be handled.\n        /// </param>\n        /// <param name=\"asyncHandler\">\n        ///     An asynchronous handler delegate that returns the resource matching a given resource name and namespace (or <c>null</c>, if no resource matches that name and namespace).\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceGetAsync<TResource>(this WebApplication mockKubeApiApp, string resourcePathTemplate, MockKubeApi.AsyncLoadNamespacedResourceHandler<TResource> asyncHandler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePathTemplate))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePathTemplate)}.\", nameof(resourcePathTemplate));\n\n            if (asyncHandler == null)\n                throw new ArgumentNullException(nameof(asyncHandler));\n\n            mockKubeApiApp.MapGet(resourcePathTemplate, async (string name, string @namespace) =>\n            {\n                TResource responseBody = await asyncHandler(name, @namespace);\n                if (responseBody == null)\n                {\n                    (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n                    string resourceName = !String.IsNullOrWhiteSpace(@namespace) ? $\"{@namespace}/{name}\" : name;\n\n                    return MockApiResults.NotFound(\n                        StatusV1.Failure($\"{apiVersion}/{kind} resource '{resourceName}' was not found.\", \"NotFound\")\n                    );\n                }\n\n                return MockApiResults.Ok(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle create requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-create requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     A handler delegate that persists state for the supplied resource, returning the persisted resource state.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceCreate<TResource>(this WebApplication mockKubeApiApp, string resourcePathTemplate, MockKubeApi.SaveResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePathTemplate))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePathTemplate)}.\", nameof(resourcePathTemplate));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.HandleResourceCreateAsync(resourcePathTemplate, (TResource request) =>\n            {\n                TResource responseBody = handler(request);\n\n                return Task.FromResult(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle create requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-create requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     An asynchronous handler delegate that persists state for the supplied resource, returning the persisted resource state.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceCreateAsync<TResource>(this WebApplication mockKubeApiApp, string resourcePath, MockKubeApi.AsyncSaveResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePath)}.\", nameof(resourcePath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n            \n            mockKubeApiApp.MapPost(resourcePath, async (HttpRequest request) =>\n            {\n                TResource requestBody = request.ReadAsNewtonsoftJson<TResource>();\n                TResource responseBody = await handler(requestBody);\n                if (responseBody == null)\n                {\n                    (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n                    string resourceName = Path.GetFileNameWithoutExtension(resourcePath);\n\n                    return MockApiResults.NotFound(\n                        StatusV1.Failure($\"{apiVersion}/{kind} resource '{resourceName}' was not found.\", \"NotFound\")\n                    );\n                }\n\n                return MockApiResults.Ok(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle update requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-create requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     A handler delegate that persists state for the supplied resource, returning the persisted resource state.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceUpdate<TResource>(this WebApplication mockKubeApiApp, string resourcePath, MockKubeApi.SaveResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePath)}.\", nameof(resourcePath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.HandleResourceUpdateAsync(resourcePath, (TResource request) =>\n            {\n                TResource response = handler(request);\n\n                return Task.FromResult(response);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle update requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-create requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     An asynchronous handler delegate that persists state for the supplied resource, returning the persisted resource state.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceUpdateAsync<TResource>(this WebApplication mockKubeApiApp, string resourcePath, MockKubeApi.AsyncSaveResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePath)}.\", nameof(resourcePath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.MapPut(resourcePath, async (HttpRequest request) =>\n            {\n                TResource requestBody = request.ReadAsNewtonsoftJson<TResource>();\n                TResource responseBody = await handler(requestBody);\n                if (responseBody == null)\n                {\n                    (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n                    string resourceName = Path.GetFileNameWithoutExtension(resourcePath);\n\n                    return MockApiResults.NotFound(\n                        StatusV1.Failure($\"{apiVersion}/{kind} resource '{resourceName}' was not found.\", \"NotFound\")\n                    );\n                }\n\n                return MockApiResults.Ok(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle patch requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-create requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     An asynchronous handler delegate that applies one or more patch operations to persisted resource state, returning the (patched) persisted resource state.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourcePatch<TResource>(this WebApplication mockKubeApiApp, string resourcePath, MockKubeApi.PatchResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePath)}.\", nameof(resourcePath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.HandleResourcePatchAsync(resourcePath, (string name, JsonPatchOperation[] patchRequest) =>\n            {\n                TResource responseBody = handler(name, patchRequest);\n\n                return Task.FromResult(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle patch requests for a (namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-create requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     A handler delegate that applies one or more patch operations to persisted resource state, returning the (patched) persisted resource state.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourcePatch<TResource>(this WebApplication mockKubeApiApp, string resourcePath, MockKubeApi.PatchNamespacedResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePath)}.\", nameof(resourcePath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.HandleResourcePatchAsync(resourcePath, (string name, string @namespace, JsonPatchOperation[] patchRequest) =>\n            {\n                TResource responseBody = handler(name, @namespace, patchRequest);\n\n                return Task.FromResult(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle patch requests for a (non-namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-create requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     An asynchronous handler delegate that applies one or more patch operations to persisted resource state, returning the (patched) persisted resource state.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourcePatchAsync<TResource>(this WebApplication mockKubeApiApp, string resourcePath, MockKubeApi.AsyncPatchResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePath)}.\", nameof(resourcePath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.MapPatch(resourcePath, async (string name, HttpRequest request) =>\n            {\n                ILogger logger = request.CreateLogger(\"MockKubeApi.ResourcePatchHandler\");\n\n                JsonPatchOperation[] patchRequest = request.ReadAsJsonPatchOperations();\n                if (logger.IsEnabled(LogLevel.Debug))\n                {\n                    JArray patchRequestJson = request.ReadAsNewtonsoftJArray();\n                    logger.LogDebug(\"Patch request: {PatchRequest}\", patchRequestJson.ToString(NJ.Formatting.None));\n                }\n\n                TResource responseBody = await handler(name, patchRequest);\n                if (responseBody == null)\n                {\n                    (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n                    return MockApiResults.NotFound(\n                        StatusV1.Failure($\"{apiVersion}/{kind} resource '{name}' was not found.\", \"NotFound\")\n                    );\n                }\n\n                return MockApiResults.Ok(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle patch requests for a (namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-create requests should be handled.\n        /// </param>\n        /// <param name=\"handler\">\n        ///     An asynchronous handler delegate that applies one or more patch operations to persisted resource state, returning the (patched) persisted resource state.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourcePatchAsync<TResource>(this WebApplication mockKubeApiApp, string resourcePath, MockKubeApi.AsyncPatchNamespacedResourceHandler<TResource> handler)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourcePath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourcePath)}.\", nameof(resourcePath));\n\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n\n            mockKubeApiApp.MapPatch(resourcePath, async (string name, string @namespace, HttpRequest request) =>\n            {\n                ILogger logger = request.CreateLogger(\"MockKubeApi.ResourcePatchHandler\");\n\n                JsonPatchOperation[] patchRequest = request.ReadAsJsonPatchOperations();\n                if (logger.IsEnabled(LogLevel.Debug))\n                {\n                    JArray patchRequestJson = request.ReadAsNewtonsoftJArray();\n                    logger.LogDebug(\"Patch request: {PatchRequest}\", patchRequestJson.ToString(NJ.Formatting.None));\n                }\n\n                TResource responseBody = await handler(name, @namespace, patchRequest);\n                if (responseBody == null)\n                {\n                    (string kind, string apiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n                    return MockApiResults.NotFound(\n                        StatusV1.Failure($\"{apiVersion}/{kind} resource '{name}' was not found.\", \"NotFound\")\n                    );\n                }\n\n                return MockApiResults.Ok(responseBody);\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Configure the mock API to handle watch requests for a (namespaced) resource type.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The type of model (derived from <see cref=\"KubeResourceV1\"/>) used to represent the resource.\n        /// </typeparam>\n        /// <param name=\"mockKubeApiApp\">\n        ///     The <see cref=\"WebApplication\"/> that will host the mock API.\n        /// </param>\n        /// <param name=\"resourcePathTemplate\">\n        ///     The path template where resource-watch requests should be handled.\n        /// </param>\n        /// <param name=\"resourceStates\">\n        ///     An <see cref=\"IObservable{T}\"/> sequence of resource states that will be published to watchers.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"WebApplication\"/>.\n        /// </returns>\n        public static WebApplication HandleResourceWatch<TResource>(this WebApplication mockKubeApiApp, string resourceWatchPath, IObservable<TResource> resourceStates)\n            where TResource : KubeResourceV1\n        {\n            if (mockKubeApiApp == null)\n                throw new ArgumentNullException(nameof(mockKubeApiApp));\n\n            if (String.IsNullOrWhiteSpace(resourceWatchPath))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(resourceWatchPath)}.\", nameof(resourceWatchPath));\n\n            if (resourceStates == null)\n                throw new ArgumentNullException(nameof(resourceStates));\n\n            mockKubeApiApp.MapGet(resourceWatchPath, async context =>\n            {\n                // Used to block the request from completing until either the resourceStates sequence is completed/faulted, or the request is aborted.\n                using SemaphoreSlim requestCompleted = new SemaphoreSlim(initialCount: 0, maxCount: 1);\n                    \n                void EndRequest()\n                {\n                    try\n                    {\n                        requestCompleted.Release();\n                    }\n                    catch (SemaphoreFullException)\n                    {\n                        // Either the resource-state sequence has completed/faulted, or the request was canceled.\n                    }\n                }\n\n                context.RequestAborted.Register(\n                    () => EndRequest()\n                );\n\n                context.Response.Headers.ContentType = \"application/json\";\n                context.Response.StatusCode = 200;\n\n                using StreamWriter bodyWriter = new StreamWriter(context.Response.Body)\n                {\n                    AutoFlush = true\n                };\n\n                resourceStates.Subscribe(\n                    onNext: (TResource resource) =>\n                    {\n                        string resourceJson = NJ.JsonConvert.SerializeObject(resource);\n                        bodyWriter.WriteLine(resourceJson);\n                    },\n                    onError: (Exception exception) =>\n                    {\n                        mockKubeApiApp.Logger.LogError(exception, \"Unexpected error while streaming watched resource state.\");\n\n                        EndRequest();\n                    },\n                    onCompleted: () =>\n                    {\n                        EndRequest();\n                    },\n                    token: context.RequestAborted\n                );\n\n                try\n                {\n                    // Don't complete the request until we're done streaming events.\n                    await requestCompleted.WaitAsync(context.RequestAborted);\n                }\n                catch (OperationCanceledException waitCanceled)\n                {\n                    if (waitCanceled.CancellationToken != context.RequestAborted)\n                        throw;\n                }\n            });\n\n            return mockKubeApiApp;\n        }\n\n        /// <summary>\n        ///     Create a named logger.\n        /// </summary>\n        /// <param name=\"request\">\n        ///     The <see cref=\"HttpRequest\"/> whose <see cref=\"IServiceProvider\"/> will be used to create the logger.\n        /// </param>\n        /// <param name=\"name\">\n        ///     The name of the logger to create.\n        /// </param>\n        /// <returns>\n        ///     The logger.\n        /// </returns>\n        public static ILogger CreateLogger(this HttpRequest request, string name)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(name)}.\", nameof(name));\n\n            return request.HttpContext.CreateLogger(name);\n        }\n\n        /// <summary>\n        ///     Create a named logger.\n        /// </summary>\n        /// <param name=\"request\">\n        ///     The <see cref=\"HttpContext\"/> whose request-level <see cref=\"IServiceProvider\"/> will be used to create the logger.\n        /// </param>\n        /// <param name=\"name\">\n        ///     The name of the logger to create.\n        /// </param>\n        /// <returns>\n        ///     The logger.\n        /// </returns>\n        public static ILogger CreateLogger(this HttpContext httpContext, string name)\n        {\n            if (httpContext == null)\n                throw new ArgumentNullException(nameof(httpContext));\n\n            if (String.IsNullOrWhiteSpace(name))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(name)}.\", nameof(name));\n\n\n            return httpContext.RequestServices.GetRequiredService<ILoggerFactory>().CreateLogger(name);\n        }\n\n        /// <summary>\n        ///     Deserialise the request body from JSON (using Newtonsoft.Json).\n        /// </summary>\n        /// <typeparam name=\"TBody\">\n        ///     The type that the request body should be deserialised into.\n        /// </typeparam>\n        /// <param name=\"request\">\n        ///     A <see cref=\"HttpRequest\"/> representing the request.\n        /// </param>\n        /// <returns>\n        ///     The deserialised request body (as <typeparamref name=\"TBody\"/>).\n        /// </returns>\n        public static TBody ReadAsNewtonsoftJson<TBody>(this HttpRequest request)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            using (StreamReader requestReader = new StreamReader(request.Body, leaveOpen: true))\n            using (NJ.JsonTextReader requestJsonReader = new NJ.JsonTextReader(requestReader))\n            {\n                return NJ.JsonSerializer.Create().Deserialize<TBody>(requestJsonReader);\n            }\n        }\n\n        /// <summary>\n        ///     Read the request body as JSON (using Newtonsoft.Json).\n        /// </summary>\n        /// <param name=\"request\">\n        ///     A <see cref=\"HttpRequest\"/> representing the request.\n        /// </param>\n        /// <returns>\n        ///     The deserialised request body (as a <see cref=\"JToken\"/>).\n        /// </returns>\n        public static JToken ReadAsNewtonsoftJToken(this HttpRequest request)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            using (StreamReader requestReader = new StreamReader(request.Body, leaveOpen: true))\n            using (NJ.JsonTextReader requestJsonReader = new NJ.JsonTextReader(requestReader))\n            {\n                return JToken.Load(requestJsonReader);\n            }\n        }\n\n        /// <summary>\n        ///     Read the request body as JSON (using Newtonsoft.Json).\n        /// </summary>\n        /// <param name=\"request\">\n        ///     A <see cref=\"HttpRequest\"/> representing the request.\n        /// </param>\n        /// <returns>\n        ///     The deserialised request body (as a <see cref=\"JObject\"/>).\n        /// </returns>\n        public static JObject ReadAsNewtonsoftJObject(this HttpRequest request)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            using (StreamReader requestReader = new StreamReader(request.Body, leaveOpen: true))\n            using (NJ.JsonTextReader requestJsonReader = new NJ.JsonTextReader(requestReader))\n            {\n                return JObject.Load(requestJsonReader);\n            }\n        }\n\n        /// <summary>\n        ///     Read the request body as JSON (using Newtonsoft.Json).\n        /// </summary>\n        /// <param name=\"request\">\n        ///     A <see cref=\"HttpRequest\"/> representing the request.\n        /// </param>\n        /// <returns>\n        ///     The deserialised request body (as a <see cref=\"JArray\"/>).\n        /// </returns>\n        public static JArray ReadAsNewtonsoftJArray(this HttpRequest request)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            using (StreamReader requestReader = new StreamReader(request.Body, leaveOpen: true))\n            using (NJ.JsonTextReader requestJsonReader = new NJ.JsonTextReader(requestReader))\n            {\n                return JArray.Load(requestJsonReader);\n            }\n        }\n\n        /// <summary>\n        ///     Read the request body as as <see cref=\"JsonPatchOperation\"/>s.\n        /// </summary>\n        /// <param name=\"request\">\n        ///     A <see cref=\"HttpRequest\"/> representing the request.\n        /// </param>\n        /// <returns>\n        ///     The deserialised request body (as an array of <see cref=\"JsonPatchOperation\"/>s).\n        /// </returns>\n        public static JsonPatchOperation[] ReadAsJsonPatchOperations(this HttpRequest request)\n        {\n            if (request == null)\n                throw new ArgumentNullException(nameof(request));\n\n            using (StreamReader requestReader = new StreamReader(request.Body, leaveOpen: true))\n            using (NJ.JsonTextReader requestJsonReader = new NJ.JsonTextReader(requestReader))\n            {\n                return NJ.JsonSerializer.Create().Deserialize<JsonPatchOperation[]>(requestJsonReader);\n            }\n        }\n\n        /// <summary>\n        ///     Apply one or more JSON Patch operations to the target resource.\n        /// </summary>\n        /// <typeparam name=\"TResource\">\n        ///     The target resource type.\n        /// </typeparam>\n        /// <param name=\"resource\">\n        ///     The target resource.\n        /// </param>\n        /// <param name=\"patchOperations\">\n        ///     A <see cref=\"JArray\"/> containing the JSON Patch operations to perform.\n        /// </param>\n        /// <returns>\n        ///     The patched <typeparamref name=\"TResource\"/>.\n        /// </returns>\n        public static TResource ApplyJsonPatch<TResource>(this TResource resource, params JsonPatchOperation[] patchOperations)\n            where TResource : KubeResourceV1\n        {\n            if (resource == null)\n                throw new ArgumentNullException(nameof(resource));\n\n            if (patchOperations == null)\n                throw new ArgumentNullException(nameof(patchOperations));\n\n            JObject resourceJson = JObject.FromObject(resource);\n\n            foreach (JsonPatchOperation patchOperation in patchOperations)\n            {\n                patchOperation.EnsureValid();\n\n                JToken target = resourceJson.SelectJsonPatchPath(patchOperation.Path);\n                \n                switch (patchOperation.Kind)\n                {\n                    case JsonPatchOperationKind.Delete:\n                    {\n                        if (target != null)\n                            target.Remove();\n\n                        break;\n                    }\n                    case JsonPatchOperationKind.Replace:\n                    {\n                        switch ((target, patchOperation.Value))\n                        {\n                            case (JObject targetObject, JObject replacementObject):\n                            {\n                                targetObject.Replace(replacementObject);\n\n                                break;\n                            }\n                            case (null, JObject newObject):\n                            {\n                                string parentPath = Path.GetDirectoryName(patchOperation.Path);\n                                \n                                JToken parent = resourceJson.SelectJsonPatchPath(parentPath);\n\n                                switch (parent)\n                                {\n                                    case JArray parentArray:\n                                    {\n                                        parentArray.Add(target);\n\n                                        break;\n                                    }\n                                    case JObject parentObject:\n                                    {\n                                        string propertyName = Path.GetFileName(patchOperation.Path);\n                                        if (String.IsNullOrWhiteSpace(propertyName))\n                                            throw new NJ.JsonException($\"Failed to apply JSON-patch '{patchOperation.Kind}' operation (cannot determine property name from target path '{patchOperation.Path}').\");\n\n                                        parentObject[propertyName] = newObject;\n                                        \n                                        break;\n                                    }\n                                    case null:\n                                    {\n                                        throw new NJ.JsonException($\"Failed to apply JSON-patch '{patchOperation.Kind}' operation (parent of target token '{patchOperation.Path}' was not found).\");\n                                    }\n                                    default:\n                                    {\n                                        throw new NJ.JsonException($\"Failed to apply JSON-patch '{patchOperation.Kind}' operation (parent of target token is of type '{parent.Type}', which is not a container).\");\n                                    }\n                                }\n\n                                break;\n                            }\n                            default:\n                            {\n                                throw new NJ.JsonException($\"Failed to apply JSON-patch '{patchOperation.Kind}' operation (target token '{patchOperation.Path}' is of type {target.Type}, which is not supported when the patch value is of type '{patchOperation.Value.Type}').\");\n                            }\n                        }\n\n                        break;\n                    }\n                    default:\n                    {\n                        throw new NJ.JsonException($\"Failed to apply JSON-patch '{patchOperation.Kind}' operation (not a supported operation).\");\n                    }\n                }\n            }\n\n            TResource patchedResource;\n            using (NJ.JsonReader patchedJsonReader = resourceJson.CreateReader())\n            {\n                patchedResource = NJ.JsonSerializer.Create().Deserialize<TResource>(patchedJsonReader);\n            }\n\n            return patchedResource;\n        }\n\n        static JToken SelectJsonPatchPath(this JToken token, string jsonPatchPath)\n        {\n            if (token == null)\n                throw new ArgumentNullException(nameof(token));\n\n            string jsonPath = JsonPatchPathToJsonPath(jsonPatchPath);\n            if (String.IsNullOrWhiteSpace(jsonPatchPath))\n                return jsonPath;\n\n            return token.SelectToken(jsonPath);\n        }\n\n        static string JsonPatchPathToJsonPath(string jsonPatchPath)\n        {\n            if (jsonPatchPath == null)\n                throw new ArgumentNullException(nameof(jsonPatchPath));\n\n            jsonPatchPath = jsonPatchPath.Trim().Replace('\\\\', '/');\n\n            switch (jsonPatchPath)\n            {\n                case \"/\":\n                {\n                    return String.Empty;\n                }\n                default:\n                {\n                    return '$' + jsonPatchPath.Replace('/', '.');\n                }\n            }\n        }\n\n        static string GetPathParent(string path)\n        {\n            ReadOnlySpan<char> parent = GetPathParent(path.AsSpan());\n            if (parent.Length == path.Length)\n                return path;\n\n            return new String(parent);\n        }\n\n        static ReadOnlySpan<char> GetPathParent(ReadOnlySpan<char> path)\n        {\n            path = path.TrimEnd('/');\n\n            if (path.IsEmpty)\n                return path;\n\n            int lastSeparatorIndex = path.LastIndexOf('/');\n            if (lastSeparatorIndex == -1)\n                return path;\n            \n            return path[..lastSeparatorIndex];\n        }\n\n        static KubeApiMetadataCache LoadMetadata<TResource>()\n            where TResource : KubeResourceV1\n        {\n            KubeApiMetadataCache apiMetadataCache = new KubeApiMetadataCache();\n            apiMetadataCache.LoadFromMetadata(\n                typeof(PodV1).Assembly\n            );\n            apiMetadataCache.LoadFromMetadata(\n                typeof(TResource).Assembly\n            );\n\n            return apiMetadataCache;\n        }\n\n        static KubeApiPathMetadata FindApiPathPreferringNamespaced(this KubeApiMetadata apiMetadata, KubeAction action)\n        {\n            if (apiMetadata == null)\n                throw new ArgumentNullException(nameof(apiMetadata));\n\n            List<KubeApiPathMetadata> candidatePaths = apiMetadata.PathMetadata\n                .Where(\n                    path => path.SupportsAction(action)\n                )\n                .ToList();\n\n            KubeApiPathMetadata path =\n                candidatePaths.FirstOrDefault(path => path.IsNamespaced)\n                ??\n                candidatePaths.FirstOrDefault(path => !path.IsNamespaced);\n\n            return path;\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/Mocks/NewtonsoftJsonHttpResult.cs",
    "content": "﻿using Microsoft.AspNetCore.Http;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing System;\nusing System.IO;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.TestCommon.Mocks\n{\n    /// <summary>\n    ///     A minimal API result that serialises its value using the Newtonsoft JSON serialiser.\n    /// </summary>\n    /// <typeparam name=\"TValue\"></typeparam>\n    public class NewtonsoftJsonHttpResult<TValue>\n        : IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue>, IContentTypeHttpResult\n    {\n        public NewtonsoftJsonHttpResult(TValue value, int? statusCode = null, string contentType = \"application/json\")\n        {\n            if (String.IsNullOrWhiteSpace(contentType))\n                throw new ArgumentException($\"Argument cannot be null, empty, or entirely composed of whitespace: {nameof(contentType)}.\", nameof(contentType));\n\n            Value = value;\n            StatusCode = statusCode;\n            ContentType = contentType;\n        }\n\n        /// <summary>\n        ///     The value to be serialised and sent as the response body.\n        /// </summary>\n        public TValue Value { get; }\n\n\n        /// <summary>\n        ///     The response status code (if <c>null</c>, the existing response status code is used).\n        /// </summary>\n        public int? StatusCode { get; }\n\n        /// <summary>\n        ///     The response content type.\n        /// </summary>\n        public string ContentType { get; }\n\n        /// <summary>\n        ///     The value to be serialised and sent as the response body.\n        /// </summary>\n        object IValueHttpResult.Value => Value;\n\n        /// <summary>\n        ///     Execute the result.\n        /// </summary>\n        /// <param name=\"httpContext\">\n        ///     The <see cref=\"HttpContext\"/> for the current request.\n        /// </param>\n        /// <returns>\n        ///     A <see cref=\"Task\"/> representing the asynchronous operation.\n        /// </returns>\n        public async Task ExecuteAsync(HttpContext httpContext)\n        {\n            if (httpContext == null)\n                throw new ArgumentNullException(nameof(httpContext));\n\n            if (StatusCode != null)\n                httpContext.Response.StatusCode = StatusCode.Value;\n\n            httpContext.Response.ContentType = ContentType;\n\n            JsonSerializer serializer = JsonSerializer.CreateDefault(new JsonSerializerSettings\n            {\n                Converters =\n                {\n                    new StringEnumConverter(),\n                },\n                DefaultValueHandling = DefaultValueHandling.Ignore,\n            });\n\n            using (MemoryStream buffer = new MemoryStream())\n            using (StreamWriter bufferWriter = new StreamWriter(buffer))\n            {\n                serializer.Serialize(bufferWriter, Value,\n                    objectType: typeof(TValue)\n                );\n\n                bufferWriter.Flush();\n\n                buffer.Seek(0, SeekOrigin.Begin);\n\n                await buffer.CopyToAsync(httpContext.Response.Body,\n                    cancellationToken: httpContext.RequestAborted\n                );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.TestCommon/TestBase.cs",
    "content": "using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Reactive.Disposables;\nusing System.Reflection;\nusing System.Threading;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.TestCommon\n{\n    using Logging;\n\n    /// <summary>\n    ///     The base class for test suites.\n    /// </summary>\n    public abstract class TestBase\n        : IDisposable\n    {\n        /// <summary>\n        ///     The test-level service provider.\n        /// </summary>\n        ServiceProvider _serviceProvider;\n\n        /// <summary>\n        ///     The test-level logger.\n        /// </summary>\n        ILogger _testLogger;\n\n        /// <summary>\n        ///     Create a new test-suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        protected TestBase(ITestOutputHelper testOutput)\n        {\n            if (testOutput == null)\n                throw new ArgumentNullException(nameof(testOutput));\n\n            // We *must* have a synchronisation context for the test, or we'll see random deadlocks.\n            if (SynchronizationContext.Current == null)\n            {\n                SynchronizationContext.SetSynchronizationContext(\n                    new SynchronizationContext()\n                );\n            }\n\n            TestOutput = testOutput;\n\n            // Ugly hack to get access to the current test.\n            CurrentTest = (ITest)\n                TestOutput.GetType()\n                    .GetField(\"test\", BindingFlags.NonPublic | BindingFlags.Instance)\n                    .GetValue(TestOutput);\n\n            Assert.True(CurrentTest != null, \"Cannot retrieve current test from ITestOutputHelper.\");\n        }\n\n        /// <summary>\n        ///     Finaliser for <see cref=\"TestBase\"/>.\n        /// </summary>\n        ~TestBase()\n        {\n            Dispose(false);\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the test suite.\n        /// </summary>\n        public void Dispose()\n        {\n            Dispose(true);\n            GC.SuppressFinalize(this);\n        }\n\n        /// <summary>\n        ///     Dispose of resources being used by the test suite.\n        /// </summary>\n        /// <param name=\"disposing\">\n        ///     Explicit disposal?\n        /// </param>\n        protected virtual void Dispose(bool disposing)\n        {\n            if (disposing)\n            {\n                using (Disposal)\n                {\n                    if (_serviceProvider != null)\n                    {\n                        _serviceProvider.Dispose();\n                        _serviceProvider = null;\n                    }\n                }\n            }\n        }\n\n        /// <summary>\n        ///     A <see cref=\"CompositeDisposable\"/> representing resources used by the test.\n        /// </summary>\n        protected CompositeDisposable Disposal { get; } = new CompositeDisposable();\n\n        /// <summary>\n        ///     Output for the current test.\n        /// </summary>\n        protected ITestOutputHelper TestOutput { get; }\n\n        /// <summary>\n        ///     A <see cref=\"ITest\"/> representing the current test.\n        /// </summary>\n        protected ITest CurrentTest { get; }\n\n        /// <summary>\n        ///     The logger factory for the current test.\n        /// </summary>\n        protected ILoggerFactory LoggerFactory => ServiceProvider.GetRequiredService<ILoggerFactory>();\n\n        /// <summary>\n        ///     The logger for the current test.\n        /// </summary>\n        protected ILogger Log\n        {\n            get\n            {\n                if (_testLogger == null)\n                {\n                    _testLogger = LoggerFactory.CreateLogger(\"CurrentTest\");\n\n                    Disposal.Add(\n                        Log.BeginScope(\"{CurrentTest}\", CurrentTest.DisplayName)\n                    );\n                }\n\n                return _testLogger;\n            }\n        }\n\n        /// <summary>\n        ///     The logging level for the current test.\n        /// </summary>\n        protected virtual LogLevel MinLogLevel => LogLevel.Information;\n\n        /// <summary>\n        ///     The test-level service provider.\n        /// </summary>\n        protected IServiceProvider ServiceProvider\n        {\n            get\n            {\n                if (_serviceProvider == null)\n                    _serviceProvider = BuildServiceProvider();\n\n                return _serviceProvider;\n            }\n        }\n\n        /// <summary>\n        ///     Create and use a scoped <see cref=\"IServiceProvider\"/> (via <see cref=\"IServiceScope\"/>).\n        /// </summary>\n        /// <param name=\"action\">\n        ///     A delegate that uses the scoped service provider.\n        /// </param>\n        protected void UseScopedServiceProvider(Action<IServiceProvider> action)\n        {\n            if (action == null)\n                throw new ArgumentNullException(nameof(action));\n\n            using (IServiceScope serviceScope = ServiceProvider.CreateScope())\n            {\n                action(serviceScope.ServiceProvider);\n            }\n        }\n\n        /// <summary>\n        ///     Create and use a scoped <see cref=\"IServiceProvider\"/> (via <see cref=\"IServiceScope\"/>).\n        /// </summary>\n        /// <typeparam name=\"TResult\">\n        ///     The action result type.\n        /// </typeparam>\n        /// <param name=\"action\">\n        ///     A delegate that uses the scoped service provider and returns a <typeparamref name=\"TResult\"/>.\n        /// </param>\n        /// <returns>\n        ///     The result.\n        /// </returns>\n        protected TResult UseScopedServiceProvider<TResult>(Func<IServiceProvider, TResult> action)\n        {\n            if (action == null)\n                throw new ArgumentNullException(nameof(action));\n\n            using (IServiceScope serviceScope = ServiceProvider.CreateScope())\n            {\n                return action(serviceScope.ServiceProvider);\n            }\n        }\n\n        /// <summary>\n        ///     Build a service provider using the test-level configuration.\n        /// </summary>\n        /// <returns>\n        ///     The configured <see cref=\"ServiceProvider\"/>.\n        /// </returns>\n        protected ServiceProvider BuildServiceProvider()\n        {\n            ServiceCollection services = new ServiceCollection();\n\n            ConfigureServices(services);\n\n            return services.BuildServiceProvider(new ServiceProviderOptions\n            {\n                ValidateOnBuild = true,\n                ValidateScopes = true,\n            });\n        }\n\n        /// <summary>\n        ///     Configure services for dependency-injection.\n        /// </summary>\n        /// <param name=\"services\">\n        ///     The service collection to configure.\n        /// </param>\n        protected virtual void ConfigureServices(IServiceCollection services)\n        {\n            if (services == null)\n                throw new ArgumentNullException(nameof(services));\n\n            services.AddLogging(logging =>\n            {\n                logging.SetMinimumLevel(MinLogLevel);\n                logging.AddDebug();\n\n                logging.AddTestOutput(TestOutput, MinLogLevel);\n            });\n        }\n    }\n}"
  },
  {
    "path": "test/KubeClient.TestCommon.Tests/GlobalUsings.cs",
    "content": "global using Xunit;"
  },
  {
    "path": "test/KubeClient.TestCommon.Tests/KubeClient.TestCommon.Tests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.DataProtection/KubeClient.Extensions.DataProtection.csproj\" />\n    <ProjectReference Include=\"../../src/KubeClient.Extensions.DependencyInjection/KubeClient.Extensions.DependencyInjection.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"../KubeClient.TestCommon/KubeClient.TestCommon.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"7.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"7.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"8.0.8\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"8.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"8.0.0\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"9.0.3\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"9.0.3\" />\n  </ItemGroup>\n\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.AspNetCore.Mvc.Testing\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.Configuration\" Version=\"10.0.0\" />\n    <PackageReference Include=\"Microsoft.Extensions.DependencyInjection\" Version=\"10.0.0\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n  <Import Project=\"../TestProject.Common.props\" />\n</Project>\n"
  },
  {
    "path": "test/KubeClient.TestCommon.Tests/MockKubeApiTests.cs",
    "content": "﻿using Microsoft.Extensions.Logging;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Net.Http;\nusing System.Reactive.Subjects;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.TestCommon.Tests\n{\n    using Mocks;\n    using Models;\n    using TestCommon;\n\n    /// <summary>\n    ///     Basic tests for <see cref=\"MockKubeApi\"/> functionality.\n    /// </summary>\n    public class MockKubeApiTests\n        : TestBase\n    {\n        public MockKubeApiTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        [Fact]\n        public async Task Can_Watch_PodV1()\n        {\n            const string podWatchPath = \"api/v1/namespaces/default/pods/my-pod\";\n\n            Subject<PodV1> watchSource = new Subject<PodV1>();\n\n            List<PodV1> observedPodStates = new List<PodV1>();\n\n            MockKubeApi kubeApi = MockKubeApi.Create(TestOutput, api =>\n            {\n                api.HandleResourceWatch(podWatchPath, watchSource);\n            });\n\n            await using (kubeApi)\n            {\n                using CancellationTokenSource cancellationSource = new CancellationTokenSource(TimeSpan.FromSeconds(30));\n                using HttpClient apiHttpClient = kubeApi.CreateClient();\n\n                Log.LogInformation(\"Initiating pod watch request...\");\n\n                using Stream watchResponseBody = await apiHttpClient.GetStreamAsync(podWatchPath, cancellationSource.Token);\n\n                Log.LogInformation(\"Response-body stream is now available; starting to stream pod state...\");\n\n                ILogger streamerLogger = LoggerFactory.CreateLogger(nameof(StreamPodState));\n                Task watchStreamer = StreamPodState(watchResponseBody, observedPodStates, streamerLogger, cancellationSource.Token);\n\n                watchSource.OnNext(new PodV1\n                {\n                    Metadata = new ObjectMetaV1\n                    {\n                        Name = \"my-pod\",\n                        Namespace = \"default\"\n                    },\n                    Spec = new PodSpecV1\n                    {\n\n                    },\n                    Status = new PodStatusV1\n                    {\n                        Message = \"Message 1\"\n                    },\n                });\n                watchSource.OnNext(new PodV1\n                {\n                    Metadata = new ObjectMetaV1\n                    {\n                        Name = \"my-pod\",\n                        Namespace = \"default\"\n                    },\n                    Spec = new PodSpecV1\n                    {\n\n                    },\n                    Status = new PodStatusV1\n                    {\n                        Message = \"Message 2\"\n                    },\n                });\n\n                watchSource.OnCompleted();\n\n                await watchStreamer;\n            }\n\n            Assert.Contains(observedPodStates, pod => pod?.Status?.Message == \"Message 1\");\n            Assert.Contains(observedPodStates, pod => pod?.Status?.Message == \"Message 2\");\n            Assert.Equal(2, observedPodStates.Count);\n        }\n\n        async Task StreamPodState<TResource>(Stream watchStream, List<TResource> observedResourceStates, ILogger logger, CancellationToken cancellationToken)\n            where TResource : KubeResourceV1\n        {\n            if (watchStream == null)\n                throw new ArgumentNullException(nameof(watchStream));\n\n            if (observedResourceStates == null)\n                throw new ArgumentNullException(nameof(observedResourceStates));\n\n            if (logger == null)\n                throw new ArgumentNullException(nameof(logger));\n\n            (string resourceKind, string resourceApiVersion) = KubeObjectV1.GetKubeKind<TResource>();\n\n            using (StreamReader watchReader = new StreamReader(watchStream))\n            {\n                string rawStateData;\n\n                logger.LogInformation(\"Waiting for the first line of text from the state stream...\");\n\n                while ((rawStateData = await watchReader.ReadLineAsync(cancellationToken)) != null)\n                {\n                    logger.LogInformation(\"Got a line of text from the state stream: {RawStateData}\", rawStateData);\n\n                    TResource resourceState = JsonConvert.DeserializeObject<TResource>(rawStateData);\n                    observedResourceStates.Add(resourceState);\n\n                    logger.LogInformation(\"Successfully observed state #{StateCount} for {ResourceKind}{ResourceApiVersion} {ResourceName}.\",\n                        observedResourceStates.Count,\n                        resourceKind,\n                        resourceApiVersion,\n                        resourceState.Metadata?.Name\n                    );\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/ErrorHandling/ExceptionTests.cs",
    "content": "using Newtonsoft.Json;\nusing System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Tests.ErrorHandling\n{\n    using KubeClient.Http.Testability;\n    using Models;\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests relating to exceptions raised by <see cref=\"KubeApiClient\"/>.\n    /// </summary>\n    public class ExceptionTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> exception test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public ExceptionTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that listing Pod (v1) results in a <see cref=\"KubeClientException\"/> if the server returns <see cref=\"HttpStatusCode.InternalServerError\"/> with a valid <see cref=\"StatusV1\"/> in the response body.\n        /// </summary>\n        [Fact(DisplayName = \"List PodV1 returning InternalServerError with StatusV1 body throws KubeClientException\")]\n        public async Task List_Pods_InternalServerError_StatusV1_Throws_KubeClientException()\n        {\n            MockMessageHandler handler = new MockMessageHandler(\n                (HttpRequestMessage request) => request.CreateResponse(HttpStatusCode.InternalServerError,\n                    responseBody: JsonConvert.SerializeObject(new StatusV1\n                    {\n                        Code = 500,\n                        Reason = \"TestError\",\n                        Message = \"Simulated API error.\",\n                        Details = new StatusDetailsV1()\n                    }),\n                    mediaType: \"application/json\"\n                )\n            );\n\n            KubeApiException exception;\n            using (KubeApiClient client = handler.CreateClient(loggerFactory: LoggerFactory))\n            {\n                exception = await Assert.ThrowsAsync<KubeApiException>(\n                    () => client.PodsV1().List()\n                );\n            }\n\n            Assert.True(exception.HasStatus);\n            Assert.Equal(500, exception.Status.Code);\n            Assert.Equal(\"TestError\", exception.Status.Reason);\n            Assert.Equal(\"Simulated API error.\", exception.Status.Message);\n        }\n\n        /// <summary>\n        ///     Verify that listing Pod (v1) results in a <see cref=\"KubeClientException\"/> if the server returns <see cref=\"HttpStatusCode.InternalServerError\"/> with a valid <see cref=\"StatusV1\"/> in the response body.\n        /// </summary>\n        [Fact(DisplayName = \"List PodV1 returning InternalServerError with StatusV1 body throws KubeClientException\")]\n        public async Task Delete_Pod_InternalServerError_StatusV1_Throws_KubeApiException()\n        {\n            MockMessageHandler handler = new MockMessageHandler(\n                (HttpRequestMessage request) => request.CreateResponse(HttpStatusCode.InternalServerError,\n                    responseBody: JsonConvert.SerializeObject(new StatusV1\n                    {\n                        Code = 500,\n                        Reason = \"TestError\",\n                        Message = \"Simulated API error.\",\n                        Details = new StatusDetailsV1()\n                    }),\n                    mediaType: \"application/json\"\n                )\n            );\n\n            KubeApiException exception;\n            using (KubeApiClient client = handler.CreateClient(loggerFactory: LoggerFactory))\n            {\n                exception = await Assert.ThrowsAsync<KubeApiException>(async () =>\n                {\n                    await client.PodsV1().Delete(\"my-pod\", propagationPolicy: DeletePropagationPolicy.Background);\n                });\n\n                Assert.True(exception.HasStatus);\n                Assert.Equal(500, exception.Status.Code);\n                Assert.Equal(\"TestError\", exception.Status.Reason);\n                Assert.Equal(\"Simulated API error.\", exception.Status.Message);\n\n                exception = await Assert.ThrowsAsync<KubeApiException>(async () =>\n                {\n                    await client.PodsV1().Delete(\"my-pod\", propagationPolicy: DeletePropagationPolicy.Foreground);\n                });\n                Assert.True(exception.HasStatus);\n                Assert.Equal(500, exception.Status.Code);\n                Assert.Equal(\"TestError\", exception.Status.Reason);\n                Assert.Equal(\"Simulated API error.\", exception.Status.Message);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/ErrorHandling/MockMessageHandler.cs",
    "content": "using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.Extensions.Logging;\n\nnamespace KubeClient.Tests.ErrorHandling\n{\n    /// <summary>\n    ///     A mock implementation of <see cref=\"HttpMessageHandler\"/> for use in tests.\n    /// </summary>\n    public sealed class MockMessageHandler\n        : HttpMessageHandler\n    {\n        /// <summary>\n        ///     The delegate that handles incoming requests and returns their responses.\n        /// </summary>\n        readonly Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> _handler;\n\n        /// <summary>\n        ///     Create a new <see cref=\"MockMessageHandler\"/> that performs the specified action when a request is made.\n        /// </summary>\n        /// <param name=\"handler\">\n        ///     An asynchronous <see cref=\"Func{T1,T2,T2}\"/> delegate that is called when each request is made.\n        /// </param>\n        public MockMessageHandler(Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> handler)\n        {\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n            \n            _handler = handler;\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"MockMessageHandler\"/> that performs the specified action when a request is made.\n        /// </summary>\n        /// <param name=\"handler\">\n        ///     An asynchronous <see cref=\"Func{T1,T2}\"/> delegate that is called when each request is made.\n        /// </param>\n        public MockMessageHandler(Func<HttpRequestMessage, Task<HttpResponseMessage>> handler)\n        {\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n            \n            _handler = async (request, cancellationToken) =>\n            {\n                return await handler(request);\n            };\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"MockMessageHandler\"/> that performs the specified action when a request is made.\n        /// </summary>\n        /// <param name=\"handler\">\n        ///     A <see cref=\"Func{T1,T2}\"/> delegate that is called when each request is made.\n        /// </param>\n        public MockMessageHandler(Func<HttpRequestMessage, HttpResponseMessage> handler)\n        {\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n            \n            _handler = async (request, cancellationToken) =>\n            {\n                await Task.Yield();\n\n                HttpResponseMessage response = handler(request);\n\n                return response;\n            };\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"MockMessageHandler\"/> that performs the specified action when a request is made.\n        /// </summary>\n        /// <param name=\"handler\">\n        ///     A <see cref=\"Func{T1}\"/> delegate that is called when each request is made.\n        /// </param>\n        public MockMessageHandler(Func<HttpResponseMessage> handler)\n        {\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n            \n            _handler = async (request, cancellationToken) =>\n            {\n                await Task.Yield();\n\n                HttpResponseMessage response = handler();\n\n                return response;\n            };\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"MockMessageHandler\"/> that performs the specified action when a request is made.\n        /// </summary>\n        /// <param name=\"handler\">\n        ///     An <see cref=\"Action{T1}\"/> delegate that is called when each request is made.\n        /// </param>\n        /// <remarks>\n        ///     Because this handler does not return a response message, it should throw an exception.\n        /// </remarks>\n        public MockMessageHandler(Action<HttpRequestMessage> handler)\n        {\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n            \n            _handler = async (request, cancellationToken) =>\n            {\n                await Task.Yield();\n\n                handler(request);\n\n                throw new NotImplementedException($\"MockMessageHandler was passed an Action<HttpRequestMessage> delegate; this overload should throw an exception.\");\n            };\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"MockMessageHandler\"/> that performs the specified action when a request is made.\n        /// </summary>\n        /// <param name=\"handler\">\n        ///     An <see cref=\"Action\"/> delegate that is called when each request is made.\n        /// </param>\n        /// <remarks>\n        ///     Because this handler does not return a response message, it should throw an exception.\n        /// </remarks>\n        public MockMessageHandler(Action handler)\n        {\n            if (handler == null)\n                throw new ArgumentNullException(nameof(handler));\n            \n            _handler = async (request, cancellationToken) =>\n            {\n                await Task.Yield();\n\n                handler();\n\n                throw new NotImplementedException($\"MockMessageHandler was passed an Action<HttpRequestMessage> delegate; this overload should throw an exception.\");\n            };\n        }\n\n        /// <summary>\n        ///     Handle an HTTP request.\n        /// </summary>\n        /// <param name=\"request\">\n        ///     The outgoing HTTP request message.\n        /// </param>\n        /// <param name=\"cancellationToken\">\n        ///     A cancellation token that can be used to cancel the request.\n        /// </param>\n        /// <returns>\n        ///     The resulting HTTP response message.\n        /// </returns>\n        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n        {\n            HttpResponseMessage response = await _handler(request, cancellationToken);\n\n            return response;\n        }\n\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> that uses the <see cref=\"MockMessageHandler\"/> to handle HTTP requests.\n        /// </summary>\n        /// <param name=\"options\">\n        ///     Optional <see cref=\"KubeClientOptions\"/> that can be used to configure the client.\n        /// </param>\n        /// <param name=\"loggerFactory\">\n        ///     An optional <see cref=\"ILoggerFactory\"/> that can be used for client-level logging.\n        /// </param>\n        /// <returns>\n        ///     The configured <see cref=\"KubeApiClient\"/>.\n        /// </returns>\n        public KubeApiClient CreateClient(KubeClientOptions options = null, ILoggerFactory loggerFactory = null)\n        {\n            if (options == null)\n            {\n                options = new KubeClientOptions\n                {\n                    AllowInsecure = true,\n                    ApiEndPoint = new Uri(\"http://localhost:12345\")\n                };\n            }\n\n            HttpClient httpClient = new HttpClient(this)\n            {\n                BaseAddress = options.ApiEndPoint\n            };\n\n            return KubeApiClient.CreateTestClient(httpClient, options ?? new KubeClientOptions { LoggerFactory = loggerFactory });\n        }\n    }\n}"
  },
  {
    "path": "test/KubeClient.Tests/Http/BuildMessage/TypedRequest.cs",
    "content": "﻿using System;\nusing System.Net.Http;\nusing Xunit;\n\nnamespace KubeClient.Tests.Http.BuildMessage\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Testability.Xunit;\n\n    /// <summary>\n    ///\t\tMessage-building tests for an <see cref=\"HttpRequest{TContext}\"/> (<see cref=\"HttpRequest{TContext}.BuildRequestMessage\"/>).\n    /// </summary>\n    public class TypedRequest\n    {\n\t\t/// <summary>\n\t\t///\t\tThe default context for requests used by tests.\n\t\t/// </summary>\n\t\tstatic readonly string DefaultContext = \"Hello World\";\n\n\t\t/// <summary>\n\t\t///\t\tAn empty request.\n\t\t/// </summary>\n\t\tstatic readonly HttpRequest<string> EmptyRequest = HttpRequest<string>.Empty;\n\n\t\t/// <summary>\n\t\t///\t\tA request with an absolute URI.\n\t\t/// </summary>\n\t\tstatic readonly HttpRequest<string> AbsoluteRequest = HttpRequest<string>.Create(\"http://localhost:1234\");\n\n\t\t/// <summary>\n\t\t///\t\tA request with a relative URI.\n\t\t/// </summary>\n\t\tstatic readonly HttpRequest<string> RelativeRequest = HttpRequest<string>.Create(\"foo/bar\");\n\n\t\t#region Empty requests\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> throws <see cref=\"InvalidOperationException\"/>.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void Empty_Throws()\n\t\t{\n\t\t\tAssert.Throws<InvalidOperationException>(() =>\n\t\t\t{\n\t\t\t\tEmptyRequest.BuildRequestMessage(HttpMethod.Get, DefaultContext);\n\t\t\t});\n\t\t}\n\n\t\t#endregion Empty requests\n\n\t\t#region Relative URIs\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with a relative URI throws <see cref=\"InvalidOperationException\"/> if no base URI is supplied.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void RelativeUri_NoBaseUri_Throws()\n\t\t{\n\t\t\tAssert.Throws<InvalidOperationException>(() =>\n\t\t\t{\n\t\t\t\tRelativeRequest.BuildRequestMessage(HttpMethod.Get, DefaultContext);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with a relative URI prepends the supplied base URI to the request URI.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void RelativeUri_BaseUri_PrependsBaseUri()\n\t\t{\n\t\t\tUri baseUri = new Uri(\"http://tintoy.io:5678/\");\n\t\t\t\n\t\t\tRequestAssert.MessageHasUri(RelativeRequest, DefaultContext, baseUri,\n\t\t\t\texpectedUri: new Uri(baseUri, RelativeRequest.Uri)\n\t\t\t);\n\t\t}\n\n\t\t#endregion // Relative URIs\n\n\t\t#region Absolute URIs\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute URI ignores the lack of a base URI and uses the request URI.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_NoBaseUri_UsesRequestUri()\n\t\t{\n\t\t\tRequestAssert.MessageHasUri(AbsoluteRequest, DefaultContext,\n\t\t\t\texpectedUri: AbsoluteRequest.Uri\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute URI ignores the supplied base URI and uses the request URI.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_BaseUri_UsesRequestUri()\n\t\t{\n\t\t\tUri baseUri = new Uri(\"http://tintoy.io:5678/\");\n\n\t\t\tRequestAssert.MessageHasUri(AbsoluteRequest, DefaultContext, baseUri,\n\t\t\t\texpectedUri: AbsoluteRequest.Uri\n\t\t\t);\n\t\t}\n\n\t\t#endregion // Absolute URIs\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/BuildMessage/UntypedRequest.cs",
    "content": "﻿using System;\nusing System.Net.Http;\nusing Xunit;\n\nnamespace KubeClient.Tests.Http.BuildMessage\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Testability.Xunit;\n\n    /// <summary>\n    ///\t\tMessage-building tests for <see cref=\"HttpRequest\"/> (<see cref=\"HttpRequest.BuildRequestMessage\"/>).\n    /// </summary>\n    public class UntypedRequest\n\t{\n\t\t/// <summary>\n\t\t///\t\tA request with an absolute URI.\n\t\t/// </summary>\n\t\tstatic readonly HttpRequest AbsoluteRequest = HttpRequest.Create(\"http://localhost:1234\");\n\n\t\t/// <summary>\n\t\t///\t\tA request with a relative URI.\n\t\t/// </summary>\n\t\tstatic readonly HttpRequest RelativeRequest = HttpRequest.Create(\"foo/bar\");\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> throws <see cref=\"InvalidOperationException\"/>.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void Empty_Throws()\n\t\t{\n\t\t\tAssert.Throws<InvalidOperationException>(() =>\n\t\t\t{\n\t\t\t\tHttpRequest.Empty.BuildRequestMessage(HttpMethod.Get);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with a relative URI throws <see cref=\"InvalidOperationException\"/> if no base URI is supplied.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void RelativeUri_NoBaseUri_Throws()\n\t\t{\n\t\t\tAssert.Throws<InvalidOperationException>(() =>\n\t\t\t{\n\t\t\t\tRelativeRequest.BuildRequestMessage(HttpMethod.Get);\n\t\t\t});\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with a relative URI prepends the supplied base URI to the request URI.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void RelativeUri_BaseUri_PrependsBaseUri()\n\t\t{\n\t\t\tUri baseUri = new Uri(\"http://tintoy.io:5678/\");\n\n\t\t\tRequestAssert.MessageHasUri(RelativeRequest, baseUri,\n\t\t\t\texpectedUri: new Uri(baseUri, RelativeRequest.Uri)\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute URI ignores the lack of a base URI and uses the request URI.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_NoBaseUri_UsesRequestUri()\n\t\t{\n\t\t\tRequestAssert.MessageHasUri(AbsoluteRequest,\n\t\t\t\texpectedUri: AbsoluteRequest.Uri\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute URI ignores the supplied base URI and uses the request URI.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_BaseUri_UsesRequestUri()\n\t\t{\n\t\t\tUri baseUri = new Uri(\"http://tintoy.io:5678/\");\n\n\t\t\tRequestAssert.MessageHasUri(AbsoluteRequest, baseUri,\n\t\t\t\texpectedUri: AbsoluteRequest.Uri\n\t\t\t);\n\t\t}\n\n\t\t#region Template URIs\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute template URI, using statically-bound template parameters.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void Absoluteuri_Template()\n\t\t{\n\t\t\tHttpRequest request =\n\t\t\t\tHttpRequest.Factory.Create(\"http://localhost:1234/{action}/{id}\")\n\t\t\t\t\t.WithTemplateParameter(\"action\", \"foo\")\n\t\t\t\t\t.WithTemplateParameter(\"id\", \"bar\");\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar\"\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute template URI, using dynamically-bound template parameters.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_Template_DeferredValues()\n\t\t{\n\t\t\tstring action = \"foo\";\n\t\t\tstring id = \"bar\";\n\n\t\t\tHttpRequest request =\n\t\t\t\tHttpRequest.Factory.Create(\"http://localhost:1234/{action}/{id}\")\n\t\t\t\t\t.WithTemplateParameter(\"action\", () => action)\n\t\t\t\t\t.WithTemplateParameter(\"id\", () => id);\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar\"\n\t\t\t);\n\t\t\t\n\t\t\taction = \"diddly\";\n\t\t\tid = \"dee\";\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/diddly/dee\"\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute template URI that includes a query component, using statically-bound template parameters.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_Template_Query()\n\t\t{\n\t\t\tHttpRequest request =\n\t\t\t\tHttpRequest.Factory.Create(\"http://localhost:1234/{action}/{id}?flag={flag}\")\n\t\t\t\t\t.WithTemplateParameter(\"action\", \"foo\")\n\t\t\t\t\t.WithTemplateParameter(\"id\", \"bar\")\n\t\t\t\t\t.WithTemplateParameter(\"flag\", true);\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar?flag=True\"\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute template URI that includes a query component, using dynamically-bound template parameters.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_Template_Query_DeferredValues()\n\t\t{\n\t\t\tstring action = \"foo\";\n\t\t\tstring id = \"bar\";\n\t\t\tbool? flag = true;\n\n\t\t\tHttpRequest request =\n\t\t\t\tHttpRequest.Factory.Create(\"http://localhost:1234/\")\n\t\t\t\t\t.WithRelativeUri(\"{action}/{id}?flag={flag?}\")\n\t\t\t\t\t.WithTemplateParameter(\"action\", () => action)\n\t\t\t\t\t.WithTemplateParameter(\"id\", () => id)\n\t\t\t\t\t.WithTemplateParameter(\"flag\", () => flag);\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar?flag=True\"\n\t\t\t);\n\n\t\t\taction = \"diddly\";\n\t\t\tid = \"dee\";\n\t\t\tflag = null;\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/diddly/dee\"\n\t\t\t);\n\t\t}\n\n\t\t#endregion // Template URIs\n\n\t\t#region Query parameters\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute URI that adds a query component, using statically-bound template parameters.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_Query()\n\t\t{\n\t\t\tHttpRequest request =\n\t\t\t\tHttpRequest.Factory.Create(\"http://localhost:1234/foo/bar\")\n\t\t\t\t\t.WithQueryParameter(\"flag\", true);\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar?flag=True\"\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"HttpRequest\"/> with an absolute URI that adds a query component, using dynamically-bound template parameters.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_AddQuery_DeferredValues()\n\t\t{\n\t\t\tbool? flag = true;\n\n\t\t\tHttpRequest request =\n\t\t\t\tHttpRequest.Factory.Create(\"http://localhost:1234/foo/bar\")\n\t\t\t\t\t.WithQueryParameter(\"flag\", () => flag);\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar?flag=True\"\n\t\t\t);\n\t\t\t\n\t\t\tflag = null;\n\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar\"\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tAn <see cref=\"HttpRequest\"/> with an absolute URI that adds a query component, with no additional path component).\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_AddQuery_EmptyPath()\n\t\t{\n\t\t\tHttpRequest request =\n\t\t\t\tAbsoluteRequest.WithRelativeUri(\"foo/bar\")\n\t\t\t\t\t.WithRelativeUri(\"?baz=bonk\");\n\t\t\t\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar?baz=bonk\"\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t/// \tAn <see cref=\"HttpRequest\"/> with an absolute URI that adds a query component, with no additional path component).\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void AbsoluteUri_WithQuery_AddQuery_EmptyPath()\n\t\t{\n\t\t\tHttpRequest request =\n\t\t\t\tAbsoluteRequest.WithRelativeUri(\"foo/bar?baz=bonk\")\n\t\t\t\t\t.WithRelativeUri(\"?bo=diddly\");\n\t\t\t\n\t\t\tRequestAssert.MessageHasUri(request,\n\t\t\t\texpectedUri: \"http://localhost:1234/foo/bar?baz=bonk&bo=diddly\"\n\t\t\t);\n\t\t}\n\n\t\t#endregion // Query parameters\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/ClientBuilderTests.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\nusing Xunit.Sdk;\n\nnamespace KubeClient.Tests.Http\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Clients;\n\tusing KubeClient.Http.Testability;\n    using KubeClient.Http.Testability.MessageHandlers;\n    using KubeClient.Http.Testability.Xunit;\n\n    /// <summary>\n    ///\t\tUnit-tests for <see cref=\"ClientBuilder\"/>.\n    /// </summary>\n    public class ClientBuilderTests\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe base URI used for requests in <see cref=\"ClientBuilder\"/> tests.\n\t\t/// </summary>\n\t\tstatic readonly Uri BaseUri = new Uri(\"http://localhost\");\n\n\t\t/// <summary>\n\t\t///\t\tThe default path used for requests in <see cref=\"ClientBuilder\"/> tests.\n\t\t/// </summary>\n\t\tstatic readonly string TestRequestPath = \"/foo/bar\";\n\n\t\t/// <summary>\n\t\t///\t\tThe default URI used for requests in <see cref=\"ClientBuilder\"/> tests.\n\t\t/// </summary>\n\t\tstatic readonly Uri TestRequestUri = new Uri(BaseUri, TestRequestPath);\n\n\t\t/// <summary>\n\t\t///\t\tThe default request used for <see cref=\"ClientBuilder\"/> tests.\n\t\t/// </summary>\n\t\tstatic readonly HttpRequest TestRequest = HttpRequest.Create(TestRequestPath);\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a <see cref=\"ClientBuilder\"/>, configured with the default message pipeline terminus, can build an <see cref=\"HttpClient\"/> with a custom message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task BuilderWithDefaultTerminus_Can_Build_Client_WithCustomTerminus()\n\t\t{\n\t\t\tusing MockMessageHandler testHandler = TestHandlers.RespondWith(request =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(request, TestRequestUri);\n\n\t\t\t\treturn request.CreateResponse(HttpStatusCode.Ambiguous);\n\t\t\t});\n\n\t\t\tClientBuilder builder = new ClientBuilder();\n\n\t\t\tusing HttpClient client = builder.CreateClient(BaseUri, messagePipelineTerminus: testHandler);\n\t\t\tusing HttpResponseMessage response = await client.GetAsync(TestRequest);\n\n\t\t\tAssert.Equal(HttpStatusCode.Ambiguous, response.StatusCode);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a <see cref=\"ClientBuilder\"/>, configured with a custom message pipeline terminus, can build an <see cref=\"HttpClient\"/> with that message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task BuilderWithCustomTerminus_Can_Build_Client()\n\t\t{\n\t\t\tusing MockMessageHandler testHandler = TestHandlers.RespondWith(request =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(request, TestRequestUri);\n\n\t\t\t\treturn request.CreateResponse(HttpStatusCode.Ambiguous);\n\t\t\t});\n\n\t\t\tClientBuilder builder = new ClientBuilder().WithMessagePipelineTerminus(() => testHandler);\n\n\t\t\tusing HttpClient client = builder.CreateClient(BaseUri);\n\t\t\tusing HttpResponseMessage response = await client.GetAsync(TestRequest);\n\n\t\t\tAssert.Equal(HttpStatusCode.Ambiguous, response.StatusCode);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a <see cref=\"ClientBuilder\"/>, configured with a custom message pipeline terminus, can build an <see cref=\"HttpClient\"/> with a different message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task BuilderWithCustomTerminus_Can_Build_Client_WithCustomTerminus()\n\t\t{\n\t\t\tusing MockMessageHandler testHandler1 = TestHandlers.RespondWith(request =>\n\t\t\t{\n\t\t\t\tthrow EqualException.ForMismatchedValues(\n\t\t\t\t\texpected: \"testHandler2\",\n\t\t\t\t\tactual: \"testHandler1\",\n\t\t\t\t\tbanner: \"Client was created with the wrong message pipeline terminus.\"\n\t\t\t\t);\n\t\t\t});\n\t\t\tusing MockMessageHandler testHandler2 = TestHandlers.RespondWith(request =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(request, TestRequestUri);\n\n\t\t\t\treturn request.CreateResponse(HttpStatusCode.SeeOther);\n\t\t\t});\n\n\t\t\tClientBuilder builder = new ClientBuilder().WithMessagePipelineTerminus(() => testHandler1);\n\n\t\t\tusing HttpClient client = builder.CreateClient(BaseUri, messagePipelineTerminus: testHandler2);\n\t\t\tusing HttpResponseMessage response = await client.GetAsync(TestRequest);\n\n\t\t\tAssert.Equal(HttpStatusCode.SeeOther, response.StatusCode);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/Diagnostics/LogEntry.cs",
    "content": "﻿using Microsoft.Extensions.Logging;\nusing System;\nusing System.Collections.Immutable;\n\nnamespace KubeClient.Tests.Http.Diagnostics\n{\n    /// <summary>\n    ///\t\tRepresents a log entry captured and republished by a <see cref=\"TestLogger\"/>.\n    /// </summary>\n    public class LogEntry\n    {\n        /// <summary>\n        ///\t\tCreate a new <see cref=\"LogEntry\"/>.\n        /// </summary>\n        /// <param name=\"level\">\n        ///\t\tThe log entry's level (severity).\n        /// </param>\n        /// <param name=\"eventId\">\n        ///\t\tThe log entry's event Id.\n        /// </param>\n        /// <param name=\"message\">\n        ///\t\tThe log message.\n        /// </param>\n        /// <param name=\"exception\">\n        ///\t\tThe log entry's associated exception (if any).\n        /// </param>\n        /// <param name=\"state\">\n        ///\t\tState data associated with the log entry.\n        /// </param>\n        /// <param name=\"properties\">\n        ///\t\tProperties (if any) associated with the log entry.\n        /// </param>\n        public LogEntry(LogLevel level, EventId eventId, string message, Exception exception, object state, ImmutableDictionary<string, object> properties)\n        {\n            if (message == null)\n                throw new ArgumentNullException(nameof(message));\n\n            if (properties == null)\n                throw new ArgumentNullException(nameof(properties));\n\n            Level = level;\n            EventId = eventId;\n            Message = message;\n            Exception = exception;\n            State = state;\n            Properties = properties;\n        }\n\n        /// <summary>\n        ///\t\tThe log entry's level (severity).\n        /// </summary>\n        public LogLevel Level { get; }\n\n        /// <summary>\n        ///\t\tThe log entry's event Id.\n        /// </summary>\n        public EventId EventId { get; }\n\n        /// <summary>\n        ///\t\tThe log message.\n        /// </summary>\n        public string Message { get; }\n\n        /// <summary>\n        ///\t\tThe log entry's associated exception (if any).\n        /// </summary>\n        public Exception Exception { get; }\n\n        /// <summary>\n        ///\t\tState data associated with the log entry.\n        /// </summary>\n        public object State { get; }\n\n        /// <summary>\n        ///\t\tProperties associated with the log entry (if any).\n        /// </summary>\n        public ImmutableDictionary<string, object> Properties { get; }\n    }\n}"
  },
  {
    "path": "test/KubeClient.Tests/Http/Diagnostics/LoggingTests.cs",
    "content": "﻿using Microsoft.Extensions.Logging;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace KubeClient.Tests.Http.Diagnostics\n{\n    using KubeClient.Http.Clients;\n    using KubeClient.Http.Diagnostics;\n    using KubeClient.Http.Formatters;\n    using KubeClient.Http.Testability;\n    using KubeClient.Http.Testability.MessageHandlers;\n\n    /// <summary>\n    ///\t\tTests for the KubeClient.Http.Diagnostics logging facility.\n    /// </summary>\n    public sealed class LoggingTests\n    {\n\t\t/// <summary>\n\t\t///\t\tCreate a new logging test suite.\n\t\t/// </summary>\n\t\tpublic LoggingTests()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that BeginRequest / EndRequest log entries are emitted for a successful HTTP GET request.\n\t\t/// </summary>\n\t\t[Fact(DisplayName = \"Emit BeginRequest / EndRequest log entries for successful HTTP GET\")]\n\t\tpublic async Task Post_Request_Emits_LogEntries()\n\t\t{\n\t\t\tstring expectedResponseBody = JsonConvert.ToString(\"hello test\");\n\t\t\t\n\t\t\tvar logEntries = new List<LogEntry>();\n\n\t\t\tTestLogger logger = new TestLogger(LogLevel.Debug);\n\t\t\tlogger.LogEntries.Subscribe(\n\t\t\t\tlogEntry => logEntries.Add(logEntry)\n\t\t\t);\n\n\t\t\tClientBuilder clientBuilder = new ClientBuilder()\n\t\t\t\t.WithLogging(logger,\n\t\t\t\t\tresponseComponents: LogMessageComponents.Basic | LogMessageComponents.Body\n\t\t\t\t);\n\n\t\t\tHttpClient client = clientBuilder.CreateClient(\"http://localhost:1234\", new MockMessageHandler(\n\t\t\t\trequest => request.CreateResponse(HttpStatusCode.OK,\n                    responseBody: expectedResponseBody,\n\t\t\t\t\tmediaType: WellKnownMediaTypes.Json\n\t\t\t\t)\n\t\t\t));\n\t\t\tusing (client)\n\t\t\tusing (HttpResponseMessage response = await client.GetAsync(\"/test\"))\n\t\t\t{\n\t\t\t\tresponse.EnsureSuccessStatusCode();\n\n\t\t\t\tstring responseBody = await response.Content.ReadAsStringAsync();\n\t\t\t\tAssert.Equal(expectedResponseBody, responseBody);\n\t\t\t}\n\n\t\t\tAssert.Equal(3, logEntries.Count);\n\n\t\t\tLogEntry beginRequestEntry = logEntries[0];\n\t\t\tAssert.Equal(LogEventIds.BeginRequest, beginRequestEntry.EventId);\n\t\t\tAssert.Equal(\"Performing GET request to 'http://localhost:1234/test'.\",\n\t\t\t\tbeginRequestEntry.Message\n\t\t\t);\n\t\t\tAssert.Equal(\"GET\",\n\t\t\t\tbeginRequestEntry.Properties[\"Method\"]\n\t\t\t);\n\t\t\tAssert.Equal(new Uri(\"http://localhost:1234/test\"),\n\t\t\t\tbeginRequestEntry.Properties[\"RequestUri\"]\n\t\t\t);\n\n\t\t\tLogEntry responseBodyEntry = logEntries[1];\n\t\t\tAssert.Equal(LogEventIds.ResponseBody, responseBodyEntry.EventId);\n\t\t\tAssert.Equal($\"Receive response body for GET request to 'http://localhost:1234/test' (OK):\\n{expectedResponseBody}\",\n\t\t\t\tresponseBodyEntry.Message\n\t\t\t);\n\t\t\tAssert.Equal(\"GET\",\n\t\t\t\tresponseBodyEntry.Properties[\"Method\"]\n\t\t\t);\n\t\t\tAssert.Equal(new Uri(\"http://localhost:1234/test\"),\n\t\t\t\tresponseBodyEntry.Properties[\"RequestUri\"]\n\t\t\t);\n\t\t\tAssert.Equal(expectedResponseBody,\n\t\t\t\tresponseBodyEntry.Properties[\"Body\"]\n\t\t\t);\n\t\t\tAssert.Equal(HttpStatusCode.OK,\n\t\t\t\tresponseBodyEntry.Properties[\"StatusCode\"]\n\t\t\t);\n\n\t\t\tLogEntry endRequestEntry = logEntries[2];\n\t\t\tAssert.Equal(LogEventIds.EndRequest, endRequestEntry.EventId);\n\t\t\tAssert.Equal(\"Completed GET request to 'http://localhost:1234/test' (OK).\",\n\t\t\t\tendRequestEntry.Message\n\t\t\t);\n\t\t\tAssert.Equal(\"GET\",\n\t\t\t\tendRequestEntry.Properties[\"Method\"]\n\t\t\t);\n\t\t\tAssert.Equal(new Uri(\"http://localhost:1234/test\"),\n\t\t\t\tendRequestEntry.Properties[\"RequestUri\"]\n\t\t\t);\n\t\t\tAssert.Equal(HttpStatusCode.OK,\n\t\t\t\tendRequestEntry.Properties[\"StatusCode\"]\n\t\t\t);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that <see cref=\"TestLogger\"/> can emit an informational log entry.\n\t\t/// </summary>\n\t\t[Fact(DisplayName = \"TestLogger.LogInformation succeeds\")]\n\t\tpublic void TestLogger_LogInformation_Success()\n\t\t{\n\t\t\tconst string name = \"World\";\n\t\t\tconst LogLevel expectedLogLevel = LogLevel.Information;\n\n\t\t\tvar logEntries = new List<LogEntry>();\n\n\t\t\tTestLogger logger = new TestLogger(LogLevel.Information);\n\t\t\tlogger.LogEntries.Subscribe(\n\t\t\t\tlogEntry => logEntries.Add(logEntry)\n\t\t\t);\n\n\t\t\tlogger.LogInformation(\"Hello, {Name}!\", name);\n\n\t\t\tAssert.Single(logEntries, logEntry =>\n\t\t\t{\n\t\t\t\tAssert.Equal(new EventId(), logEntry.EventId);\n\t\t\t\tAssert.Null(logEntry.EventId.Name);\n\n\t\t\t\tAssert.Equal(expectedLogLevel, logEntry.Level);\n\n\t\t\t\tAssert.Equal($\"Hello, {name}!\", logEntry.Message);\n\t\t\t\tAssert.True(\n\t\t\t\t\tlogEntry.Properties.ContainsKey(\"Name\")\n\t\t\t\t);\n\t\t\t\tAssert.Equal(name, logEntry.Properties[\"Name\"]);\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/Diagnostics/TestLogger.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing System;\nusing System.Reactive.Subjects;\nusing System.Reactive.Disposables;\nusing System.Collections.Immutable;\nusing System.Collections.Generic;\n\nnamespace KubeClient.Tests.Http.Diagnostics\n{\n    /// <summary>\n    /// \tA stub implementation of <see cref=\"ILogger\"/> for use in tests.\n    /// </summary>\n    public sealed class TestLogger\n        : ILogger, IDisposable\n    {\n        readonly Subject<LogEntry> _logEntries = new Subject<LogEntry>();\n\n        /// <summary>\n        /// \tCreate a new <see cref=\"TestLogger\"/>.\n        /// </summary>\n        /// <param name=\"logLevel\">\n        /// \tThe logger's minimum log level.\n        /// </param>\n        public TestLogger(LogLevel logLevel)\n        {\n            LogLevel = logLevel;\n        }\n\n        /// <summary>\n        ///\t\tDispose of resources being used by the <see cref=\"TestLogger\"/>.\n        /// </summary>\n        public void Dispose() => _logEntries.Dispose();\n\n        /// <summary>\n        /// \tThe logger's minimum log level.\n        /// </summary>\n        public LogLevel LogLevel { get; }\n\n        /// <summary>\n        ///\t\tAn observable sequence of log entries emitted by the <see cref=\"TestLogger\"/>.\n        /// </summary>\n        public IObservable<LogEntry> LogEntries => _logEntries;\n\n        /// <summary>\n        /// \tEmit a log entry.\n        /// </summary>\n        /// <param name=\"level\">\n        /// \tThe log entry's level.\n        /// </param>\n        /// <param name=\"eventId\">\n        /// \tThe log entry's associated event Id.\n        /// </param>\n        /// <param name=\"state\">\n        /// \tThe log entry to be written. Can be also an object.\n        /// </param>\n        /// <param name=\"exception\">\n        /// \tThe exception (if any) related to the log entry.\n        /// </param>\n        /// <param name=\"formatter\">\n        /// \tA function that creates a <c>string</c> log message from the <paramref name=\"state\"/> and <paramref name=\"exception\"/>.\n        /// </param>\n        public void Log<TState>(LogLevel level, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)\n        {\n            if (formatter == null)\n                throw new ArgumentNullException(nameof(formatter));\n\n            ImmutableDictionary<string, object> properties =\n                (state is IReadOnlyList<KeyValuePair<string, object>> formattedLogValues)\n                    ? ImmutableDictionary.CreateRange(formattedLogValues)\n                    : ImmutableDictionary<string, object>.Empty;\n\n            _logEntries.OnNext(new LogEntry(\n                level,\n                eventId,\n                formatter(state, exception),\n                exception,\n                state,\n                properties\n            ));\n        }\n\n        /// <summary>\n        /// \tCheck if the given <paramref name=\"logLevel\"/> is enabled.\n        /// </summary>\n        /// <param name=\"logLevel\">\n\t\t/// \tThe level to be checked.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \t<c>true</c> if enabled; otherwise, <c>false</c>.\n\t\t/// </returns>\n        public bool IsEnabled(LogLevel logLevel) => logLevel >= LogLevel;\n\n        /// <summary>\n        /// \tBegin a logical operation scope.\n        /// </summary>\n        /// <param name=\"state\">\n\t\t/// \tAn identifier for the scope.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tAn <see cref=\"IDisposable\"/> that ends the logical operation scope when disposed.\n\t\t/// </returns>\n\t\tpublic IDisposable BeginScope<TState>(TState state) => Disposable.Empty;\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/Formatters/FormattedRequestTests.cs",
    "content": "using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace KubeClient.Tests.Http.Formatters\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Formatters;\n    using KubeClient.Http.Testability.Xunit;\n\n    /// <summary>\n    ///\t\tTests for HTTP requests using content formatters.\n    /// </summary>\n    public class FormattedRequestTests\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe base URI for requests used by tests.\n\t\t/// </summary>\n\t\tstatic readonly Uri BaseUri\t\t\t\t= new Uri(\"http://localhost:1234/\");\n\n\t\t/// <summary>\n\t\t///\t\tThe base <see cref=\"HttpRequest\"/> definition used by tests.\n\t\t/// </summary>\n\t\tstatic readonly HttpRequest BaseRequest\t= HttpRequest.Factory.Create(BaseUri);\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a request builder can build a request with an absolute and then relative template URI, then perform an HTTP GET request.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task Request_Get_RelativeTemplateUri()\n\t\t{\n\t\t\tHttpClient client = JsonTestClients.ExpectJson(\n\t\t\t\tnew Uri(BaseUri, \"foo/1234/bar?diddly=bonk\"), HttpMethod.Get,\n\t\t\t\tresponseBody: \"Success!\"\n\t\t\t);\n\t\t\tusing (client)\n\t\t\t{\n\t\t\t\tHttpRequest request =\n\t\t\t\t\tBaseRequest.WithRelativeUri(\"foo/{variable}/bar\")\n\t\t\t\t\t\t.WithQueryParameter(\"diddly\", \"bonk\")\n\t\t\t\t\t\t.WithTemplateParameter(\"variable\", 1234)\n\t\t\t\t\t\t.WithTemplateParameter(\"diddly\", \"bonk\")\n\t\t\t\t\t\t.UseJson().ExpectJson();\n\n\t\t\t\tusing (HttpResponseMessage response = await client.GetAsync(request))\n\t\t\t\t{\n\t\t\t\t\tAssert.True(response.IsSuccessStatusCode);\n\t\t\t\t\tAssert.NotNull(response.Content);\n\t\t\t\t\tAssert.Equal(WellKnownMediaTypes.Json, response.Content.Headers.ContentType.MediaType);\n\n\t\t\t\t\tstring responseBody = await response.ReadContentAsAsync<string>();\n\t\t\t\t\tAssert.Equal(\"Success!\", responseBody);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a request builder can build a request with an absolute and then relative URI, expecting a JSON response, and then perform an HTTP POST request.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task Request_Post_RelativeUri_ExpectJson()\n\t\t{\n\t\t\tHttpClient client = JsonTestClients.ExpectJson(\n\t\t\t\tnew Uri(BaseUri, \"foo/bar\"), HttpMethod.Post,\n\t\t\t\tresponseBody: \"Success!\",\n\t\t\t\tassertion: async request =>\n\t\t\t\t{\n\t\t\t\t\tMessageAssert.AcceptsMediaType(request, WellKnownMediaTypes.Json);\n\n\t\t\t\t\tawait MessageAssert.BodyIsAsync(request,\n\t\t\t\t\t\t\"{\\\"Foo\\\":\\\"Bar\\\",\\\"Baz\\\":1234}\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t\tusing (client)\n\t\t\t{\n\t\t\t\tHttpRequest request =\n\t\t\t\t\tBaseRequest.WithRelativeUri(\"foo/bar\")\n\t\t\t\t\t\t.UseJson().ExpectJson();\n\n\t\t\t\tHttpResponseMessage response = await\n\t\t\t\t\tclient.PostAsJsonAsync(request,\n\t\t\t\t\t\tpostBody: new\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tFoo = \"Bar\",\n\t\t\t\t\t\t\tBaz = 1234\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\tusing (response)\n\t\t\t\t{\n\t\t\t\t\tAssert.True(response.IsSuccessStatusCode);\n\t\t\t\t\tAssert.NotNull(response.Content?.Headers?.ContentType);\n\t\t\t\t\tAssert.Equal(WellKnownMediaTypes.Json, response.Content.Headers.ContentType.MediaType);\n\n\t\t\t\t\tstring responseBody = await response.ReadContentAsAsync<string>();\n\t\t\t\t\tAssert.Equal(\"Success!\", responseBody);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a request builder can build a request with an absolute and then relative URI, and then perform a JSON-formatted HTTP POST request.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task Request_PostAsJson_RelativeUri()\n\t\t{\n\t\t\tHttpClient client = JsonTestClients.ExpectJson(\n\t\t\t\tnew Uri(BaseUri, \"foo/bar\"), HttpMethod.Post, responseBody: 1234,\n\t\t\t\tassertion: async request =>\n\t\t\t\t{\n\t\t\t\t\tMessageAssert.AcceptsMediaType(request, WellKnownMediaTypes.Json);\n\n\t\t\t\t\tawait MessageAssert.BodyIsAsync(request, \"\\\"1234\\\"\");\n\t\t\t\t}\n\t\t\t);\n\t\t\tusing (client)\n\t\t\t{\n\t\t\t\tHttpRequest request =\n\t\t\t\t\tBaseRequest.WithRelativeUri(\"foo/bar\")\n\t\t\t\t\t\t.UseJson().ExpectJson();\n\n\t\t\t\tint responseBody = await\n\t\t\t\t\tclient.PostAsJsonAsync(request,\n\t\t\t\t\t\tpostBody: 1234.ToString()\n\t\t\t\t\t)\n\t\t\t\t\t.ReadContentAsAsync<int>();\n\n\t\t\t\tAssert.Equal(1234, responseBody);\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/Formatters/JsonFormattedRequestTests.cs",
    "content": "﻿using System.Net.Http;\nusing Xunit;\n\nnamespace KubeClient.Tests.Http.Formatters\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Formatters;\n    using KubeClient.Http.Testability.Xunit;\n\n    /// <summary>\n    ///\t\tTests for JSON-formatted HTTP requests.\n    /// </summary>\n    public class JsonFormattedRequestTests\n    {\n        /// <summary>\n        ///\t\tThe base request used for tests.\n        /// </summary>\n        static readonly HttpRequest BaseRequest = HttpRequest.Factory.Create(\"http://localhost/\");\n\n        /// <summary>\n        ///\t\tThe base typed request used for tests.\n        /// </summary>\n        static readonly HttpRequest<string> TypedBaseRequest = HttpRequest<string>.Factory.Create(\"http://localhost/\");\n\n        /// <summary>\n        ///\t\tVerify that the ExpectJson extension method for <see cref=\"HttpRequest\"/> adds the \"application/json\" JSON media type to the request's Accept header.\n        /// </summary>\n        [Fact]\n        public void Request_ExpectJson_Sets_AcceptHeader()\n        {\n            RequestAssert.Message(BaseRequest.ExpectJson(), HttpMethod.Get, requestMessage =>\n            {\n                MessageAssert.AcceptsMediaType(requestMessage, WellKnownMediaTypes.Json);\n            });\n        }\n\n        /// <summary>\n        ///\t\tVerify that the ExpectJson extension method for <see cref=\"HttpRequest\"/> adds the \"application/json\" JSON media type to the request's Accept header.\n        /// </summary>\n        [Fact]\n        public void TypedRequest_ExpectJson_Sets_AcceptHeader()\n        {\n            RequestAssert.Message(TypedBaseRequest.ExpectJson(), HttpMethod.Get, requestMessage =>\n            {\n                MessageAssert.AcceptsMediaType(requestMessage, WellKnownMediaTypes.Json);\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/Formatters/JsonTestClients.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Tests.Http.Formatters\n{\n    using KubeClient.Http.Formatters;\n    using KubeClient.Http.Formatters.Json;\n    using KubeClient.Http.Testability.Xunit;\n\n    /// <summary>\n    ///\t\tFactory methods for JSON-formatted mocked <see cref=\"HttpClient\"/>s used by tests.\n    /// </summary>\n    public static class JsonTestClients\n    {\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that always responds to requests with the specified status code.\n        /// </summary>\n        /// <typeparam name=\"TBody\">\n        ///\t\tThe response body type.\n        /// </typeparam>\n        /// <param name=\"statusCode\">\n        ///\t\tThe HTTP status code.\n        /// </param>\n        /// <param name=\"body\">\n        ///\t\tThe response body (will be serialised as JSON).\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient RespondWith<TBody>(HttpStatusCode statusCode, TBody body)\n        {\n            return TestClients.RespondWith(\n                request => request.CreateResponse(statusCode, body, WellKnownMediaTypes.Json, new NewtonsoftJsonFormatter())\n            );\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined (JSON-formatted) response.\n        /// </summary>\n        /// <typeparam name=\"TResponseBody\">\n        ///\t\tThe type to be sent as a response body.\n        /// </typeparam>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"expectedRequestMethod\">\n        ///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe <typeparamref name=\"TResponseBody\"/> instance to be serialised into the outgoing response message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectJson<TResponseBody>(Uri expectedRequestUri, HttpMethod expectedRequestMethod, TResponseBody responseBody)\n        {\n            return ExpectJson(expectedRequestUri, expectedRequestMethod, responseBody, assertion: null);\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined (JSON-formatted) response.\n        /// </summary>\n        /// <typeparam name=\"TResponseBody\">\n        ///\t\tThe type to be sent as a response body.\n        /// </typeparam>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"expectedRequestMethod\">\n        ///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe <typeparamref name=\"TResponseBody\"/> instance to be serialised into the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectJson<TResponseBody>(Uri expectedRequestUri, HttpMethod expectedRequestMethod, TResponseBody responseBody, Action<HttpRequestMessage> assertion)\n        {\n            return ExpectJson(expectedRequestUri, expectedRequestMethod, HttpStatusCode.OK, responseBody, assertion);\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined (JSON-formatted) response.\n        /// </summary>\n        /// <typeparam name=\"TResponseBody\">\n        ///\t\tThe type to be sent as a response body.\n        /// </typeparam>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"expectedRequestMethod\">\n        ///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe <typeparamref name=\"TResponseBody\"/> instance to be serialised into the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectJson<TResponseBody>(Uri expectedRequestUri, HttpMethod expectedRequestMethod, HttpStatusCode responseStatusCode, TResponseBody responseBody, Action<HttpRequestMessage> assertion)\n        {\n            return Expect(expectedRequestUri, expectedRequestMethod, responseStatusCode, responseBody, WellKnownMediaTypes.Json, new NewtonsoftJsonFormatter(), assertion);\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined response.\n        /// </summary>\n        /// <typeparam name=\"TResponseBody\">\n        ///\t\tThe type to be sent as a response body.\n        /// </typeparam>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"expectedRequestMethod\">\n        ///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe <typeparamref name=\"TResponseBody\"/> instance to be serialised into the outgoing response message.\n        /// </param>\n        /// <param name=\"responseMediaType\">\n        ///\t\tThe media type for the ougoing response message body.\n        /// </param>\n        /// <param name=\"responseFormatter\">\n        ///\t\tThe <see cref=\"IOutputFormatter\"/> used to serialise the outgoing response message.\n        /// </param>\n        /// <param name=\"assertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient Expect<TResponseBody>(Uri expectedRequestUri, HttpMethod expectedRequestMethod, HttpStatusCode responseStatusCode, TResponseBody responseBody, string responseMediaType, IOutputFormatter responseFormatter, Action<HttpRequestMessage> assertion)\n        {\n            if (expectedRequestUri == null)\n                throw new ArgumentNullException(nameof(expectedRequestUri));\n\n            if (expectedRequestMethod == null)\n                throw new ArgumentNullException(nameof(expectedRequestMethod));\n\n            if (String.IsNullOrWhiteSpace(responseMediaType))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'responseMediaType'.\", nameof(responseMediaType));\n\n            if (responseFormatter == null)\n                throw new ArgumentNullException(nameof(responseFormatter));\n\n            return TestClients.RespondWith(requestMessage =>\n            {\n                Xunit.Assert.NotNull(requestMessage);\n                Xunit.Assert.Equal(expectedRequestMethod, requestMessage.Method);\n                Xunit.Assert.Equal(expectedRequestUri, requestMessage.RequestUri);\n\n                assertion?.Invoke(requestMessage);\n\n                return requestMessage.CreateResponse(\n                    responseStatusCode,\n                    responseBody,\n                    responseMediaType,\n                    new NewtonsoftJsonFormatter()\n                );\n            });\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined (JSON-formatted) response.\n        /// </summary>\n        /// <typeparam name=\"TResponseBody\">\n        ///\t\tThe type to be sent as a response body.\n        /// </typeparam>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"expectedRequestMethod\">\n        ///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe <typeparamref name=\"TResponseBody\"/> instance to be serialised into the outgoing response message.\n        /// </param>\n        /// <param name=\"asyncAssertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectJson<TResponseBody>(Uri expectedRequestUri, HttpMethod expectedRequestMethod, TResponseBody responseBody, Func<HttpRequestMessage, Task> asyncAssertion)\n        {\n            return ExpectJson(expectedRequestUri, expectedRequestMethod, HttpStatusCode.OK, responseBody, asyncAssertion);\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined (JSON-formatted) response.\n        /// </summary>\n        /// <typeparam name=\"TResponseBody\">\n        ///\t\tThe type to be sent as a response body.\n        /// </typeparam>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"expectedRequestMethod\">\n        ///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe <typeparamref name=\"TResponseBody\"/> instance to be serialised into the outgoing response message.\n        /// </param>\n        /// <param name=\"asyncAssertion\">\n        ///\t\tA delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient ExpectJson<TResponseBody>(Uri expectedRequestUri, HttpMethod expectedRequestMethod, HttpStatusCode responseStatusCode, TResponseBody responseBody, Func<HttpRequestMessage, Task> asyncAssertion)\n        {\n            return Expect(expectedRequestUri, expectedRequestMethod, responseStatusCode, responseBody, WellKnownMediaTypes.Json, new NewtonsoftJsonFormatter(), asyncAssertion);\n        }\n\n        /// <summary>\n        ///\t\tCreate an <see cref=\"HttpClient\"/> that performs assertions on an incoming request message and returns a predefined response.\n        /// </summary>\n        /// <typeparam name=\"TResponseBody\">\n        ///\t\tThe type to be sent as a response body.\n        /// </typeparam>\n        /// <param name=\"expectedRequestUri\">\n        ///\t\tThe expected URI for the incoming request message.\n        /// </param>\n        /// <param name=\"expectedRequestMethod\">\n        ///\t\tThe expected HTTP method (e.g. GET / POST / PUT) for the incoming request message.\n        /// </param>\n        /// <param name=\"responseStatusCode\">\n        ///\t\tThe HTTP status code for the outgoing response message.\n        /// </param>\n        /// <param name=\"responseBody\">\n        ///\t\tThe <typeparamref name=\"TResponseBody\"/> instance to be serialised into the outgoing response message.\n        /// </param>\n        /// <param name=\"responseMediaType\">\n        ///\t\tThe media type for the ougoing response message body.\n        /// </param>\n        /// <param name=\"responseFormatter\">\n        ///\t\tThe <see cref=\"IOutputFormatter\"/> used to serialise the outgoing response message.\n        /// </param>\n        /// <param name=\"asyncAssertion\">\n        ///\t\tAn asynchronous delegate that makes assertions about the incoming request message.\n        /// </param>\n        /// <returns>\n        ///\t\tThe configured <see cref=\"HttpClient\"/>.\n        /// </returns>\n        public static HttpClient Expect<TResponseBody>(Uri expectedRequestUri, HttpMethod expectedRequestMethod, HttpStatusCode responseStatusCode, TResponseBody responseBody, string responseMediaType, IOutputFormatter responseFormatter, Func<HttpRequestMessage, Task> asyncAssertion)\n        {\n            if (expectedRequestUri == null)\n                throw new ArgumentNullException(nameof(expectedRequestUri));\n\n            if (expectedRequestMethod == null)\n                throw new ArgumentNullException(nameof(expectedRequestMethod));\n\n            if (String.IsNullOrWhiteSpace(responseMediaType))\n                throw new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'responseMediaType'.\", nameof(responseMediaType));\n\n            if (responseFormatter == null)\n                throw new ArgumentNullException(nameof(responseFormatter));\n\n            return TestClients.AsyncRespondWith(async requestMessage =>\n            {\n                Xunit.Assert.NotNull(requestMessage);\n                Xunit.Assert.Equal(expectedRequestMethod, requestMessage.Method);\n                Xunit.Assert.Equal(expectedRequestUri, requestMessage.RequestUri);\n\n                Task assertionTask = asyncAssertion?.Invoke(requestMessage);\n                if (assertionTask != null)\n                    await assertionTask;\n\n                return requestMessage.CreateResponse(\n                    responseStatusCode,\n                    responseBody,\n                    responseMediaType,\n                    new NewtonsoftJsonFormatter()\n                );\n            });\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/Formatters/MessageExtensions.cs",
    "content": "using System;\nusing System.Net;\nusing System.Net.Http;\n\nnamespace KubeClient.Tests.Http.Formatters\n{\n    using KubeClient.Http.Formatters;\n    using KubeClient.Http.Testability;\n\n\t/// <summary>\n\t/// \tFormatter-related extension methods for <see cref=\"HttpRequestMessage\"/> / <see cref=\"HttpResponseMessage\"/>.\n\t/// </summary>\n\tpublic static class MessageExtensions\n\t{\n\t\t/// <summary>\n\t\t/// \tCreate a <see cref=\"HttpResponseMessage\">response message</see>.\n\t\t/// </summary>\n\t\t/// <typeparam name=\"TBody\">\n\t\t///\t\tThe type of object that represents the response body.\n\t\t/// </typeparam>\n\t\t/// <param name=\"request\">\n\t\t///\t\tThe <see cref=\"HttpRequestMessage\">response message</see>.\n\t\t/// </param>\n\t\t/// <param name=\"statusCode\">\n\t\t///\t\tThe response status code.\n\t\t/// </param>\n\t\t/// <param name=\"body\">\n\t\t///\t\tThe response body.\n\t\t/// </param>\n\t\t/// <param name=\"mediaType\">\n\t\t///\t\tThe target media type for the response body.\n\t\t/// </param>\n\t\t/// <param name=\"formatter\">\n\t\t///\t\tThe content formatter that will serialise the response body.\n\t\t/// </param>\n\t\t/// <returns>\n\t\t///\t\tThe configured response message.\n\t\t/// </returns>\n\t\tpublic static HttpResponseMessage CreateResponse<TBody>(this HttpRequestMessage request, HttpStatusCode statusCode, TBody body, string mediaType, IOutputFormatter formatter)\n\t\t{\n\t\t\tif (request == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(request));\n\n\t\t\tif (String.IsNullOrWhiteSpace(mediaType))\n\t\t\t\tthrow new ArgumentException(\"Argument cannot be null, empty, or composed entirely of whitespace: 'mediaType'.\", nameof(mediaType));\n\n\t\t\tHttpResponseMessage response = request.CreateResponse(statusCode);\n\t\t\ttry\n\t\t\t{\n\t\t\t\tresponse.Content = new FormattedObjectContent(\n\t\t\t\t\tformatter,\n\t\t\t\t\ttypeof(TBody),\n\t\t\t\t\tbody,\n\t\t\t\t\tmediaType\n\t\t\t\t);\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tusing (response)\n\t\t\t\t{\n\t\t\t\t\tthrow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn response;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/Formatters/ReadResponseTests.cs",
    "content": "﻿using System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace KubeClient.Tests.Http.Formatters\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Formatters.Json;\n\n    /// <summary>\n    ///\t\tTests for reading responses from invoked messages.\n    /// </summary>\n    public class ReadResponseTests\n    {\n        /// <summary>\n        ///\t\tThe default request used for tests.\n        /// </summary>\n        static readonly HttpRequest DefaultRequest = HttpRequest.Factory.Create(\"http://localhost/\");\n\n        /// <summary>\n        ///\t\tCreate a new response-read test suite.\n        /// </summary>\n        public ReadResponseTests()\n        {\n        }\n\n        /// <summary>\n        ///\t\tVerify that the body of an <see cref=\"HttpRequest\"/>'s response (with a status code that indicates success) can be read using the JSON formatter.\n        /// </summary>\n        /// <returns>\n        ///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n        /// </returns>\n        [Fact]\n        public async Task Response_Read_Json_Success()\n        {\n            TestBody expectedBody = new TestBody\n            {\n                StringProperty = \"This is a test\",\n                IntProperty = 123\n            };\n            using (HttpClient client = JsonTestClients.RespondWith(HttpStatusCode.OK, expectedBody))\n            {\n                TestBody actualBody = await client\n                    .GetAsync(DefaultRequest)\n                    .ReadContentAsAsync<TestBody>(new NewtonsoftJsonFormatter());\n\n                Assert.NotNull(actualBody);\n                Assert.NotSame(expectedBody, actualBody);\n                Assert.Equal(expectedBody.StringProperty, actualBody.StringProperty);\n                Assert.Equal(expectedBody.IntProperty, actualBody.IntProperty);\n            }\n        }\n\n        /// <summary>\n        ///\t\tVerify that the body of an <see cref=\"HttpRequest\"/>'s response (with a status code that has been declared as indicating success) can be read using the JSON formatter.\n        /// </summary>\n        /// <returns>\n        ///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n        /// </returns>\n        [Fact]\n        public async Task Response_Read_Json_TreatAsSuccess()\n        {\n            TestBody expectedBody = new TestBody\n            {\n                StringProperty = \"This is a test\",\n                IntProperty = 123\n            };\n            using (HttpClient client = JsonTestClients.RespondWith(HttpStatusCode.BadRequest, expectedBody))\n            {\n                TestBody actualBody = await client\n                    .GetAsync(DefaultRequest)\n                    .ReadContentAsAsync<TestBody>(new NewtonsoftJsonFormatter(), HttpStatusCode.OK, HttpStatusCode.BadRequest);\n\n                Assert.NotNull(actualBody);\n                Assert.NotSame(expectedBody, actualBody);\n                Assert.Equal(expectedBody.StringProperty, actualBody.StringProperty);\n                Assert.Equal(expectedBody.IntProperty, actualBody.IntProperty);\n            }\n        }\n\n        /// <summary>\n        ///\t\tVerify that the body of an <see cref=\"HttpRequest\"/>'s response (with a status code that indicates failure) can be transformed by the onFailureResponse handler into a valid response body.\n        /// </summary>\n        /// <returns>\n        ///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n        /// </returns>\n        [Fact]\n        public async Task Response_Read_Json_Failure_Transformed()\n        {\n            TestBody expectedBody = new TestBody\n            {\n                StringProperty = \"This is a failure response\",\n                IntProperty = 456\n            };\n\n            TestBody responseBody = new TestBody\n            {\n                StringProperty = \"This is a test\",\n                IntProperty = 123\n            };\n            using (HttpClient client = JsonTestClients.RespondWith(HttpStatusCode.BadRequest, responseBody))\n            {\n                TestBody actualBody = await client\n                    .GetAsync(DefaultRequest)\n                    .ReadContentAsAsync(new NewtonsoftJsonFormatter(),\n                        onFailureResponse: () => new TestBody\n                        {\n                            StringProperty = expectedBody.StringProperty,\n                            IntProperty = expectedBody.IntProperty\n                        }\n                    );\n\n                Assert.NotNull(actualBody);\n                Assert.NotSame(expectedBody, actualBody);\n                Assert.Equal(expectedBody.StringProperty, actualBody.StringProperty);\n                Assert.Equal(expectedBody.IntProperty, actualBody.IntProperty);\n            }\n        }\n\n        /// <summary>\n        ///\t\tA simple data-type to be deserialised from the response.\n        /// </summary>\n        /// <remarks>\n        ///\t\tMust be public to support XML serialisation (or have the DataContract attribute applied to it).\n        /// </remarks>\n        public class TestBody\n        {\n            /// <summary>\n            ///\t\tA string property.\n            /// </summary>\n            public string StringProperty { get; set; }\n\n            /// <summary>\n            ///\t\tAn integer property.\n            /// </summary>\n            public int IntProperty { get; set; }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/TypedClientBuilderTests.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\nusing Xunit.Sdk;\n\nnamespace KubeClient.Tests.Http\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Clients;\n    using KubeClient.Http.Testability;\n    using KubeClient.Http.Testability.MessageHandlers;\n    using KubeClient.Http.Testability.Xunit;\n\n    /// <summary>\n    ///\t\tUnit-tests for <see cref=\"ClientBuilder{TContext}\"/>.\n    /// </summary>\n    public class TypedClientBuilderTests\n\t{\n\t\t/// <summary>\n\t\t///\t\tThe base URI used for requests in <see cref=\"ClientBuilder{TContext}\"/> tests.\n\t\t/// </summary>\n\t\tstatic readonly Uri BaseUri = new Uri(\"http://localhost\");\n\n\t\t/// <summary>\n\t\t///\t\tThe default path used for requests in <see cref=\"ClientBuilder{TContext}\"/> tests.\n\t\t/// </summary>\n\t\tstatic readonly string TestRequestPath = \"/foo/bar\";\n\n\t\t/// <summary>\n\t\t///\t\tThe default URI used for requests in <see cref=\"ClientBuilder{TContext}\"/> tests.\n\t\t/// </summary>\n\t\tstatic readonly Uri TestRequestUri = new Uri(BaseUri, TestRequestPath);\n\n\t\t/// <summary>\n\t\t///\t\tThe default request used for <see cref=\"ClientBuilder{TContext}\"/> tests.\n\t\t/// </summary>\n\t\tstatic readonly HttpRequest TestRequest = HttpRequest.Create(TestRequestPath);\n\n\t\t/// <summary>\n\t\t///\t\tAn <see cref=\"Object\"/> used as the context for handler creation.\n\t\t/// </summary>\n\t\treadonly TestBuilderContext _testBuilderContext = new TestBuilderContext();\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a <see cref=\"ClientBuilder{TContext}\"/>, configured with the default message pipeline terminus, can build an <see cref=\"HttpClient\"/> with a custom message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task BuilderWithDefaultTerminus_Can_Build_Client_WithCustomTerminus()\n\t\t{\n\t\t\tusing MockMessageHandler testHandler = TestHandlers.RespondWith(request =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(request, TestRequestUri);\n\n\t\t\t\treturn request.CreateResponse(HttpStatusCode.Ambiguous);\n\t\t\t});\n\n\t\t\tClientBuilder<TestBuilderContext> builder = new ClientBuilder<TestBuilderContext>();\n\n\t\t\tusing HttpClient client = builder.CreateClient(_testBuilderContext, BaseUri, messagePipelineTerminus: testHandler);\n\t\t\tusing HttpResponseMessage response = await client.GetAsync(TestRequest);\n\n\t\t\tAssert.Equal(HttpStatusCode.Ambiguous, response.StatusCode);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a <see cref=\"ClientBuilder{TContext}\"/>, configured with a custom message pipeline terminus, can build an <see cref=\"HttpClient\"/> with that message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task BuilderWithCustomTerminus_Can_Build_Client()\n\t\t{\n\t\t\tusing MockMessageHandler testHandler = TestHandlers.RespondWith(request =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(request, TestRequestUri);\n\n\t\t\t\treturn request.CreateResponse(HttpStatusCode.Ambiguous);\n\t\t\t});\n\n\t\t\tClientBuilder<TestBuilderContext> builder = new ClientBuilder<TestBuilderContext>()\n\t\t\t\t.WithMessagePipelineTerminus(context =>\n\t\t\t\t{\n\t\t\t\t\tAssert.Same(_testBuilderContext, context);\n\n\t\t\t\t\treturn testHandler;\n\t\t\t\t});\n\n\t\t\tusing HttpClient client = builder.CreateClient(_testBuilderContext, BaseUri);\n\t\t\tusing HttpResponseMessage response = await client.GetAsync(TestRequest);\n\n\t\t\tAssert.Equal(HttpStatusCode.Ambiguous, response.StatusCode);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a <see cref=\"ClientBuilder{TContext}\"/>, configured with a custom message pipeline terminus, can build an <see cref=\"HttpClient\"/> with a different message pipeline terminus.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task BuilderWithCustomTerminus_Can_Build_Client_WithCustomTerminus()\n\t\t{\n\t\t\tusing MockMessageHandler testHandler1 = TestHandlers.RespondWith(request =>\n\t\t\t{\n\t\t\t\tthrow EqualException.ForMismatchedValues(\n\t\t\t\t\texpected: \"testHandler2\",\n\t\t\t\t\tactual: \"testHandler1\",\n\t\t\t\t\tbanner: \"Client was created with the wrong message pipeline terminus.\"\n\t\t\t\t);\n\t\t\t});\n\t\t\tusing MockMessageHandler testHandler2 = TestHandlers.RespondWith(request =>\n\t\t\t{\n\t\t\t\tMessageAssert.HasRequestUri(request, TestRequestUri);\n\n\t\t\t\treturn request.CreateResponse(HttpStatusCode.SeeOther);\n\t\t\t});\n\n\t\t\tClientBuilder<TestBuilderContext> builder = new ClientBuilder<TestBuilderContext>()\n\t\t\t\t.WithMessagePipelineTerminus(context =>\n\t\t\t\t{\n\t\t\t\t\tAssert.Same(_testBuilderContext, context);\n\n\t\t\t\t\treturn testHandler1;\n\t\t\t\t});\n\n\t\t\tusing HttpClient client = builder.CreateClient(_testBuilderContext, BaseUri, messagePipelineTerminus: testHandler2);\n\t\t\tusing HttpResponseMessage response = await client.GetAsync(TestRequest);\n\n\t\t\tAssert.Equal(HttpStatusCode.SeeOther, response.StatusCode);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDummy type to represent context for <see cref=\"ClientBuilder{TContext}\"/>.\n\t\t/// </summary>\n\t\tclass TestBuilderContext\n\t\t{\n\t\t\t/// <summary>\n\t\t\t///\t\tCreate a new <see cref=\"TestBuilderContext\"/>.\n\t\t\t/// </summary>\n\t\t\tpublic TestBuilderContext()\n\t\t\t{\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/TypedRequestTests.cs",
    "content": "using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace KubeClient.Tests.Http\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Testability.Xunit;\n\n    /// <summary>\n    ///\t\tUnit-tests for <see cref=\"HttpRequest{TContext}\"/> that use a context for resolving deferred parameters.\n    /// </summary>\n    public class TypedRequestTests\n\t{\n\t\t/// <summary>\n\t\t///\t\tVerify that a request can build and then invoke request with an absolute and then relative template URI (with query parameters) with deferred values that come from a supplied context value.\n\t\t/// </summary>\n\t\t/// <returns>\n\t\t///\t\tA <see cref=\"Task\"/> representing asynchronous test execution.\n\t\t/// </returns>\n\t\t[Fact]\n\t\tpublic async Task Request_RelativeTemplateUriWithQuery_DeferredValues_FromContext_Get()\n\t\t{\n\t\t\tUri baseUri = new Uri(\"http://localhost:1234/\");\n\n\t\t\tTestParameterContext testParameterContext = new TestParameterContext();\n\n\t\t\tUri expectedUri = null;\n\t\t\tHttpClient client = TestClients.Expect(requestMessage =>\n\t\t\t{\n\t\t\t\tAssert.Equal(expectedUri, requestMessage.RequestUri);\n\t\t\t});\n\t\t\tusing (client)\n\t\t\t{\n\t\t\t\tHttpRequest<TestParameterContext> requestBuilder =\n\t\t\t\t\tHttpRequest<TestParameterContext>.Factory.Create(baseUri)\n\t\t\t\t\t\t.WithRelativeUri(\"{action}/{id}?flag={flag?}\")\n\t\t\t\t\t\t.WithTemplateParameter(\"action\", context => context.Action)\n\t\t\t\t\t\t.WithTemplateParameter(\"id\", context => context.Id)\n\t\t\t\t\t\t.WithTemplateParameter(\"flag\", context => context.Flag);\n\n\t\t\t\ttestParameterContext.Action = \"foo\";\n\t\t\t\ttestParameterContext.Id = 1;\n\t\t\t\ttestParameterContext.Flag = true;\n\n\t\t\t\texpectedUri = new Uri(baseUri, \"foo/1?flag=True\");\n\t\t\t\tawait client.GetAsync(requestBuilder, testParameterContext);\n\n\t\t\t\ttestParameterContext.Flag = false;\n\n\t\t\t\texpectedUri = new Uri(baseUri, \"foo/1?flag=False\");\n\t\t\t\tawait client.GetAsync(requestBuilder, testParameterContext);\n\n\t\t\t\ttestParameterContext.Action = \"diddly\";\n\t\t\t\ttestParameterContext.Id = -17;\n\t\t\t\ttestParameterContext.Flag = null;\n\n\t\t\t\texpectedUri = new Uri(baseUri, \"diddly/-17\");\n\t\t\t\tawait client.GetAsync(requestBuilder, testParameterContext);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a request can build a request with an absolute and then relative template URI (with query parameters) with deferred values that come from a supplied context value.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void Request_RelativeTemplateUriWithQuery_DeferredValues_FromContext_Build()\n\t\t{\n\t\t\tUri baseUri = new Uri(\"http://localhost:1234/\");\n\n\t\t\tHttpRequest<TestParameterContext> requestBuilder =\n\t\t\t\tHttpRequest<TestParameterContext>.Factory.Create(baseUri)\n\t\t\t\t\t.WithRelativeUri(\"{action}/{id}?flag={flag?}\")\n\t\t\t\t\t.WithTemplateParameter(\"action\", context => context.Action)\n\t\t\t\t\t.WithTemplateParameter(\"id\", context => context.Id)\n\t\t\t\t\t.WithTemplateParameter(\"flag\", context => context.Flag);\n\n\t\t\tTestParameterContext testParameterContext = new TestParameterContext\n\t\t\t{\n\t\t\t\tAction = \"foo\",\n\t\t\t\tId = 1,\n\t\t\t\tFlag = true\n\t\t\t};\n\t\t\tusing (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext))\n\t\t\t{\n\t\t\t\tAssert.Equal(\n\t\t\t\t\tnew Uri(baseUri, \"foo/1?flag=True\"),\n\t\t\t\t\trequestMessage.RequestUri\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttestParameterContext.Flag = false;\n\t\t\tusing (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext))\n\t\t\t{\n\t\t\t\tAssert.Equal(\n\t\t\t\t\tnew Uri(baseUri, \"foo/1?flag=False\"),\n\t\t\t\t\trequestMessage.RequestUri\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttestParameterContext.Action = \"diddly\";\n\t\t\ttestParameterContext.Id = -17;\n\t\t\ttestParameterContext.Flag = null;\n\t\t\tusing (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext))\n\t\t\t{\n\t\t\t\tAssert.Equal(\n\t\t\t\t\tnew Uri(baseUri, \"diddly/-17\"),\n\t\t\t\t\trequestMessage.RequestUri\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that a request can build a request with an absolute and then relative template URI (with query parameters) with deferred values that come from the request's default (intrinsic) context.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void Request_RelativeTemplateUriWithQuery_DeferredValues_FromDefaultContext_Build()\n\t\t{\n\t\t\tUri baseUri = new Uri(\"http://localhost:1234/\");\n\n\t\t\tTestParameterContext testParameterContext = new TestParameterContext\n\t\t\t{\n\t\t\t\tAction = \"foo\",\n\t\t\t\tId = 1,\n\t\t\t\tFlag = true\n\t\t\t};\n\n\t\t\tHttpRequest<TestParameterContext> requestBuilder =\n\t\t\t\tHttpRequest<TestParameterContext>.Factory.Create(baseUri)\n\t\t\t\t\t.WithRelativeUri(\"{action}/{id}?flag={flag?}\")\n\t\t\t\t\t.WithTemplateParameter(\"action\", context => context.Action)\n\t\t\t\t\t.WithTemplateParameter(\"id\", context => context.Id)\n\t\t\t\t\t.WithTemplateParameter(\"flag\", context => context.Flag);\n\n\t\t\tusing (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext))\n\t\t\t{\n\t\t\t\tAssert.Equal(\n\t\t\t\t\tnew Uri(baseUri, \"foo/1?flag=True\"),\n\t\t\t\t\trequestMessage.RequestUri\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttestParameterContext.Flag = false;\n\t\t\tusing (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext))\n\t\t\t{\n\t\t\t\tAssert.Equal(\n\t\t\t\t\tnew Uri(baseUri, \"foo/1?flag=False\"),\n\t\t\t\t\trequestMessage.RequestUri\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttestParameterContext.Action = \"diddly\";\n\t\t\ttestParameterContext.Id = -17;\n\t\t\ttestParameterContext.Flag = null;\n\t\t\tusing (HttpRequestMessage requestMessage = requestBuilder.BuildRequestMessage(HttpMethod.Get, testParameterContext))\n\t\t\t{\n\t\t\t\tAssert.Equal(\n\t\t\t\t\tnew Uri(baseUri, \"diddly/-17\"),\n\t\t\t\t\trequestMessage.RequestUri\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tA parameter-resolution context class used for tests.\n\t\t/// </summary>\n\t\tclass TestParameterContext\n\t\t{\n\t\t\t/// <summary>\n\t\t\t///\t\tThe \"Action\" parameter.\n\t\t\t/// </summary>\n\t\t\tpublic string Action\n\t\t\t{\n\t\t\t\tget;\n\t\t\t\tset;\n\t\t\t}\n\n\t\t\t/// <summary>\n\t\t\t///\t\tThe \"Id\" parameter.\n\t\t\t/// </summary>\n\t\t\tpublic int Id\n\t\t\t{\n\t\t\t\tget;\n\t\t\t\tset;\n\t\t\t}\n\n\t\t\t/// <summary>\n\t\t\t///\t\tThe \"Flag\" parameter.\n\t\t\t/// </summary>\n\t\t\tpublic bool? Flag\n\t\t\t{\n\t\t\t\tget;\n\t\t\t\tset;\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/UnitTestBase.cs",
    "content": "﻿namespace KubeClient.Tests.Http\n{\n\t/// <summary>\n\t///\t\tBase class for unit-test suites.\n\t/// </summary>\n\tpublic abstract class UnitTestBase\n\t{\n\t\t/// <summary>\n\t\t///\t\tInitialise <see cref=\"UnitTestBase\"/>.\n\t\t/// </summary>\n\t\tprotected UnitTestBase()\n\t\t{\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Http/UriTemplateTests.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Xunit;\n\nnamespace KubeClient.Tests.Http\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Templates;\n\n    /// <summary>\n    ///\t\tUnit-tests for URI templating functionality.\n    /// </summary>\n    public sealed class UriTemplateTests\n\t\t: UnitTestBase\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate a new URI templating unit-test suite.\n\t\t/// </summary>\n\t\tpublic UriTemplateTests()\n\t\t{\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that template segments can be parsed from a URI.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void Can_Parse_TemplateSegments_From_Uri()\n\t\t{\n\t\t\tIReadOnlyList<TemplateSegment> segments = TemplateSegment.Parse(\n\t\t\t\t\"api/{controller}/{action}/{id?}/properties\"\n\t\t\t);\n\t\t\t\n\t\t\tAssert.Equal(6, segments.Count);\n\t\t\tAssert.IsAssignableFrom<RootUriSegment>(segments[0]);\n\t\t\t\n\t\t\tLiteralUriSegment apiSegment = Assert.IsAssignableFrom<LiteralUriSegment>(segments[1]);\n\t\t\tAssert.Equal(\"api\", apiSegment.Value);\n\t\t\t\n\t\t\tParameterizedUriSegment controllerSegment = Assert.IsAssignableFrom<ParameterizedUriSegment>(segments[2]);\n\t\t\tAssert.True(controllerSegment.IsDirectory);\n\t\t\tAssert.Equal(\"controller\", controllerSegment.TemplateParameterName);\n\t\t\tAssert.False(controllerSegment.IsOptional);\n\n\t\t\tParameterizedUriSegment actionSegment = Assert.IsAssignableFrom<ParameterizedUriSegment>(segments[3]);\n\t\t\tAssert.True(actionSegment.IsDirectory);\n\t\t\tAssert.Equal(\"action\", actionSegment.TemplateParameterName);\n\t\t\tAssert.False(actionSegment.IsOptional);\n\n\t\t\tParameterizedUriSegment idSegment = Assert.IsAssignableFrom<ParameterizedUriSegment>(segments[4]);\n\t\t\tAssert.True(idSegment.IsDirectory);\n\t\t\tAssert.Equal(\"id\", idSegment.TemplateParameterName);\n\t\t\tAssert.True(idSegment.IsOptional);\n\n\t\t\tLiteralUriSegment propertiesSegment = Assert.IsAssignableFrom<LiteralUriSegment>(segments[5]);\n\t\t\tAssert.False(propertiesSegment.IsDirectory);\n\t\t\tAssert.Equal(\"properties\", propertiesSegment.Value);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that template segments can be parsed from a URI with a query component.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void Can_Parse_TemplateSegments_From_Uri_WithQuery()\n\t\t{\n\t\t\tIReadOnlyList<TemplateSegment> segments = TemplateSegment.Parse(\n\t\t\t\t\"api/{controller}/{action}/{id?}/properties?propertyIds={propertyGroupIds}&diddly={dee?}&foo=bar\"\n\t\t\t);\n\n\t\t\tAssert.Equal(9, segments.Count);\n\t\t\tAssert.IsAssignableFrom<RootUriSegment>(segments[0]);\n\n\t\t\tLiteralUriSegment apiSegment = Assert.IsAssignableFrom<LiteralUriSegment>(segments[1]);\n\t\t\tAssert.Equal(\"api\", apiSegment.Value);\n\n\t\t\tParameterizedUriSegment controllerSegment = Assert.IsAssignableFrom<ParameterizedUriSegment>(segments[2]);\n\t\t\tAssert.True(controllerSegment.IsDirectory);\n\t\t\tAssert.Equal(\"controller\", controllerSegment.TemplateParameterName);\n\t\t\tAssert.False(controllerSegment.IsOptional);\n\n\t\t\tParameterizedUriSegment actionSegment = Assert.IsAssignableFrom<ParameterizedUriSegment>(segments[3]);\n\t\t\tAssert.True(actionSegment.IsDirectory);\n\t\t\tAssert.Equal(\"action\", actionSegment.TemplateParameterName);\n\t\t\tAssert.False(actionSegment.IsOptional);\n\n\t\t\tParameterizedUriSegment idSegment = Assert.IsAssignableFrom<ParameterizedUriSegment>(segments[4]);\n\t\t\tAssert.True(idSegment.IsDirectory);\n\t\t\tAssert.Equal(\"id\", idSegment.TemplateParameterName);\n\t\t\tAssert.True(idSegment.IsOptional);\n\n\t\t\tLiteralUriSegment propertiesSegment = Assert.IsAssignableFrom<LiteralUriSegment>(segments[5]);\n\t\t\tAssert.False(propertiesSegment.IsDirectory);\n\t\t\tAssert.Equal(\"properties\", propertiesSegment.Value);\n\n\t\t\tParameterizedQuerySegment propertyIdsSegment = Assert.IsAssignableFrom<ParameterizedQuerySegment>(segments[6]);\n\t\t\tAssert.Equal(\"propertyIds\", propertyIdsSegment.QueryParameterName);\n\t\t\tAssert.Equal(\"propertyGroupIds\", propertyIdsSegment.TemplateParameterName);\n\t\t\tAssert.False(propertyIdsSegment.IsOptional);\n\n\t\t\tParameterizedQuerySegment diddlySegment = Assert.IsAssignableFrom<ParameterizedQuerySegment>(segments[7]);\n\t\t\tAssert.Equal(\"diddly\", diddlySegment.QueryParameterName);\n\t\t\tAssert.Equal(\"dee\", diddlySegment.TemplateParameterName);\n\t\t\tAssert.True(diddlySegment.IsOptional);\n\n\t\t\tLiteralQuerySegment fooSegment = Assert.IsAssignableFrom<LiteralQuerySegment>(segments[8]);\n\t\t\tAssert.Equal(\"foo\", fooSegment.QueryParameterName);\n\t\t\tAssert.Equal(\"bar\", fooSegment.QueryParameterValue);\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tVerify that template with a query component can be populated.\n\t\t/// </summary>\n\t\t[Fact]\n\t\tpublic void Can_Populate_Template_WithQuery()\n\t\t{\n\t\t\tUriTemplate template = new UriTemplate(\n\t\t\t\t\"api/{controller}/{action}/{id?}/properties?propertyIds={propertyGroupIds}&diddly={dee?}&foo=bar\"\n\t\t\t);\n\n\t\t\tUri generatedUri = template.Populate(\n\t\t\t\tbaseUri: new Uri(\"http://test-host/\"), \n\t\t\t\ttemplateParameters: new Dictionary<string, string>\n\t\t\t\t{\n\t\t\t\t\t{ \"controller\", \"organizations\" },\n\t\t\t\t\t{ \"action\", \"distinct\" },\n\t\t\t\t\t{ \"propertyGroupIds\", \"System.OrganizationCommercial;EnterpriseMobility.OrganizationAirwatch\" }\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tAssert.Equal(\n\t\t\t\t\"http://test-host/api/organizations/distinct/properties?propertyIds=System.OrganizationCommercial%3BEnterpriseMobility.OrganizationAirwatch&foo=bar\",\n\t\t\t\tgeneratedUri.AbsoluteUri\n\t\t\t);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/JsonSerializationTests.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Tests\n{\n    using Models;\n    using Models.Converters;\n    using ResourceClients;\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests for JSON serialisation of various Kubernetes models.\n    /// </summary>\n    public class JsonSerializationTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new Kubernetes model serialisation test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public JsonSerializationTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that KubeObjectV1 correctly populates Kind and ApiVersion when constructed.\n        /// </summary>\n        [InlineData(typeof(PodV1),                  JTokenType.Object)]\n        [InlineData(typeof(PodListV1),              JTokenType.Object)]\n        [InlineData(typeof(DeploymentListV1Beta1),  JTokenType.Object)]\n        [InlineData(typeof(DeploymentV1Beta1),      JTokenType.Object)]\n        [Theory(DisplayName = \"Serialised KubeObjectV1 and inheritors have correct root token type \")]\n        public void KubeObject_JTokenType(Type kubeObjectType, JTokenType expectedTokenType)\n        {\n            KubeObjectV1 kubeObject = (KubeObjectV1)Activator.CreateInstance(kubeObjectType);\n\n            JToken rootToken;\n            using (JTokenWriter writer = new JTokenWriter())\n            {\n                new JsonSerializer().Serialize(writer, kubeObject);\n                writer.Flush();\n\n                rootToken = writer.Token;\n            }\n            \n            Assert.NotNull(rootToken);\n            Assert.Equal(rootToken.Type, expectedTokenType);\n        }\n\n        /// <summary>\n        ///     Verify that serialised models correctly include or omit required/optional empty collection properties.\n        /// </summary>\n        [InlineData(typeof(ObjectMetaV1), nameof(ObjectMetaV1.Annotations),  false)]\n        [InlineData(typeof(ObjectMetaV1), nameof(ObjectMetaV1.Labels),       false)]\n        [InlineData(typeof(PodSpecV1),    nameof(PodSpecV1.Containers),      true)]\n        [InlineData(typeof(PodSpecV1),    nameof(PodSpecV1.HostAliases),     false)]\n        [Theory(DisplayName = \"Serialised models correctly include or omit required/optional empty collection properties \")]\n        public void KubeObjectV1_Empty_CollectionProperty(Type modelType, string targetPropertyName, bool shouldBeSerialized)\n        {\n            object model = Activator.CreateInstance(modelType);\n\n            JObject rootObject;\n            using (JTokenWriter writer = new JTokenWriter())\n            {\n                new JsonSerializer().Serialize(writer, model);\n                writer.Flush();\n\n                rootObject = (JObject)writer.Token;\n            }\n\n            string expectedPropertyName = GetJsonPropertyName(modelType, targetPropertyName);\n            string[] actualPropertyNames = rootObject.Properties().Select(property => property.Name).ToArray();\n\n            if (shouldBeSerialized)\n                Assert.Contains(expectedPropertyName, actualPropertyNames);\n            else\n                Assert.DoesNotContain(expectedPropertyName, actualPropertyNames);\n        }\n\n        /// <summary>\n        /// Verify that the casing of keys in <see cref=\"SecretV1.Data\"/> are preserved.\n        /// </summary>\n        [Theory]\n        [InlineData(\"abc\")]\n        [InlineData(\"Abc\")]\n        [InlineData(\"ABC\")]\n        public void SecretV1_Data_PreserveKeyCase(string key)\n        {\n            var model = new SecretV1\n            {\n                Data =\n                {\n                    [key] = key\n                }\n            };\n\n            JObject rootObject;\n            using ( JTokenWriter writer = new JTokenWriter() )\n            {\n                JsonSerializer.Create(KubeResourceClient.SerializerSettings).Serialize(writer, model);\n                writer.Flush();\n\n                rootObject = (JObject) writer.Token;\n            }\n\n            Log.LogInformation(\"Serialized:\\n{JSON:l}\",\n                rootObject.ToString(Formatting.Indented)\n            );\n\n            JObject data = rootObject.Value<JObject>(\"data\");\n            Assert.NotNull(data);\n\n            Assert.Equal(key,\n                data.Value<string>(key)\n            );\n        }\n\n        /// <summary>\n        /// Verify that the casing of keys in <see cref=\"ConfigMapV1.Data\"/> are preserved.\n        /// </summary>\n        [Theory]\n        [InlineData(\"abc\")]\n        [InlineData(\"Abc\")]\n        [InlineData(\"ABC\")]\n        public void ConfigMapV1_Data_PreserveKeyCase(string key)\n        {\n            var model = new ConfigMapV1\n            {\n                Data =\n                {\n                    [key] = key\n                }\n            };\n\n            JObject rootObject;\n            using ( JTokenWriter writer = new JTokenWriter() )\n            {\n                JsonSerializer.Create(KubeResourceClient.SerializerSettings).Serialize(writer, model);\n                writer.Flush();\n\n                rootObject = (JObject) writer.Token;\n            }\n\n            Log.LogInformation(\"Serialized:\\n{JSON:l}\",\n                rootObject.ToString(Formatting.Indented)\n            );\n\n            JObject data = rootObject.Value<JObject>(\"data\");\n            Assert.NotNull(data);\n\n            Assert.Equal(key,\n                data.Value<string>(key)\n            );\n        }\n\n        /// <summary>\n        /// Verify that an <see cref=\"Int32OrStringV1\"/> with a <c>null</c> value deserialises correctly.\n        /// </summary>\n        [Fact]\n        public void Int32OrStringWithNullDeserializesCorrectly()\n        {\n            string json = \"{ \\\"path\\\": \\\"/healthz\\\", \\\"port\\\": null, \\\"scheme\\\": \\\"HTTP\\\" }\";\n            HTTPGetActionV1 httpGetAction = JsonConvert.DeserializeObject<HTTPGetActionV1>(json);\n            \n            Assert.NotNull(httpGetAction);\n            Assert.Equal(\"/healthz\", httpGetAction.Path);\n            Assert.Null(httpGetAction.Port);\n            Assert.Equal(\"HTTP\", httpGetAction.Scheme);\n        }\n\n        /// <summary>\n        /// Verify that an <see cref=\"Int32OrStringV1\"/> with an integer value deserialises correctly.\n        /// </summary>\n        [Fact]\n        public void Int32OrStringWithIntegerDeserializesCorrectly()\n        {\n            string json = \"{ \\\"path\\\": \\\"/healthz\\\", \\\"port\\\": 10254, \\\"scheme\\\": \\\"HTTP\\\" }\";\n            HTTPGetActionV1 httpGetAction = JsonConvert.DeserializeObject<HTTPGetActionV1>(json);\n            \n            Assert.NotNull(httpGetAction);\n            Assert.Equal(\"/healthz\", httpGetAction.Path);\n            Assert.True(httpGetAction.Port.IsInt32);\n            Assert.False(httpGetAction.Port.IsString);\n            Assert.Equal(10254, httpGetAction.Port.Int32Value);\n            Assert.Equal(\"HTTP\", httpGetAction.Scheme);\n        }\n\n        /// <summary>\n        /// Verify that an <see cref=\"Int32OrStringV1\"/> with a string value deserialises correctly.\n        /// </summary>\n        [Fact]\n        public void Int32OrStringWithStringDeserializesCorrectly()\n        {\n            string json = \"{ \\\"path\\\": \\\"/healthz\\\", \\\"port\\\": \\\"http\\\", \\\"scheme\\\": \\\"HTTP\\\" }\";\n            HTTPGetActionV1 httpGetAction = JsonConvert.DeserializeObject<HTTPGetActionV1>(json);\n            \n            Assert.NotNull(httpGetAction);\n            Assert.False(httpGetAction.Port.IsInt32);\n            Assert.True(httpGetAction.Port.IsString);\n            Assert.Equal(\"http\", httpGetAction.Port.StringValue);\n            Assert.Equal(\"HTTP\", httpGetAction.Scheme);\n        }\n\n        /// <summary>\n        ///     Verify that an <see cref=\"Int32OrStringV1\"/> can be correctly serialised to JSON (regardless of whether it's a number or string).\n        /// </summary>\n        [InlineData(null,       null)]\n        [InlineData(567,        567)]\n        [InlineData(\"567\",      567)]\n        [InlineData(\"567tcp\",   \"567tcp\")]\n        [InlineData(\"567 tcp\",  \"567 tcp\")]\n        [Theory(DisplayName = \"Can serialise Int32OrStringV1 to JSON \")]\n        public void Can_Serialize_Int32OrStringV1_Null(object rawValue, object renderedValue)\n        {\n            Int32OrStringV1 int32OrString;\n            if (rawValue is string stringValue)\n                int32OrString = stringValue;\n            else if (rawValue is int intValue)\n                int32OrString = intValue;\n            else if (rawValue == null)\n                int32OrString = null;\n            else\n                throw new InvalidOperationException($\"Unexpected value type: '{rawValue.GetType().FullName}'.\");\n\n            var model = new TestModel\n            {\n                Number = 123,\n                Text = \"hello\",\n                Mixed = int32OrString\n            };\n\n            JObject rootObject;\n            using (JTokenWriter writer = new JTokenWriter())\n            {\n                JsonSerializer\n                    .Create(new JsonSerializerSettings\n                    {\n                        Converters =\n                        {\n                            new Int32OrStringV1Converter()\n                        }\n                    })\n                    .Serialize(writer, model);\n\n                writer.Flush();\n\n                rootObject = (JObject)writer.Token;\n            }\n            \n            string propertyName = GetJsonPropertyName(typeof(TestModel), \"Mixed\");\n            var propertyValue = rootObject.Property(propertyName)?.Value as JValue;\n            Assert.NotNull(propertyValue);\n            Assert.Equal(renderedValue, propertyValue.Value);\n        }\n\n        /// <summary>\n        /// Verify that an <see cref=\"MicroTimeV1\"/> with a <c>null</c> value deserialises correctly.\n        /// </summary>\n        [Fact]\n        public void MicroTimeWithNullDeserializesCorrectly()\n        {\n            string json = \"null\";\n            MicroTimeV1? microTime = JsonConvert.DeserializeObject<MicroTimeV1?>(json);\n            \n            Assert.Null(microTime);\n        }\n\n        /// <summary>\n        /// Verify that an <see cref=\"MicroTimeV1\"/> with an integer value deserialises correctly.\n        /// </summary>\n        [Fact]\n        public void MicroTimeWithStringDeserializesCorrectly()\n        {\n            string json = \"\\\"2020-09-11T14:59:24.491964Z\\\"\";\n            MicroTimeV1 microTime = JsonConvert.DeserializeObject<MicroTimeV1>(json);\n            \n            Assert.Equal(2020, microTime.Value.Year);\n            Assert.Equal(9, microTime.Value.Month);\n            Assert.Equal(11, microTime.Value.Day);\n            Assert.Equal(14, microTime.Value.Hour);\n            Assert.Equal(59, microTime.Value.Minute);\n            Assert.Equal(24, microTime.Value.Second);\n\n            // TODO: Validate microsecond-level precision.            \n        }\n\n        /// <summary>\n        ///     Verify that a <see cref=\"ResourceEventV1{TResource}\"/> can be correctly deserialised from JSON.\n        /// </summary>\n        /// <param name=\"resourceType\">The type of <see cref=\"KubeResourceV1\"/> to be deserialised via <see cref=\"ResourceEventV1{TResource}.Resource\"/>.</param>\n        /// <param name=\"expectedEventType\">The expected event type.</param>\n        [InlineData(typeof(PodV1),  ResourceEventType.Added)]\n        [InlineData(typeof(PodV1),  ResourceEventType.Deleted)]\n        [InlineData(typeof(PodV1),  ResourceEventType.Modified)]\n        [InlineData(null,           ResourceEventType.Error)]\n        [Theory(DisplayName = \"Can deserialise ResourceEventV1 \")]\n        public void Can_Deserialize_ResourceEventV1(Type resourceType, ResourceEventType expectedEventType)\n        {\n            JsonSerializerSettings serializerSettings = KubeResourceClient.SerializerSettings;\n            serializerSettings.Formatting = Formatting.Indented;\n\n            JsonSerializer serializer = JsonSerializer.Create(serializerSettings);\n\n            ResourceEventV1<KubeResourceV1> expectedResourceEvent = new ResourceEventV1<KubeResourceV1>\n            {\n                EventType = expectedEventType,\n                Resource = resourceType != null ? (KubeResourceV1)Activator.CreateInstance(resourceType) : null\n            };\n\n            StringBuilder buffer = new StringBuilder();\n\n            using (StringWriter bufferWriter = new StringWriter(buffer))\n            using (JsonWriter jsonWriter = new JsonTextWriter(bufferWriter))\n            {\n                serializer.Serialize(jsonWriter, expectedResourceEvent);\n                jsonWriter.Flush();\n            }\n\n            Log.LogInformation(\"Serialised event JSON:\\n{EventJson:l}\", buffer.ToString());\n\n            serializerSettings.Converters.Add(\n                new ResourceEventV1Converter(typeof(KubeResourceV1).Assembly)\n            );\n            serializer = JsonSerializer.Create(serializerSettings);\n\n            ResourceEventV1<KubeResourceV1> actualResourceEvent;\n            using (StringReader bufferReader = new StringReader(buffer.ToString()))\n            using (JsonReader jsonReader = new JsonTextReader(bufferReader))\n            {\n                actualResourceEvent = serializer.Deserialize<ResourceEventV1<KubeResourceV1>>(jsonReader);\n            }\n\n            Assert.NotNull(actualResourceEvent);\n            Assert.Equal(expectedResourceEvent.EventType, actualResourceEvent.EventType);\n            \n            if (expectedResourceEvent.Resource != null)\n            {\n                Assert.NotNull(actualResourceEvent.Resource);\n                Assert.IsType(expectedResourceEvent.Resource.GetType(), actualResourceEvent.Resource);\n            }\n            else\n                Assert.Null(actualResourceEvent.Resource);\n        }\n\n        /// <summary>\n        ///     Get the JSON property name corresponding to the specified model property.\n        /// </summary>\n        /// <param name=\"modelType\">\n        ///     The model <see cref=\"Type\"/>.\n        /// </param>\n        /// <param name=\"propertyName\">\n        ///     The name of the target property.\n        /// </param>\n        /// <returns>\n        ///     The JSON property name.\n        /// </returns>\n        static string GetJsonPropertyName(Type modelType, string propertyName)\n        {\n            if (modelType == null)\n                throw new ArgumentNullException(nameof(modelType));\n            \n            if (String.IsNullOrWhiteSpace(propertyName))\n                throw new ArgumentException(\"Argument cannot be null, empty, or entirely composed of whitespace: 'propertyName'.\", nameof(propertyName));\n            \n            PropertyInfo targetProperty = modelType.GetProperty(propertyName);\n            Assert.NotNull(targetProperty);\n\n            JsonPropertyAttribute jsonPropertyAttribute = targetProperty.GetCustomAttribute<JsonPropertyAttribute>();\n            Assert.NotNull(jsonPropertyAttribute);\n\n            return jsonPropertyAttribute.PropertyName;\n        }\n\n        /// <summary>\n        ///     Model used for serialisation tests.\n        /// </summary>\n        class TestModel\n        {\n            /// <summary>\n            ///     A 32-bit integer.\n            /// </summary>\n            [JsonProperty(\"number\")]\n            public int Number { get; set; }\n            \n            /// <summary>\n            ///     Some free-form text.\n            /// </summary>\n            [JsonProperty(\"text\")]\n            public string Text { get; set; }\n\n            /// <summary>\n            ///     Either a 32-bit integer or some free-form text.\n            /// </summary>\n            [JsonProperty(\"mixed\")]\n            public Int32OrStringV1 Mixed { get; set; }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/KubeClient.Tests.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>net7.0;net8.0;net9.0;net10.0</TargetFrameworks>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <Compile Remove=\"TestResults\\**\" />\n    <EmbeddedResource Remove=\"TestResults\\**\" />\n    <None Remove=\"TestResults\\**\" />\n  </ItemGroup>\n\n  <ItemGroup>\n      <ProjectReference Include=\"../../src/KubeClient/KubeClient.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n      <ProjectReference Include=\"../KubeClient.TestCommon/KubeClient.TestCommon.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n      <PackageReference Include=\"System.Reactive\" Version=\"6.0.1\" />\n  </ItemGroup>\n\n  <Import Project=\"../Common.props\" />\n  <Import Project=\"../TestProject.Common.props\" />\n</Project>\n"
  },
  {
    "path": "test/KubeClient.Tests/KubeClientOptionsTests.cs",
    "content": "﻿using KubeClient.TestCommon;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Tests\n{\n    /// <summary>\n    ///     Tests for <see cref=\"KubeClientOptions\"/>.\n    /// </summary>\n    public class KubeClientOptionsTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeClientOptions\"/> test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     The output for the current test.\n        /// </param>\n        public KubeClientOptionsTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that <see cref=\"KubeClientOptions.LoggerFactory\"/> is never null.\n        /// </summary>\n        [Fact(DisplayName = \"LoggerFactory is never null\")]\n        public void Logger_Factory_Never_Null()\n        {\n\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/KubeObjectTests.cs",
    "content": "using System;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Tests\n{\n    using Models;\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests for the <see cref=\"KubeObjectV1\"/> base class.\n    /// </summary>\n    public class KubeObjectTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeObjectV1\"/> test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public KubeObjectTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that KubeObjectV1 correctly populates Kind and ApiVersion when constructed.\n        /// </summary>\n        [InlineData(typeof(DeleteOptionsV1), \"DeleteOptions\", \"v1\")]\n        [InlineData(typeof(DeploymentV1Beta1), \"Deployment\", \"apps/v1beta1\")]\n        [Theory(DisplayName = \"KubeObjectV1 correctly populates Kind and ApiVersion \")]\n        public void KubeObjectV1_Kind_Success(Type kubeObjectType, string expectedKind, string expectedApiVersion)\n        {\n            KubeObjectV1 kubeObject = (KubeObjectV1)Activator.CreateInstance(kubeObjectType);\n            Assert.Equal(expectedKind, kubeObject.Kind);\n            Assert.Equal(expectedApiVersion, kubeObject.ApiVersion);\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/KubeResultTests.cs",
    "content": "using System;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Tests\n{\n    using Models;\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests for <see cref=\"KubeResultV1\"/> implementations.\n    /// </summary>\n    public class KubeResultTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeResultTests\"/> test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public KubeResultTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that a PodV1 resource result, when constructed from a PodV1, can be implicitly cast to a PodV1.\n        /// </summary>\n        [Fact(DisplayName = \"PodV1 resource result from PodV1 can be cast to PodV1\")]\n        public void PodV1Result_From_PodV1_ImplicitCast_Resource()\n        {\n            PodV1 expected = new PodV1\n            {\n                Metadata = new ObjectMetaV1\n                {\n                    Name = \"my-pod\",\n                    Namespace = \"my-namespace\"\n                }\n            };\n            \n            var result = new KubeResourceResultV1<PodV1>(expected);\n            \n            PodV1 actual = result;\n            Assert.NotNull(actual);\n            Assert.Same(expected, actual);\n        }\n\n        /// <summary>\n        ///     Verify that a PodV1 resource result, when constructed from a failing StatusV1 throws a KubeApiException when implicitly cast to a PodV1.\n        /// </summary>\n        [Fact(DisplayName = \"PodV1 resource result from failing StatusV1 throws when cast to PodV1\")]\n        public void PodV1Result_From_FailureStatus_ImplicitCast_Resource()\n        {\n            PodV1 pod = null;\n\n            KubeApiException exception = Assert.Throws<KubeApiException>(() =>\n            {\n                pod = new KubeResourceResultV1<PodV1>(new StatusV1\n                {\n                    Status = \"Failure\",\n                    Message = \"Most definitely not a success.\"\n                });\n            });\n            Assert.Null(pod);\n            Assert.True(exception.HasStatus);\n            Assert.Equal(\"Failure\", exception.Status.Status);\n            Assert.Equal(\"Most definitely not a success.\", exception.Status.Message);\n        }\n\n        /// <summary>\n        ///     Verify that a PodV1 resource result, when constructed from a successful StatusV1, can be implicitly cast to a StatusV1.\n        /// </summary>\n        [Fact(DisplayName = \"PodV1 resource result from successful StatusV1 can be cast to PodV1\")]\n        public void PodV1Result_From_SuccessStatus_ImplicitCast_Resource()\n        {\n            var result = new KubeResourceResultV1<PodV1>(new StatusV1\n            {\n                Status = \"Success\",\n                Message = \"Most definitely a success.\"\n            });\n\n            PodV1 pod = result;\n            Assert.Null(pod);\n        }\n\n        /// <summary>\n        ///     Verify that a PodV1 resource result, when constructed from a failing StatusV1, can be implicitly cast to a <see cref=\"StatusV1\"/>.\n        /// </summary>\n        [Fact(DisplayName = \"PodV1 resource result from failing StatusV1 can be cast to StatusV1\")]\n        public void PodV1Result_From_FailureStatus_ImplicitCast_Status()\n        {\n            var result = new KubeResourceResultV1<PodV1>(new StatusV1\n            {\n                Status = \"Failure\",\n                Message = \"Most definitely not a success.\"\n            });\n\n            StatusV1 status = result;\n            Assert.NotNull(status);\n            Assert.Equal(\"Failure\", status.Status);\n            Assert.Equal(\"Most definitely not a success.\", status.Message);\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/Logging/LogEntry.cs",
    "content": "using System;\nusing System.Collections.Immutable;\nusing Microsoft.Extensions.Logging;\n\nnamespace KubeClient.Tests.Logging\n{\n    /// <summary>\n    ///\t\tRepresents a log entry captured and republished by a <see cref=\"TestLogger\"/>.\n    /// </summary>\n    public class LogEntry\n\t{\n\t\t/// <summary>\n\t\t///\t\tCreate a new <see cref=\"LogEntry\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"level\">\n\t\t///\t\tThe log entry's level (severity).\n\t\t/// </param>\n\t\t/// <param name=\"eventId\">\n\t\t///\t\tThe log entry's event Id.\n\t\t/// </param>\n\t\t/// <param name=\"message\">\n\t\t///\t\tThe log message.\n\t\t/// </param>\n\t\t/// <param name=\"exception\">\n\t\t///\t\tThe log entry's associated exception (if any).\n\t\t/// </param>\n\t\t/// <param name=\"state\">\n\t\t///\t\tState data associated with the log entry.\n\t\t/// </param>\n\t\t/// <param name=\"properties\">\n\t\t///\t\tProperties (if any) associated with the log entry.\n\t\t/// </param>\n\t\tpublic LogEntry(LogLevel level, EventId eventId, string message, Exception exception, object state, ImmutableDictionary<string, object> properties)\n\t\t{\n\t\t\tif (message == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(message));\n\n\t\t\tif (properties == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(properties));\n\n\t\t\tLevel = level;\n\t\t\tEventId = eventId;\n\t\t\tMessage = message;\n\t\t\tException = exception;\n\t\t\tState = state;\n\t\t\tProperties = properties;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tThe log entry's level (severity).\n\t\t/// </summary>\n\t\tpublic LogLevel Level { get; }\n\n\t\t/// <summary>\n\t\t///\t\tThe log entry's event Id.\n\t\t/// </summary>\n\t\tpublic EventId EventId { get; }\n\n\t\t/// <summary>\n\t\t///\t\tThe log message.\n\t\t/// </summary>\n\t\tpublic string Message { get; }\n\n\t\t/// <summary>\n\t\t///\t\tThe log entry's associated exception (if any).\n\t\t/// </summary>\n\t\tpublic Exception Exception { get; }\n\n\t\t/// <summary>\n\t\t///\t\tState data associated with the log entry.\n\t\t/// </summary>\n\t\tpublic object State { get; }\n\n\t\t/// <summary>\n\t\t///\t\tProperties associated with the log entry (if any).\n\t\t/// </summary>\n\t\tpublic ImmutableDictionary<string, object> Properties { get; }\n\t}\n}"
  },
  {
    "path": "test/KubeClient.Tests/Logging/TestLogger.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Net.Http;\nusing System.Reactive.Disposables;\nusing System.Reactive.Subjects;\nusing Microsoft.Extensions.Logging;\n\nnamespace KubeClient.Tests.Logging\n{\n    /// <summary>\n    /// \tA stub implementation of <see cref=\"ILogger\"/> for use in tests.\n    /// </summary>\n    public sealed class TestLogger\n\t\t: ILogger, IDisposable\n\t{\n        /// <summary>\n        ///     The subject used to publish log entries.\n        /// </summary>\n\t\treadonly Subject<LogEntry> _logEntries = new Subject<LogEntry>();\n\n\t\t/// <summary>\n\t\t/// \tCreate a new <see cref=\"TestLogger\"/>.\n\t\t/// </summary>\n\t\t/// <param name=\"minLogLevel\">\n\t\t/// \tThe logger's minimum log level.\n\t\t/// </param>\n\t\tpublic TestLogger(LogLevel minLogLevel)\n\t\t{\n\t\t\tMinLogLevel = minLogLevel;\n\t\t}\n\n\t\t/// <summary>\n\t\t///\t\tDispose of resources being used by the <see cref=\"TestLogger\"/>.\n\t\t/// </summary>\n\t\tpublic void Dispose() => _logEntries.Dispose();\n\n\t\t/// <summary>\n\t\t/// \tThe logger's minimum log level.\n\t\t/// </summary>\n\t\tpublic LogLevel MinLogLevel { get; }\n\n\t\t/// <summary>\n\t\t///\t\tAn observable sequence of log entries emitted by the <see cref=\"TestLogger\"/>.\n\t\t/// </summary>\n\t\tpublic IObservable<LogEntry> LogEntries => _logEntries;\n\n\t\t/// <summary>\n        /// \tEmit a log entry.\n        /// </summary>\n        /// <param name=\"level\">\n\t\t/// \tThe log entry's level.\n\t\t/// </param>\n        /// <param name=\"eventId\">\n\t\t/// \tThe log entry's associated event Id.\n\t\t/// </param>\n        /// <param name=\"state\">\n\t\t/// \tThe log entry to be written. Can be also an object.\n\t\t/// </param>\n        /// <param name=\"exception\">\n\t\t/// \tThe exception (if any) related to the log entry.\n\t\t/// </param>\n        /// <param name=\"formatter\">\n\t\t/// \tA function that creates a <c>string</c> log message from the <paramref name=\"state\"/> and <paramref name=\"exception\"/>.\n\t\t/// </param>\n        public void Log<TState>(LogLevel level, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)\n\t\t{\n\t\t\tif (formatter == null)\n\t\t\t\tthrow new ArgumentNullException(nameof(formatter));\n\n            \n\t\t\tImmutableDictionary<string, object> properties =\n\t\t\t\t(state is IEnumerable<KeyValuePair<string, object>> formattedLogValues)\n\t\t\t\t\t? ImmutableDictionary.CreateRange(formattedLogValues)\n\t\t\t\t\t: ImmutableDictionary<string, object>.Empty;\n\n\t\t\t_logEntries.OnNext(new LogEntry(\n\t\t\t\tlevel,\n\t\t\t\teventId,\n\t\t\t\tformatter(state, exception),\n\t\t\t\texception,\n\t\t\t\tstate,\n\t\t\t\tproperties\n\t\t\t));\n\t\t}\n\n        /// <summary>\n        /// \tCheck if the given <paramref name=\"logLevel\"/> is enabled.\n        /// </summary>\n        /// <param name=\"logLevel\">\n\t\t/// \tThe level to be checked.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \t<c>true</c> if enabled; otherwise, <c>false</c>.\n\t\t/// </returns>\n        public bool IsEnabled(LogLevel logLevel) => logLevel >= MinLogLevel;\n\n        /// <summary>\n        /// \tBegin a logical operation scope.\n        /// </summary>\n        /// <param name=\"state\">\n\t\t/// \tAn identifier for the scope.\n\t\t/// </param>\n        /// <returns>\n\t\t/// \tAn <see cref=\"IDisposable\"/> that ends the logical operation scope when disposed.\n\t\t/// </returns>\n\t\tpublic IDisposable BeginScope<TState>(TState state) => Disposable.Empty;\n    }\n}"
  },
  {
    "path": "test/KubeClient.Tests/LoggingTests.cs",
    "content": "using Microsoft.Extensions.Logging;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\n\nnamespace KubeClient.Tests\n{\n    using KubeClient.Http;\n    using KubeClient.Http.Clients;\n    using KubeClient.Http.Diagnostics;\n    using KubeClient.Http.Formatters;\n    using KubeClient.Http.Testability;\n    using KubeClient.Http.Testability.Xunit;\n    using Logging;\n    using Models;\n    using Utilities;\n\n    /// <summary>\n    ///     Tests for <see cref=\"KubeApiClient\"/> logging.\n    /// </summary>\n    public class LoggingTests\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"KubeApiClient\"/> logging test suite.\n        /// </summary>\n        public LoggingTests()\n        {\n        }\n\n        /// <summary>\n        ///     Verify that the client's logger emits BeginRequest / EndRequest log entries for PodV1 get-by-name.\n        /// </summary>\n        [Fact(DisplayName = \"Emit BeginRequest / EndRequest log entries for PodV1 get-by-name (NotFound)\")]\n        public async Task PodsV1_GetByName_NotFound()\n        {\n            var logEntries = new List<LogEntry>();\n\n\t\t\tTestLogger logger = new TestLogger(LogLevel.Information);\n\t\t\tlogger.LogEntries.Subscribe(\n\t\t\t\tlogEntry => logEntries.Add(logEntry)\n\t\t\t);\n\n\t\t\tClientBuilder clientBuilder = new ClientBuilder()\n\t\t\t\t.WithLogging(logger);\n\n\t\t\tHttpClient httpClient = clientBuilder.CreateClient(\"http://localhost:1234\", TestHandlers.RespondWith(request =>\n            {\n                return request.CreateResponse(HttpStatusCode.NotFound,\n                    responseBody: JsonConvert.SerializeObject(new StatusV1\n                    {\n                        Status = \"Failure\",\n                        Reason = \"NotFound\"\n                    }),\n                    WellKnownMediaTypes.Json\n                );\n            }));\n\n            KubeClientOptions clientOptions = new KubeClientOptions(\"http://localhost:1234\");\n            using (KubeApiClient kubeClient = KubeApiClient.CreateTestClient(httpClient, clientOptions))\n            {\n                PodV1 pod = await kubeClient.PodsV1().Get(name: \"foo\");\n                Assert.Null(pod);\n            }\n\n            Assert.Equal(2, logEntries.Count);\n\n\t\t\tLogEntry logEntry1 = logEntries[0];\n\t\t\tAssert.Equal(LogEventIds.BeginRequest, logEntry1.EventId);\n\t\t\tAssert.Equal(\"Performing GET request to 'http://localhost:1234/api/v1/namespaces/default/pods/foo'.\",\n\t\t\t\tlogEntry1.Message\n\t\t\t);\n\t\t\tAssert.Equal(\"GET\",\n\t\t\t\tlogEntry1.Properties[\"Method\"]\n\t\t\t);\n\t\t\tAssert.Equal(new Uri(\"http://localhost:1234/api/v1/namespaces/default/pods/foo\"),\n\t\t\t\tlogEntry1.Properties[\"RequestUri\"]\n\t\t\t);\n\n\t\t\tLogEntry logEntry2 = logEntries[1];\n\t\t\tAssert.Equal(LogEventIds.EndRequest, logEntry2.EventId);\n\t\t\tAssert.Equal(\"Completed GET request to 'http://localhost:1234/api/v1/namespaces/default/pods/foo' (NotFound).\",\n\t\t\t\tlogEntry2.Message\n\t\t\t);\n\t\t\tAssert.Equal(\"GET\",\n\t\t\t\tlogEntry2.Properties[\"Method\"]\n\t\t\t);\n\t\t\tAssert.Equal(new Uri(\"http://localhost:1234/api/v1/namespaces/default/pods/foo\"),\n\t\t\t\tlogEntry2.Properties[\"RequestUri\"]\n\t\t\t);\n\t\t\tAssert.Equal(HttpStatusCode.NotFound,\n\t\t\t\tlogEntry2.Properties[\"StatusCode\"]\n\t\t\t);\n        }\n\n        /// <summary>\n        ///     Verify that the client's logger emits BeginRequest / EndRequest log entries for PodV1 get-by-name.\n        /// </summary>\n        [Fact(DisplayName = \"Emit BeginRequest / EndRequest log entries for PodV1 get-by-name (OK)\")]\n        public async Task PodsV1_GetByName_OK()\n        {\n            var logEntries = new List<LogEntry>();\n\n\t\t\tTestLogger logger = new TestLogger(LogLevel.Information);\n\t\t\tlogger.LogEntries.Subscribe(\n\t\t\t\tlogEntry => logEntries.Add(logEntry)\n\t\t\t);\n\n\t\t\tClientBuilder clientBuilder = new ClientBuilder()\n\t\t\t\t.WithLogging(logger);\n\n            HttpClient httpClient = clientBuilder.CreateClient(\"http://localhost:1234\", TestHandlers.RespondWith(request =>\n            {\n                return request.CreateResponse(HttpStatusCode.OK,\n                    responseBody: JsonConvert.SerializeObject(new PodV1\n                    {\n                        Metadata = new ObjectMetaV1\n                        {\n                            Name = \"foo\",\n                            Namespace = \"default\"\n                        }\n                    }),\n                    WellKnownMediaTypes.Json\n                );\n            }));\n\n            KubeClientOptions clientOptions = new KubeClientOptions(\"http://localhost:1234\");\n            using (KubeApiClient kubeClient = KubeApiClient.CreateTestClient(httpClient, clientOptions))\n            {\n                PodV1 pod = await kubeClient.PodsV1().Get(name: \"foo\");\n                Assert.NotNull(pod);\n                Assert.NotNull(pod.Metadata);\n                Assert.Equal(\"foo\", pod.Metadata.Name);\n                Assert.Equal(\"default\", pod.Metadata.Namespace);\n            }\n\n            Assert.Equal(2, logEntries.Count);\n\n\t\t\tLogEntry logEntry1 = logEntries[0];\n            Assert.Equal(LogLevel.Debug, logEntry1.Level);\n\t\t\tAssert.Equal(LogEventIds.BeginRequest, logEntry1.EventId);\n\t\t\tAssert.Equal(\"Performing GET request to 'http://localhost:1234/api/v1/namespaces/default/pods/foo'.\",\n\t\t\t\tlogEntry1.Message\n\t\t\t);\n\t\t\tAssert.Equal(\"GET\",\n\t\t\t\tlogEntry1.Properties[\"Method\"]\n\t\t\t);\n\t\t\tAssert.Equal(new Uri(\"http://localhost:1234/api/v1/namespaces/default/pods/foo\"),\n\t\t\t\tlogEntry1.Properties[\"RequestUri\"]\n\t\t\t);\n\n\t\t\tLogEntry logEntry2 = logEntries[1];\n            Assert.Equal(LogLevel.Debug, logEntry2.Level);\n\t\t\tAssert.Equal(LogEventIds.EndRequest, logEntry2.EventId);\n\t\t\tAssert.Equal(\"Completed GET request to 'http://localhost:1234/api/v1/namespaces/default/pods/foo' (OK).\",\n\t\t\t\tlogEntry2.Message\n\t\t\t);\n\t\t\tAssert.Equal(\"GET\",\n\t\t\t\tlogEntry2.Properties[\"Method\"]\n\t\t\t);\n\t\t\tAssert.Equal(new Uri(\"http://localhost:1234/api/v1/namespaces/default/pods/foo\"),\n\t\t\t\tlogEntry2.Properties[\"RequestUri\"]\n\t\t\t);\n\t\t\tAssert.Equal(HttpStatusCode.OK,\n\t\t\t\tlogEntry2.Properties[\"StatusCode\"]\n\t\t\t);\n        }\n\n        /// <summary>\n        ///     Verify that the client's logger emits the correct log entry from a custom request action.\n        /// </summary>\n        [Fact(DisplayName = \"Emit log entry from custom request action\")]\n        public async Task Custom_Request_Action()\n        {\n            var logEntries = new List<LogEntry>();\n\n            TestLogger logger = new TestLogger(LogLevel.Information);\n            logger.LogEntries.Subscribe(\n                logEntry => logEntries.Add(logEntry)\n            );\n\n            ClientBuilder clientBuilder = new ClientBuilder()\n                .WithLogging(logger);\n\n            HttpClient httpClient = clientBuilder.CreateClient(\"http://localhost:1234/api\", TestHandlers.RespondWith(request =>\n            {\n                return request.CreateResponse(HttpStatusCode.OK,\n                    responseBody: JsonConvert.SerializeObject(new StatusV1\n                    {\n                        Status = \"Success\",\n                    }),\n                    WellKnownMediaTypes.Json\n                );\n            }));\n\n            HttpRequest request = HttpRequest.Create(\"{Foo}/{Bar}?Baz={Baz}\")\n                .WithRequestAction((HttpRequestMessage requestMessage) =>\n                {\n                    logger.LogDebug(\"Start streaming {RequestMethod} request for {RequestUri}...\", HttpMethod.Get, requestMessage.RequestUri.SafeGetPathAndQuery());\n                }).WithTemplateParameters(new\n                {\n                    Foo = \"foo\",\n                    Bar = \"bAr\",\n                    Baz = \"b4z\",\n                });\n\n            using (HttpResponseMessage response = await httpClient.GetAsync(request))\n            {\n                // [0] = Custom message, [1] = Begin request, [2] End request\n                Assert.Equal(3, logEntries.Count);\n\n                Assert.Equal(\"Start streaming GET request for /api/foo/bAr?Baz=b4z...\", logEntries[0].Message);\n                \n                response.EnsureSuccessStatusCode();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/ModelMetadataTests.cs",
    "content": "using System;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Tests\n{\n    using Models;\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests for the <see cref=\"ModelMetadata\"/> base class.\n    /// </summary>\n    public class ModelMetadataTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new <see cref=\"ModelMetadata\"/> test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public ModelMetadataTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that the typed ModelMetadata API correctly indicates that ComponentStatusV1.Conditions is a merge property.\n        /// </summary>\n        [Fact(DisplayName = \"ComponentStatusV1.Conditions is a Merge property (typed)\")]\n        public void IsMergeProperty_ComponentStatusV1_Conditions_Typed()\n        {\n            bool isMergeProperty = ModelMetadata.StrategicPatch.For<ComponentStatusV1>.IsMergeStrategy(status => status.Conditions);\n            Assert.True(isMergeProperty);\n        }\n\n        /// <summary>\n        ///     Verify that the untyped ModelMetadata API correctly indicates that ComponentStatusV1.Conditions is a merge property.\n        /// </summary>\n        [Fact(DisplayName = \"ComponentStatusV1.Conditions is a Merge property (untyped)\")]\n        public void IsMergeProperty_ComponentStatusV1_Conditions_Untyped()\n        {\n            bool isMergeProperty = ModelMetadata.StrategicPatch.IsMergeStrategy(\n                typeof(ComponentStatusV1).GetProperty(\"Conditions\")\n            );\n            Assert.True(isMergeProperty);\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/ServerSideApplyTests.cs",
    "content": "﻿using Microsoft.Extensions.Logging;\nusing Newtonsoft.Json;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Xunit;\nusing Xunit.Abstractions;\n\nnamespace KubeClient.Tests\n{\n    using ErrorHandling;\n    using KubeClient.Http.Testability;\n    using Models;\n    using ResourceClients;\n    using TestCommon;\n\n    /// <summary>\n    ///     Integration tests for server-side apply (via <see cref=\"IDynamicResourceClient\"/>).\n    /// </summary>\n    public class ServerSideApplyTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new server-side-apply test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public ServerSideApplyTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        /// Verify that server-side apply of a model results in a PATCH request with the correct content type.\n        /// </summary>\n        [Fact(DisplayName = \"Server-side apply of model\")]\n        public async Task ApplyModel()\n        {\n            MockMessageHandler handler = new MockMessageHandler(async (HttpRequestMessage request) =>\n            {\n                Assert.Equal(\"PATCH\", request.Method.Method);\n\n                Assert.NotNull(request.Content);\n\n                string requestBody = await request.Content.ReadAsStringAsync();\n                Log.LogInformation(\"Request body:\\n{RequestBody:l}\", requestBody);\n\n                Assert.NotNull(request.Content.Headers.ContentType);\n                Assert.Equal(\"application/apply-patch+yaml\", request.Content.Headers.ContentType.MediaType);\n\n                Assert.Contains(\"fieldManager=my-field-manager\", request.RequestUri.Query);\n\n                return request.CreateResponse(HttpStatusCode.OK,\n                    responseBody: JsonConvert.SerializeObject(new PodV1\n                    {\n                        Metadata = new ObjectMetaV1\n                        {\n                            Name = \"my-pod\",\n                            Namespace = \"my-namespace\",\n                            Finalizers = // Array test\n                            {\n                                \"foo\",\n                                \"bar\"\n                            }\n                        }\n                    }),\n                    mediaType: \"application/json\"\n                );\n            });\n\n            using (KubeApiClient client = handler.CreateClient(loggerFactory: LoggerFactory))\n            {\n                PodV1 resource = new PodV1\n                {\n                    Metadata = new ObjectMetaV1\n                    {\n                        Name = \"my-pod\",\n                        Namespace = \"my-namespace\",\n                        Finalizers = // Array test\n                        {\n                            \"foo\",\n                            \"bar\"\n                        }\n                    }\n                };\n\n                await client.Dynamic().Apply(resource,\n                    fieldManager: \"my-field-manager\"\n                );\n            }\n        }\n\n        /// <summary>\n        /// Verify that server-side apply of raw YAML results in a PATCH request with the correct content type.\n        /// </summary>\n        [Fact( DisplayName = \"Server-side apply of raw YAML\" )]\n        public async Task ApplyYaml()\n        {\n            MockMessageHandler handler = new MockMessageHandler(request =>\n            {\n                Assert.Equal(\"PATCH\", request.Method.Method);\n\n                Assert.NotNull(request.Content);\n                Assert.NotNull(request.Content.Headers.ContentType);\n                Assert.Equal(\"application/apply-patch+yaml\", request.Content.Headers.ContentType.MediaType);\n\n                Assert.Contains(\"fieldManager=my-field-manager\", request.RequestUri.Query);\n\n                return request.CreateResponse(HttpStatusCode.OK,\n                    responseBody: JsonConvert.SerializeObject(new PodV1\n                    {\n                        Metadata = new ObjectMetaV1\n                        {\n                            Name = \"my-pod\",\n                            Namespace = \"my-namespace\"\n                        }\n                    }),\n                    mediaType: \"application/json\"\n                );\n            });\n\n            const string podYaml = @\"\nkind: Pod\napiVersion: v1\nmetadata:\n    name: my-pod\n            \";\n\n            using (KubeApiClient client = handler.CreateClient(loggerFactory: LoggerFactory))\n            {\n                await client.Dynamic().ApplyYaml(\n                    name: \"my-pod\",\n                    kind: \"Pod\",\n                    apiVersion: \"v1\",\n                    yaml: podYaml,\n                    fieldManager: \"my-field-manager\",\n                    kubeNamespace: \"my-namespace\"\n                );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/UriHelperTests.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace KubeClient.Tests\n{\n    using Utilities;\n    using Xunit;\n\n    /// <summary>\n    ///     Tests for <see cref=\"UriHelper\"/>.\n    /// </summary>\n    public class UriHelperTests\n    {\n        static readonly Uri BaseUri = new Uri(\"https://localhost\");\n\n        [Theory]\n        [InlineData(\"/\")]\n        [InlineData(\"/?param1=value1&param2=value2\")]\n        [InlineData(\"path1\")]\n        [InlineData(\"path1?param1=value1&param2=value2\")]\n        [InlineData(\"path1/path2\")]\n        [InlineData(\"path1/path2?param1=value1&param2=value2\")]\n        [InlineData(\"path1/path2/\")]\n        [InlineData(\"path1/path2/?param1=value1&param2=value2\")]\n        [InlineData(\"/path1\")]\n        [InlineData(\"/path1?param1=value1&param2=value2\")]\n        [InlineData(\"/path1/path2\")]\n        [InlineData(\"/path1/path2?param1=value1&param2=value2\")]\n        [InlineData(\"/path1/path2/\")]\n        [InlineData(\"/path1/path2/?param1=value1&param2=value2\")]\n        public void Can_SafeGetPathAndQuery_RelativeUri(string input)\n        {\n            Uri uri = new Uri(input, UriKind.RelativeOrAbsolute);\n            Assert.False(uri.IsAbsoluteUri);\n\n            string pathAndQuery = uri.SafeGetPathAndQuery();\n            Assert.Equal(pathAndQuery,\n                NormalizePath(input)\n            );\n        }\n\n        [Theory]\n        [InlineData(\"/\")]\n        [InlineData(\"/?param1=value1&param2=value2\")]\n        [InlineData(\"path1\")]\n        [InlineData(\"path1?param1=value1&param2=value2\")]\n        [InlineData(\"path1/path2\")]\n        [InlineData(\"path1/path2?param1=value1&param2=value2\")]\n        [InlineData(\"path1/path2/\")]\n        [InlineData(\"path1/path2/?param1=value1&param2=value2\")]\n        [InlineData(\"/path1\")]\n        [InlineData(\"/path1?param1=value1&param2=value2\")]\n        [InlineData(\"/path1/path2\")]\n        [InlineData(\"/path1/path2?param1=value1&param2=value2\")]\n        [InlineData(\"/path1/path2/\")]\n        [InlineData(\"/path1/path2/?param1=value1&param2=value2\")]\n        public void Can_SafeGetPathAndQuery_AbsoluteUri(string input)\n        {\n            Uri relativeUri = new Uri(input, UriKind.RelativeOrAbsolute);\n            Assert.False(relativeUri.IsAbsoluteUri);\n\n            Uri uri = new Uri(BaseUri, relativeUri);\n\n            string pathAndQuery = uri.SafeGetPathAndQuery();\n            Assert.Equal(pathAndQuery,\n                NormalizePath(input)\n            );\n        }\n\n        /// <summary>\n        ///     Normalise the specified path and query for comparisons in tests.\n        /// </summary>\n        /// <param name=\"pathAndQuery\">\n        ///     The URI path and query components.\n        /// </param>\n        /// <returns>\n        ///     The normalised path and query.\n        /// </returns>\n        /// <remarks>\n        ///     System.Uri treats the path component of an absolute URI as an absolute path.\n        /// </remarks>\n        static string NormalizePath(string pathAndQuery)\n        {\n            if (pathAndQuery == null)\n                throw new ArgumentNullException(nameof(pathAndQuery));\n\n            if (pathAndQuery.StartsWith(\"/\"))\n                return pathAndQuery;\n\n            return $\"/{pathAndQuery}\";\n        }\n    }\n}\n"
  },
  {
    "path": "test/KubeClient.Tests/YamlSerializationTests.cs",
    "content": "using System;\nusing System.IO;\nusing Xunit;\nusing Xunit.Abstractions;\nusing YamlDotNet.Serialization;\n\nnamespace KubeClient.Tests\n{\n    using Models;\n    using TestCommon;\n\n    /// <summary>\n    ///     Tests for YAML serialisation of various Kubernetes models.\n    /// </summary>\n    public class YamlSerializationTests\n        : TestBase\n    {\n        /// <summary>\n        ///     Create a new Kubernetes model serialisation test suite.\n        /// </summary>\n        /// <param name=\"testOutput\">\n        ///     Output for the current test.\n        /// </param>\n        public YamlSerializationTests(ITestOutputHelper testOutput)\n            : base(testOutput)\n        {\n        }\n\n        /// <summary>\n        ///     Verify that an <see cref=\"Int32OrStringV1\"/> can be correctly serialised to YAML (regardless of whether it's a number or string).\n        /// </summary>\n        [InlineData(null, null)]\n        [InlineData(567, \"567\")]\n        [InlineData(\"567\", \"567\")]\n        [InlineData(\"567tcp\", \"567tcp\")]\n        [InlineData(\"567 tcp\", \"567 tcp\")]\n        [Theory(DisplayName = \"Can serialise Int32OrStringV1 to YAML\")]\n        public void Can_Serialize_Int32OrStringV1(object rawValue, string renderedValue)\n        {\n            ISerializer serializer = CreateSerializer();\n\n            Int32OrStringV1 int32OrString;\n            if (rawValue is string stringValue)\n                int32OrString = stringValue;\n            else if (rawValue is int intValue)\n                int32OrString = intValue;\n            else if (rawValue == null)\n                int32OrString = null;\n            else\n                throw new InvalidOperationException($\"Unexpected value type: '{rawValue.GetType().FullName}'.\");\n\n            var model = new TestModel\n            {\n                Number = 123,\n                Text = \"hello\",\n                Mixed = int32OrString\n            };\n\n            string expected = \"number: 123\\ntext: hello\\n\";\n            if (renderedValue != null)\n                expected += $\"mixed: {renderedValue}\\n\";\n\n            expected = NormalizeLineEndings(expected);\n\n            string actual = serializer.Serialize(model);\n            Assert.Equal(expected, actual);\n        }\n\n        /// <summary>\n        ///     Verify that an <see cref=\"Int32OrStringV1\"/> can be correctly deserialised from YAML (regardless of whether it's a number or string).\n        /// </summary>\n        [InlineData(\"\", null)]\n        [InlineData(\"mixed: 567\", 567)]\n        [Theory(DisplayName = \"Can deserialise Int32OrStringV1 from YAML\")]\n        public void Can_Deserialize_Int32OrStringV1(string yaml, object expectedValue)\n        {\n            Int32OrStringV1 expectedMixed;\n\n            switch (expectedValue)\n            {\n                case int intValue:\n                {\n                    expectedMixed = intValue;\n\n                    break;\n                }\n                case string stringValue:\n                {\n                    expectedMixed = stringValue;\n\n                    break;\n                }\n                case null:\n                {\n                    expectedMixed = null;\n\n                    break;\n                }\n                default:\n                {\n                    throw new NotSupportedException( $\"Expected value is of unsupported type '{expectedValue.GetType().FullName}'.\" );\n                }\n            }\n\n            // Other properties\n            const int expectedNumber = 123;\n            const string expectedText = \"hello\";\n            yaml = $\"number: {expectedNumber}\\ntext: {expectedText}\\n{yaml}\\n\";\n\n            // Cross-platform compatibility ;-)\n            yaml = NormalizeLineEndings(yaml);\n\n            IDeserializer deserializer = CreateDeserializer();\n\n            TestModel model;\n\n            using (TextReader yamlReader = new StringReader(yaml))\n            {\n                model = deserializer.Deserialize<TestModel>(yamlReader);\n            }\n\n            Assert.NotNull(model);\n\n            Assert.Equal(expectedNumber, model.Number);\n            Assert.Equal(expectedText, model.Text);\n            Assert.Equal(expectedMixed, model.Mixed);\n        }\n\n        /// <summary>\n        ///     Normalise line-endings to match the local environment.\n        /// </summary>\n        /// <param name=\"text\">The text to normalise.</param>\n        /// <returns>The text with line-endings updated to match <see cref=\"Environment.NewLine\"/>.</returns>\n        static string NormalizeLineEndings(string text)\n        {\n            if (text == null)\n                throw new ArgumentNullException(nameof(text));\n            \n            return text.Replace(\"\\n\", Environment.NewLine);\n        }\n\n        /// <summary>\n        ///     Create a YAML <see cref=\"Serializer\"/> for use in tests.\n        /// </summary>\n        /// <returns>\n        ///     The configured <see cref=\"ISerializer\"/>.\n        /// </returns>\n        static ISerializer CreateSerializer() => new SerializerBuilder()\n            .ConfigureDefaultValuesHandling(DefaultValuesHandling.OmitNull)\n            .Build();\n\n        /// <summary>\n        ///     Create a YAML <see cref=\"Deserializer\"/> for use in tests.\n        /// </summary>\n        /// <returns>\n        ///     The configured <see cref=\"IDeserializer\"/>.\n        /// </returns>\n        static IDeserializer CreateDeserializer() => new DeserializerBuilder().Build();\n\n        /// <summary>\n        ///     Model used for serialisation tests.\n        /// </summary>\n        class TestModel\n        {\n            /// <summary>\n            ///     A 32-bit integer.\n            /// </summary>\n            [YamlMember(Alias = \"number\")]\n            public int Number { get; set; }\n\n            /// <summary>\n            ///     Some free-form text.\n            /// </summary>\n            [YamlMember(Alias = \"text\")]\n            public string Text { get; set; }\n\n            /// <summary>\n            ///     Either a 32-bit integer or some free-form text.\n            /// </summary>\n            [YamlMember(Alias = \"mixed\")]\n            public Int32OrStringV1 Mixed { get; set; }\n        }\n    }\n}\n"
  },
  {
    "path": "test/TestProject.Common.props",
    "content": "<Project>\n  <!-- Common settings and package references for test projects -->\n  <PropertyGroup>\n    <IsPackable>false</IsPackable>\n    <IsTestProject>true</IsTestProject>\n  </PropertyGroup>\n\n  <!-- Common package references for test projects -->\n\n  <!-- Test SDK (net7.0) -->\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net7.0'\">\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"17.12.0\" />\n\n    <PackageReference Include=\"coverlet.collector\" Version=\"6.0.2 \">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n\n    <PackageReference Include=\"xunit\" Version=\"2.9.3\" />\n    <PackageReference Include=\"xunit.runner.visualstudio\" Version=\"2.8.2\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n  </ItemGroup>\n\n  <!-- Test SDK (net8.0) -->\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net8.0'\">\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"17.12.0\" />\n\n    <PackageReference Include=\"coverlet.collector\" Version=\"6.0.2\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n\n    <PackageReference Include=\"xunit\" Version=\"2.9.3\" />\n    <PackageReference Include=\"xunit.runner.visualstudio\" Version=\"2.8.2\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n  </ItemGroup>\n\n  <!-- Test SDK (net9.0) -->\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net9.0'\">\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"17.12.0\" />\n\n    <PackageReference Include=\"coverlet.collector\" Version=\"6.0.2\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n\n    <PackageReference Include=\"xunit\" Version=\"2.9.3\" />\n    <PackageReference Include=\"xunit.runner.visualstudio\" Version=\"2.8.2\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n  </ItemGroup>\n\n  <!-- Test SDK (net10.0) -->\n  <ItemGroup Condition=\"'$(TargetFramework)' == 'net10.0'\">\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"18.0.1\" />\n\n    <PackageReference Include=\"coverlet.collector\" Version=\"6.0.4\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n\n    <PackageReference Include=\"xunit\" Version=\"2.9.3\" />\n    <PackageReference Include=\"xunit.runner.visualstudio\" Version=\"3.1.5\">\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n      <PrivateAssets>all</PrivateAssets>\n    </PackageReference>\n  </ItemGroup>\n</Project>\n"
  }
]